Once the model has been run, we can use the results and summarize
them using the summary_results_det() to print the results
of the last simulation (if nsim = 1, it’s the deterministic
case), and summary_results_sim() to show the PSA results
(with the confidence intervals). We can also use the individual patient
data generated by the simulation, which we collect here to plot in the
psa_ipd object.
summary_results_det(results[[1]][[1]]) #print first simulation
#> int noint
#> costs 71261.66 63063.40
#> dcosts 0.00 8198.25
#> lys 11.21 11.08
#> dlys 0.00 0.12
#> qalys 6.98 6.63
#> dqalys 0.00 0.35
#> ICER NA 66484.18
#> ICUR NA 23296.79
#> INMB NA 9396.99
#> costs_undisc 118130.54 104038.82
#> dcosts_undisc 0.00 14091.72
#> lys_undisc 17.48 17.22
#> dlys_undisc 0.00 0.26
#> qalys_undisc 10.37 9.85
#> dqalys_undisc 0.00 0.52
#> ICER_undisc NA 54006.07
#> ICUR_undisc NA 27003.04
#> INMB_undisc NA 12001.13
#> c_default 71261.66 63063.40
#> dc_default 0.00 8198.25
#> c_default_undisc 118130.54 104038.82
#> dc_default_undisc 0.00 14091.72
#> q_default 6.98 6.63
#> dq_default 0.00 0.35
#> q_default_undisc 10.37 9.85
#> dq_default_undisc 0.00 0.52
summary_results_sim(results[[1]])
#> int noint
#> costs 71,262 (71,262; 71,262) 63,063 (63,063; 63,063)
#> dcosts 0 (0; 0) 8,198 (8,198; 8,198)
#> lys 11.2 (11.2; 11.2) 11.1 (11.1; 11.1)
#> dlys 0 (0; 0) 0.123 (0.123; 0.123)
#> qalys 6.98 (6.98; 6.98) 6.63 (6.63; 6.63)
#> dqalys 0 (0; 0) 0.352 (0.352; 0.352)
#> ICER NaN (NA; NA) 66,484 (66,484; 66,484)
#> ICUR NaN (NA; NA) 23,297 (23,297; 23,297)
#> INMB NaN (NA; NA) 9,397 (9,397; 9,397)
#> costs_undisc 118,131 (118,131; 118,131) 104,039 (104,039; 104,039)
#> dcosts_undisc 0 (0; 0) 14,092 (14,092; 14,092)
#> lys_undisc 17.5 (17.5; 17.5) 17.2 (17.2; 17.2)
#> dlys_undisc 0 (0; 0) 0.261 (0.261; 0.261)
#> qalys_undisc 10.4 (10.4; 10.4) 9.85 (9.85; 9.85)
#> dqalys_undisc 0 (0; 0) 0.522 (0.522; 0.522)
#> ICER_undisc NaN (NA; NA) 54,006 (54,006; 54,006)
#> ICUR_undisc NaN (NA; NA) 27,003 (27,003; 27,003)
#> INMB_undisc NaN (NA; NA) 12,001 (12,001; 12,001)
#> c_default 71,262 (71,262; 71,262) 63,063 (63,063; 63,063)
#> dc_default 0 (0; 0) 8,198 (8,198; 8,198)
#> c_default_undisc 118,131 (118,131; 118,131) 104,039 (104,039; 104,039)
#> dc_default_undisc 0 (0; 0) 14,092 (14,092; 14,092)
#> q_default 6.98 (6.98; 6.98) 6.63 (6.63; 6.63)
#> dq_default 0 (0; 0) 0.352 (0.352; 0.352)
#> q_default_undisc 10.4 (10.4; 10.4) 9.85 (9.85; 9.85)
#> dq_default_undisc 0 (0; 0) 0.522 (0.522; 0.522)
summary_results_sens(results)
#> arm analysis analysis_name variable value
#> <char> <int> <char> <fctr> <char>
#> 1: int 1 costs 71,262 (71,262; 71,262)
#> 2: noint 1 costs 63,063 (63,063; 63,063)
#> 3: int 1 dcosts 0 (0; 0)
#> 4: noint 1 dcosts 8,198 (8,198; 8,198)
#> 5: int 1 lys 11.2 (11.2; 11.2)
#> 6: noint 1 lys 11.1 (11.1; 11.1)
#> 7: int 1 dlys 0 (0; 0)
#> 8: noint 1 dlys 0.123 (0.123; 0.123)
#> 9: int 1 qalys 6.98 (6.98; 6.98)
#> 10: noint 1 qalys 6.63 (6.63; 6.63)
#> 11: int 1 dqalys 0 (0; 0)
#> 12: noint 1 dqalys 0.352 (0.352; 0.352)
#> 13: int 1 ICER NaN (NA; NA)
#> 14: noint 1 ICER 66,484 (66,484; 66,484)
#> 15: int 1 ICUR NaN (NA; NA)
#> 16: noint 1 ICUR 23,297 (23,297; 23,297)
#> 17: int 1 INMB NaN (NA; NA)
#> 18: noint 1 INMB 9,397 (9,397; 9,397)
#> 19: int 1 costs_undisc 118,131 (118,131; 118,131)
#> 20: noint 1 costs_undisc 104,039 (104,039; 104,039)
#> 21: int 1 dcosts_undisc 0 (0; 0)
#> 22: noint 1 dcosts_undisc 14,092 (14,092; 14,092)
#> 23: int 1 lys_undisc 17.5 (17.5; 17.5)
#> 24: noint 1 lys_undisc 17.2 (17.2; 17.2)
#> 25: int 1 dlys_undisc 0 (0; 0)
#> 26: noint 1 dlys_undisc 0.261 (0.261; 0.261)
#> 27: int 1 qalys_undisc 10.4 (10.4; 10.4)
#> 28: noint 1 qalys_undisc 9.85 (9.85; 9.85)
#> 29: int 1 dqalys_undisc 0 (0; 0)
#> 30: noint 1 dqalys_undisc 0.522 (0.522; 0.522)
#> 31: int 1 ICER_undisc NaN (NA; NA)
#> 32: noint 1 ICER_undisc 54,006 (54,006; 54,006)
#> 33: int 1 ICUR_undisc NaN (NA; NA)
#> 34: noint 1 ICUR_undisc 27,003 (27,003; 27,003)
#> 35: int 1 INMB_undisc NaN (NA; NA)
#> 36: noint 1 INMB_undisc 12,001 (12,001; 12,001)
#> 37: int 1 c_default 71,262 (71,262; 71,262)
#> 38: noint 1 c_default 63,063 (63,063; 63,063)
#> 39: int 1 dc_default 0 (0; 0)
#> 40: noint 1 dc_default 8,198 (8,198; 8,198)
#> 41: int 1 c_default_undisc 118,131 (118,131; 118,131)
#> 42: noint 1 c_default_undisc 104,039 (104,039; 104,039)
#> 43: int 1 dc_default_undisc 0 (0; 0)
#> 44: noint 1 dc_default_undisc 14,092 (14,092; 14,092)
#> 45: int 1 q_default 6.98 (6.98; 6.98)
#> 46: noint 1 q_default 6.63 (6.63; 6.63)
#> 47: int 1 dq_default 0 (0; 0)
#> 48: noint 1 dq_default 0.352 (0.352; 0.352)
#> 49: int 1 q_default_undisc 10.4 (10.4; 10.4)
#> 50: noint 1 q_default_undisc 9.85 (9.85; 9.85)
#> 51: int 1 dq_default_undisc 0 (0; 0)
#> 52: noint 1 dq_default_undisc 0.522 (0.522; 0.522)
#> arm analysis analysis_name variable value
#> <char> <int> <char> <fctr> <char>
psa_ipd <- bind_rows(map(results[[1]], "merged_df"))
psa_ipd[1:10,] |>
kable() |>
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
We can also check what has been the absolute number of events per
strategy.