"
This code was auto-generated by Amua (https://github.com/zward/Amua)
Code generated: Wed Mar 11 14:09:06 CDT 2020
Model name: DraculaParty
Model type: Decision Tree
Simulation type: Cohort
Created by: szu-yukao
Created: Wed Mar 11 11:22:40 CDT 2020
Version created: 0.2.8
Modified by: szu-yukao
Modified: Wed Mar 11 14:08:23 CDT 2020
Version modified: null
"
### Define Node Class
setRefClass("Node",
fields = list(name="character", prob="numeric",
costCost="numeric", payoffCost="numeric", expectedCost="numeric",
costBlood="numeric", payoffBlood="numeric", expectedBlood="numeric",
costHospitalization="numeric", payoffHospitalization="numeric", expectedHospitalization="numeric",
children="vector")
)
### Define Run tree
evaluateNode <- function(curNode) {
# Recursive function to average and roll-back tree
#
# Args:
# curNode: Current node. Children will be evaluated recursively.
numChildren <- length(curNode$children)
if (numChildren == 0) {
curNode$expectedCost <- curNode$payoffCost + curNode$costCost
curNode$expectedBlood <- curNode$payoffBlood + curNode$costBlood
curNode$expectedHospitalization <- curNode$payoffHospitalization + curNode$costHospitalization
} else { # Evaluate children
curNode$expectedCost <- curNode$costCost
curNode$expectedBlood <- curNode$costBlood
curNode$expectedHospitalization <- curNode$costHospitalization
for (i in 1:numChildren) {
child <- tree[[curNode$children[i]]] # Get child
evaluateNode(child)
curNode$expectedCost <- curNode$expectedCost + (child$prob * child$expectedCost)
curNode$expectedBlood <- curNode$expectedBlood + (child$prob * child$expectedBlood)
curNode$expectedHospitalization <- curNode$expectedHospitalization + (child$prob * child$expectedHospitalization)
}
}
}
### Define display results
displayEV <- function(curNode) {
# Recursive function to display results
#
# Args:
# curNode: Current node. Child results will be displayed recursively.
numChildren <- length(curNode$children)
if (numChildren > 0) {
for(i in 1:numChildren) {
curChild <- tree[[curNode$children[i]]]
print(paste(curChild$name, curChild$expectedCost, curChild$expectedBlood, curChild$expectedHospitalization))
displayEV(curChild)
}
}
}
### Define parameters
p_bite <- 0.25 # Expression: 0.25
p_inf_bitten <- 0.5 # Expression: 0.5
p_inf_not_allergic <- 0.4 # Expression: 0.4
p_inf_bitten_UA <- 0.05 # Expression: 0.05
C_hospital <- 500.0 # Expression: 500
C_donothing <- 5.0 # Expression: 5
C_drug <- 10.0 # Expression: 10
C_drug_UA <- 0.5 # Expression: 0.5
p_hospital <- 0.66 # Expression: 0.66
p_not_allergic <- 0.95 # Expression: 0.95
red_blood <- 0.1 # Expression: 0.1
val_blood <- 470.0 # Expression: 470
### Create tree
Root <- new("Node", name="Root", children=c(2, 3, 4))
Donothing <- new("Node", name="Donothing", prob=0, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(5, 6))
Targetedantibiotics <- new("Node", name="Targetedantibiotics", prob=0, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(11, 12))
Universalantibiotics <- new("Node", name="Universalantibiotics", prob=0, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(19, 20))
Bitten <- new("Node", name="Bitten", prob=p_bite, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(7, 8))
Notbitten <- new("Node", name="Notbitten", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing, payoffBlood=0, payoffHospitalization=0)
Infection <- new("Node", name="Infection", prob=p_inf_bitten, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(9, 10))
Noinfection <- new("Node", name="Noinfection", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing, payoffBlood=val_blood, payoffHospitalization=0)
Hospitalization <- new("Node", name="Hospitalization", prob=p_hospital, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_hospital+C_donothing, payoffBlood=val_blood*(1-red_blood), payoffHospitalization=1)
Nohospitalization <- new("Node", name="Nohospitalization", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing, payoffBlood=val_blood, payoffHospitalization=0)
Bitten1 <- new("Node", name="Bitten1", prob=p_bite, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(13, 14))
Notbitten1 <- new("Node", name="Notbitten1", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing, payoffBlood=0, payoffHospitalization=0)
Notallergic <- new("Node", name="Notallergic", prob=p_not_allergic, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(15, 16))
Allergic <- new("Node", name="Allergic", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_hospital+C_donothing+C_drug, payoffBlood=0, payoffHospitalization=1)
Infection1 <- new("Node", name="Infection1", prob=p_inf_not_allergic, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(17, 18))
Noinfection1 <- new("Node", name="Noinfection1", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing+C_drug, payoffBlood=val_blood, payoffHospitalization=0)
Hospitalization1 <- new("Node", name="Hospitalization1", prob=p_hospital, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_hospital+C_donothing+C_drug, payoffBlood=val_blood*(1-red_blood), payoffHospitalization=1)
Nohospitalization1 <- new("Node", name="Nohospitalization1", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing+C_drug, payoffBlood=val_blood, payoffHospitalization=0)
Notallergic1 <- new("Node", name="Notallergic1", prob=p_not_allergic, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(21, 22))
Allergic1 <- new("Node", name="Allergic1", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_hospital+C_donothing+C_drug_UA, payoffBlood=0, payoffHospitalization=1)
Bitten2 <- new("Node", name="Bitten2", prob=p_bite, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(23, 24))
Notbitten2 <- new("Node", name="Notbitten2", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing+C_drug_UA, payoffBlood=0, payoffHospitalization=0)
Infection2 <- new("Node", name="Infection2", prob=p_inf_bitten_UA, costCost=0, costBlood=0, costHospitalization=0, payoffCost=0, payoffBlood=0, payoffHospitalization=0, children=c(25, 26))
Noinfection2 <- new("Node", name="Noinfection2", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing+C_drug_UA, payoffBlood=val_blood, payoffHospitalization=0)
Hospitalization2 <- new("Node", name="Hospitalization2", prob=p_hospital, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_hospital+C_donothing+C_drug_UA, payoffBlood=val_blood*(1-red_blood), payoffHospitalization=1)
Nohospitalization2 <- new("Node", name="Nohospitalization2", prob=-1, costCost=0, costBlood=0, costHospitalization=0, payoffCost=C_donothing+C_drug_UA, payoffBlood=val_blood, payoffHospitalization=0)
tree <- c(Root, Donothing, Targetedantibiotics, Universalantibiotics, Bitten, Notbitten, Infection, Noinfection, Hospitalization, Nohospitalization, Bitten1, Notbitten1, Notallergic, Allergic, Infection1, Noinfection1, Hospitalization1, Nohospitalization1, Notallergic1, Allergic1, Bitten2, Notbitten2, Infection2, Noinfection2, Hospitalization2, Nohospitalization2)
### Define complementary probs
Notbitten$prob <- 1.0 - Bitten$prob
Noinfection$prob <- 1.0 - Infection$prob
Nohospitalization$prob <- 1.0 - Hospitalization$prob
Notbitten1$prob <- 1.0 - Bitten1$prob
Allergic$prob <- 1.0 - Notallergic$prob
Noinfection1$prob <- 1.0 - Infection1$prob
Nohospitalization1$prob <- 1.0 - Hospitalization1$prob
Allergic1$prob <- 1.0 - Notallergic1$prob
Notbitten2$prob <- 1.0 - Bitten2$prob
Noinfection2$prob <- 1.0 - Infection2$prob
Nohospitalization2$prob <- 1.0 - Hospitalization2$prob
### Run tree
evaluateNode(tree[[1]])
### Display output for each strategy
numStrategies <- length(Root$children)
for(i in 1:numStrategies) {
curNode <- tree[[Root$children[i]]]
print(paste("Strategy:", curNode$name, curNode$expectedCost, curNode$expectedBlood, curNode$expectedHospitalization))
print("Children...")
displayEV(curNode)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.