我是 R 新手并分配了一个项目,因此我必须在 R 中构建一个成本效益模型。它基于马尔可夫模型,我目前只是试图习惯界面并安装 heemod 包协助制作马尔可夫模型。
我有基于 Cran 的小插曲运行的简单模型,但我想我会尝试扩展与项目类似的东西相关的模型。
我没有干预和一个比较器,而是有 2 个比较器,但似乎得到如下错误。(请注意,到目前为止,值/数字仅用于测试目的,以尝试使模型正常工作)。
library(heemod)
param <- define_parameters(
nin_state_110 = .721,
nin_state_100 = .202,
nin_state_90 = .067,
nin_state_80 = .014,
nin_state_70 = .85,
nin_state_60 = .234,
nin_state_50 = .67,
nin_state_40 = .56,
nin_state_30 = 0,
pfn_state_110 = .96,
pfn_state_100 = .85,
pfn_state_90 = .56,
pfn_state_80 = .53,
pfn_state_70 = .44,
pfn_state_60 = .76,
pfn_state_50 = .22,
pfn_state_40 = .35,
pfn_state_30 = 0,
bsc_state_110 = .8,
bsc_state_100 = .77,
bsc_state_90 = .66,
bsc_state_80 = .77,
bsc_state_70 = .43,
bsc_state_60 = .97,
bsc_state_50 = .66,
bsc_state_40 = .37,
bsc_state_30 = 0,
cost_nin = 2278,
cost_pfn = 2086,
cost_bsc = 0,
cost_110 = 199,
cost_100 = 200,
cost_90 = 250,
cost_80 = 300,
cost_70 = 225,
cost_60 = 150,
cost_50 = 250,
cost_40 = 200,
cost_30 = 0
)
mat_nin <- define_transition(
nin_state_110, C, 0, 0, 0, 0, 0, 0, 0,
0, nin_state_100, C, 0, 0, 0, 0, 0, 0,
0, 0, nin_state_90, C, 0, 0, 0, 0, 0,
0, 0, 0, nin_state_80, C, 0, 0, 0, 0,
0, 0, 0, 0, nin_state_70, C, 0, 0, 0,
0, 0, 0, 0, 0, nin_state_60, C, 0, 0,
0, 0, 0, 0, 0, 0, nin_state_50, C, 0,
0, 0, 0, 0, 0, 0, 0, nin_state_40, C,
0, 0, 0, 0, 0, 0, 0, 0, nin_state_30
)
mat_pfn <- define_transition(
pfn_state_110, C, 0, 0, 0, 0, 0, 0, 0,
0, pfn_state_100, C, 0, 0, 0, 0, 0, 0,
0, 0, pfn_state_90, C, 0, 0, 0, 0, 0,
0, 0, 0, pfn_state_80, C, 0, 0, 0, 0,
0, 0, 0, 0, pfn_state_70, C, 0, 0, 0,
0, 0, 0, 0, 0, pfn_state_60, C, 0, 0,
0, 0, 0, 0, 0, 0, pfn_state_50, C, 0,
0, 0, 0, 0, 0, 0, 0, pfn_state_40, C,
0, 0, 0, 0, 0, 0, 0, 0, pfn_state_30
)
mat_bsc <- define_transition(
bsc_state_110, C, 0, 0, 0, 0, 0, 0, 0,
0, bsc_state_100, C, 0, 0, 0, 0, 0, 0,
0, 0, bsc_state_90, C, 0, 0, 0, 0, 0,
0, 0, 0, bsc_state_80, C, 0, 0, 0, 0,
0, 0, 0, 0, bsc_state_70, C, 0, 0, 0,
0, 0, 0, 0, 0, bsc_state_60, C, 0, 0,
0, 0, 0, 0, 0, 0, bsc_state_50, C, 0,
0, 0, 0, 0, 0, 0, 0, bsc_state_40, C,
0, 0, 0, 0, 0, 0, 0, 0, bsc_state_30
)
state_110 <- define_state(
cost_110 = 199,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_110 + cost_drugs, .035),
utility = 0.8380
)
state_100 <- define_state(
cost_100 = 200,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_100 + cost_drugs, .035),
utility = 0.8380
)
state_90 <- define_state(
cost_90 = 250,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_90 + cost_drugs, .035),
utility = 0.8380
)
state_80 <- define_state(
cost_80 = 300,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_80 + cost_drugs, .035),
utility = 0.8380
)
state_70 <- define_state(
cost_70 = 225,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_70 + cost_drugs, .035),
utility = 0.8380
)
state_60 <- define_state(
cost_60 = 150,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_60 + cost_drugs, .035),
utility = 0.8380
)
state_50 <- define_state(
cost_50 = 250,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_50 + cost_drugs, .035),
utility = 0.8380
)
state_40 <- define_state(
cost_40 = 200,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_40 + cost_drugs, .035),
utility = 0.8380
)
state_30 <- define_state(
cost_30 = 0,
cost_drugs = discount(dispatch_strategy(
nin = cost_nin,
pfn = cost_pfn,
bsc = cost_bsc
)),
cost_total = discount(cost_30 + cost_drugs, .035),
utility = 0
)
strat_nin <- define_strategy(
transition = mat_nin,
state_110,
state_100,
state_90,
state_80,
state_70,
state_60,
state_50,
state_40,
state_30
)
strat_pfn <- define_strategy(
transition = mat_pfn,
state_110,
state_100,
state_90,
state_80,
state_70,
state_60,
state_50,
state_40,
state_30
)
strat_bsc <- define_strategy(
transition = mat_bsc,
state_110,
state_100,
state_90,
state_80,
state_70,
state_60,
state_50,
state_40,
state_30
)
res_mod <- run_model(
nin = strat_nin,
pfn = strat_pfn,
parameters = param,
cycles = 50,
cost = cost_total,
effect = utility
)
res_mod2 <- run_model(
nin = strat_nin,
bsc = strat_bsc,
parameters = param,
cycles = 50,
cost = cost_total,
effect = utility
)
rsp <- define_psa(
cost_110 ~ gamma(mean = 180, sd = sqrt(199)),
cost_100 ~ gamma(mean = 170, sd = sqrt(200)),
cost_90 ~ gamma(mean = 240, sd = sqrt(250)),
cost_80 ~ gamma(mean = 290, sd = sqrt(300)),
cost_70 ~ gamma(mean = 230, sd = sqrt(225)),
cost_60 ~ gamma(mean = 150, sd = sqrt(125)),
cost_50 ~ gamma(mean = 240, sd = sqrt(250)),
cost_40 ~ gamma(mean = 210, sd = sqrt(200)),
cost_30 ~ gamma(mean = 1, sd = sqrt(1)),
)
pm <- run_psa(
model = res_mod,
psa = rsp,
N = 100
)
这是输出的错误:
没有命名状态 -> 生成名称。check_states(states) 中的错误:状态值名称因状态而异。