From fa45b3a703e33839881a05f68fc83de8cafe194a Mon Sep 17 00:00:00 2001 From: Quarto GHA Workflow Runner Date: Tue, 28 Nov 2023 20:23:29 +0000 Subject: [PATCH] Built site for gh-pages --- .nojekyll | 2 +- authors.html | 8 +- chapter_03.html | 2 +- chapter_06.html | 2 +- chapter_07.html | 4 +- chapter_09.html | 2 +- chapter_10.html | 26 +- chapter_11.html | 2 +- chapter_12.html | 2 +- chapter_16.html | 496 +++++++++--------- .../fig-predben_continuous_outcome-1.png | Bin 68130 -> 68226 bytes chapter_18.html | 2 +- index.html | 2 +- search.json | 26 +- 14 files changed, 290 insertions(+), 286 deletions(-) diff --git a/.nojekyll b/.nojekyll index 2dc42aa..eb81149 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -9b24b843 \ No newline at end of file +cb96379f \ No newline at end of file diff --git a/authors.html b/authors.html index b3ad7c6..eea6062 100644 --- a/authors.html +++ b/authors.html @@ -293,14 +293,18 @@

11  +Katrine Strandberg-Larsen +Department of Public Health, University of Copenhagen, Copenhagen, Denmark + + Konstantina Chalkou Institute of Social and Preventive Medicine (ISPM), University of Bern, Bern, Switzerland - + Mohammad Ehsanul Karim School of Population and Public Health, University of British Columbia, Vancouver, Canada - + Tammy Jiang Biogen, Cambridge, MA, United States diff --git a/chapter_03.html b/chapter_03.html index b7b8d74..41e1913 100644 --- a/chapter_03.html +++ b/chapter_03.html @@ -316,7 +316,7 @@

Version info

[21] tibble_3.2.1 lifecycle_1.0.4 farver_2.1.1 ggplot2_3.4.4 [25] purrr_1.0.2 tidyr_1.3.0 htmlwidgets_1.6.3 vctrs_0.6.4 [29] codetools_0.2-19 glue_1.6.2 evaluate_0.23 rmarkdown_2.25 -[33] compiler_4.2.3 pillar_1.9.0 cellranger_1.1.0 scales_1.2.1 +[33] compiler_4.2.3 pillar_1.9.0 cellranger_1.1.0 scales_1.3.0 [37] generics_0.1.3 jsonlite_1.8.7 pkgconfig_2.0.3 diff --git a/chapter_06.html b/chapter_06.html index 9c0f2b9..8d18507 100644 --- a/chapter_06.html +++ b/chapter_06.html @@ -1498,7 +1498,7 @@

Version info

[21] munsell_0.5.0 gtable_0.3.4 htmlwidgets_1.6.3 codetools_0.2-19 [25] evaluate_0.23 labeling_0.4.3 forcats_1.0.0 fastmap_1.1.1 [29] class_7.3-21 fansi_1.0.5 optmatch_0.10.7 Rcpp_1.0.11 -[33] checkmate_2.3.0 backports_1.4.1 scales_1.2.1 jsonlite_1.8.7 +[33] checkmate_2.3.0 backports_1.4.1 scales_1.3.0 jsonlite_1.8.7 [37] farver_2.1.1 chk_0.9.1 hms_1.1.3 digest_0.6.33 [41] insight_0.19.6 cli_3.6.1 tools_4.2.3 magrittr_2.0.3 [45] proxy_0.4-27 tibble_3.2.1 crayon_1.5.2 pkgconfig_2.0.3 diff --git a/chapter_07.html b/chapter_07.html index 7b31140..494b8c5 100644 --- a/chapter_07.html +++ b/chapter_07.html @@ -1835,7 +1835,7 @@

Version info

other attached packages: [1] interactions_1.1.5 survey_4.2-1 survival_3.5-3 Matrix_1.6-3 - [5] interactionR_0.1.6 simcausal_0.5.6 scales_1.2.1 ggplot2_3.4.4 + [5] interactionR_0.1.6 simcausal_0.5.6 scales_1.3.0 ggplot2_3.4.4 [9] xtable_1.8-4 dplyr_1.1.4 kableExtra_1.3.4 knitr_1.45 [13] cowplot_1.1.1 broom_1.0.5 MatchIt_4.5.5 jtools_2.2.2 [17] sandwich_3.0-2 lmtest_0.9-40 zoo_1.8-12 optmatch_0.10.7 @@ -1849,7 +1849,7 @@

Version info

[13] compiler_4.2.3 textshaping_0.3.7 cli_3.6.1 [16] rvest_1.0.3 expm_0.999-7 flextable_0.9.4 [19] xml2_1.3.5 officer_0.6.3 fontBitstreamVera_0.1.1 -[22] labeling_0.4.3 mvtnorm_1.2-3 askpass_1.2.0 +[22] labeling_0.4.3 mvtnorm_1.2-4 askpass_1.2.0 [25] systemfonts_1.0.5 stringr_1.5.1 digest_0.6.33 [28] rmarkdown_2.25 svglite_2.1.2 gfonts_0.2.0 [31] pkgconfig_2.0.3 htmltools_0.5.7 highr_0.10 diff --git a/chapter_09.html b/chapter_09.html index 519ce4d..3bc567d 100644 --- a/chapter_09.html +++ b/chapter_09.html @@ -942,7 +942,7 @@

Version info

[34] iterators_1.0.14 insight_0.19.6 xfun_0.41 [37] stringr_1.5.1 lme4_1.1-35.1 rvest_1.0.3 [40] lifecycle_1.0.4 rngtools_1.5.2 rstatix_0.7.2 -[43] pan_1.9 zoo_1.8-12 scales_1.2.1 +[43] pan_1.9 zoo_1.8-12 scales_1.3.0 [46] rlemon_0.2.1 parallel_4.2.3 RColorBrewer_1.1-3 [49] yaml_2.3.7 gridExtra_2.3 UpSetR_1.4.0 [52] rpart_4.1.19 gam_1.22-2 stringi_1.8.2 diff --git a/chapter_10.html b/chapter_10.html index 0e8e094..db6cd6c 100644 --- a/chapter_10.html +++ b/chapter_10.html @@ -860,16 +860,16 @@

REM vs. STD -0.9 (0.73; 1.09) +0.9 (0.73; 1.08) TOCI vs. STD @@ -893,7 +893,7 @@

REM vs. TOCI -1.02 (0.75; 1.27) +1.02 (0.75; 1.26) @@ -1342,12 +1342,12 @@

sucra.uc$ranking.random
 ADA160/80     FIL100     FIL200 GOL200/100      INF10       INF5    OZA0.92 
-0.25363636 0.19090909 0.41909091 0.63181818 0.61454545 0.75909091 0.75545455 
+0.28727273 0.18909091 0.43909091 0.67363636 0.61818182 0.73909091 0.73090909 
        PBO      TOF10      UPA45       UST6     VED300 
-0.01636364 0.38545455 0.97818182 0.36636364 0.62909091 
+0.01090909 0.39272727 0.98000000 0.31818182 0.62090909
-

These results indicate that 97.8% of the evaluated treatments are worse than UPA45.

+

These results indicate that 98% of the evaluated treatments are worse than UPA45.

@@ -1377,7 +1377,7 @@

Version info

[5] dplyr_1.1.4 kableExtra_1.3.4 loaded via a namespace (and not attached): - [1] Rcpp_1.0.11 mvtnorm_1.2-3 svglite_2.1.2 + [1] Rcpp_1.0.11 mvtnorm_1.2-4 svglite_2.1.2 [4] lattice_0.20-45 digest_0.6.33 utf8_1.2.4 [7] truncnorm_1.0-9 slam_0.1-50 R6_2.5.1 [10] plyr_1.8.9 magic_1.6-1 evaluate_0.23 @@ -1394,7 +1394,7 @@

Version info

[43] viridisLite_0.4.2 withr_2.5.2 MASS_7.3-58.2 [46] grid_4.2.3 nlme_3.1-162 jsonlite_1.8.7 [49] gtable_0.3.4 lifecycle_1.0.4 magrittr_2.0.3 -[52] metafor_4.4-0 scales_1.2.1 metadat_1.2-0 +[52] metafor_4.4-0 scales_1.3.0 metadat_1.2-0 [55] cli_3.6.1 stringi_1.8.2 remotes_2.4.2.1 [58] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 [61] boot_1.3-28.1 forcats_1.0.0 tools_4.2.3 diff --git a/chapter_11.html b/chapter_11.html index 6510eb2..5f65572 100644 --- a/chapter_11.html +++ b/chapter_11.html @@ -760,7 +760,7 @@

Version info

[22] R2jags_0.7-1 Matrix_1.6-3 mcmcplots_0.4.3 [25] htmltools_0.5.7 httpuv_1.6.12 plyr_1.8.9 [28] pkgconfig_2.0.3 purrr_1.0.2 xtable_1.8-4 -[31] scales_1.2.1 webshot_0.5.5 svglite_2.1.2 +[31] scales_1.3.0 webshot_0.5.5 svglite_2.1.2 [34] rjags_4-14 later_1.3.1 ggstats_0.5.1 [37] metadat_1.2-0 lme4_1.1-35.1 tibble_3.2.1 [40] farver_2.1.1 generics_0.1.3 ellipsis_0.3.2 diff --git a/chapter_12.html b/chapter_12.html index a65de78..a45d72c 100644 --- a/chapter_12.html +++ b/chapter_12.html @@ -505,7 +505,7 @@

Version info

[21] foreach_1.5.2 lifecycle_1.0.4 munsell_0.5.0 gtable_0.3.4 [25] htmlwidgets_1.6.3 codetools_0.2-19 evaluate_0.23 labeling_0.4.3 [29] knitr_1.45 fastmap_1.1.1 fansi_1.0.5 Rcpp_1.0.11 -[33] scales_1.2.1 backports_1.4.1 jsonlite_1.8.7 farver_2.1.1 +[33] scales_1.3.0 backports_1.4.1 jsonlite_1.8.7 farver_2.1.1 [37] lme4_1.1-35.1 digest_0.6.33 grid_4.2.3 cli_3.6.1 [41] tools_4.2.3 magrittr_2.0.3 glmnet_4.1-8 tibble_3.2.1 [45] tidyr_1.3.0 pkgconfig_2.0.3 ellipsis_0.3.2 Matrix_1.6-3 diff --git a/chapter_16.html b/chapter_16.html index 2901bc7..4b3bfcf 100644 --- a/chapter_16.html +++ b/chapter_16.html @@ -293,13 +293,13 @@

head(ds)
-
  studyid treat          z1         z2  y
-1       1     1  0.66357960 -0.4577273  8
-2       1     0  1.31551822 -0.8754736 11
-3       1     0  0.09999125  0.8680711 11
-4       1     1  1.14502875  0.9097141  9
-5       1     0 -0.27793412  0.2742364 11
-6       1     0  0.74722408  0.7883318 11
+
  studyid treat         z1         z2  y
+1       1     1 -1.0979103  1.3313560 11
+2       1     1 -0.2680399  0.2622481  9
+3       1     1 -1.2474858 -0.2392603  9
+4       1     1 -0.4138311 -1.0706763  8
+5       1     1  0.1750534 -0.6511220  8
+6       1     0 -1.6278960 -1.9344096 10

The simulated dataset contains information on the following variables:

@@ -326,9 +326,9 @@

0
-(N=301)
+(N=276)
1
-(N=299)
+(N=324) Overall
(N=600)
@@ -342,15 +342,15 @@

Mean (SD) -0.0102 (0.998) --0.0650 (1.04) --0.0273 (1.02) +-0.109 (1.04) +0.00425 (1.07) +-0.0477 (1.06) Median [Min, Max] -0.0716 [-3.25, 2.28] --0.0613 [-2.69, 2.63] --0.00117 [-3.25, 2.63] +-0.0987 [-3.06, 2.68] +-0.0699 [-3.67, 3.03] +-0.0843 [-3.67, 3.03] z2 @@ -360,15 +360,15 @@

Mean (SD) --0.0735 (1.06) --0.0213 (1.02) --0.0475 (1.04) +-0.0325 (1.03) +0.0330 (1.01) +0.00287 (1.02) Median [Min, Max] --0.0459 [-3.30, 2.55] --0.0524 [-2.44, 2.96] --0.0481 [-3.30, 2.96] +-0.0835 [-2.61, 2.79] +0.0556 [-2.64, 2.38] +-0.0172 [-2.64, 2.79] studyid @@ -378,38 +378,38 @@

1 -47 (15.6%) -53 (17.7%) +37 (13.4%) +63 (19.4%) 100 (16.7%) 2 -56 (18.6%) -44 (14.7%) +53 (19.2%) +47 (14.5%) 100 (16.7%) 3 -48 (15.9%) -52 (17.4%) +48 (17.4%) +52 (16.0%) 100 (16.7%) 4 -48 (15.9%) -52 (17.4%) +40 (14.5%) +60 (18.5%) 100 (16.7%) 5 -54 (17.9%) -46 (15.4%) +56 (20.3%) +44 (13.6%) 100 (16.7%) 6 -48 (15.9%) -52 (17.4%) +42 (15.2%) +58 (17.9%) 100 (16.7%) @@ -462,7 +462,7 @@

+<environment: 0x561171711fc8>

We can fit the treatment effect model as follows:

@@ -485,36 +485,36 @@

+ 2.5% 25% 50% 75% 97.5% +alpha[1] 10.9039 10.961 11.0002 11.0358 11.0789 +alpha[2] 7.9836 8.023 8.0462 8.0725 8.1100 +alpha[3] 10.3476 10.421 10.4531 10.4826 10.5425 +alpha[4] 9.5035 9.564 9.6208 9.6634 9.7010 +alpha[5] 12.7946 12.836 12.8576 12.8878 12.9482 +alpha[6] 15.6457 15.680 15.7192 15.7633 15.8175 +beta[1] 0.1657 0.199 0.2133 0.2346 0.2429 +beta[2] 0.2503 0.276 0.2825 0.3040 0.3374 +delta[1] 0.0000 0.000 0.0000 0.0000 0.0000 +delta[2] -3.8358 -2.835 -2.4340 -2.0173 -1.5221 +gamma[1] -0.6230 -0.588 -0.5708 -0.5454 -0.5066 +gamma[2] 0.5379 0.579 0.5985 0.6225 0.6603 +sd 1.0047 1.272 1.4356 1.6393 1.9115

@@ -525,10 +525,10 @@

round(treatment.effect(ipd, samples, newpatient = c(z1 = 1, z2 = 0.5)), 2)
0.025   0.5 0.975 
--4.94 -3.76 -2.76 
+-4.11 -2.72 -1.78
-

This means that the predicted outcome for patient with covariate values z1 = 1 and z2 = 0.5 will differ by -3.76 units when receiving the active treatment (treat = 1) as compared to the control treatment (treat = 0).

+

This means that the predicted outcome for patient with covariate values z1 = 1 and z2 = 0.5 will differ by -2.72 units when receiving the active treatment (treat = 1) as compared to the control treatment (treat = 0).

We can also predict treatment benefit for all patients in the sample, and look at the distribution of predicted benefit.

library(dplyr)
@@ -590,7 +590,7 @@ 

round(treatment.effect(ipd, samples, newpatient = c(1,0.5)), 2)

0.025   0.5 0.975 
--4.55 -3.86 -2.96 
+-3.79 -2.62 -1.47
@@ -604,13 +604,13 @@

ds2 <- generate_ipdma_example(type = "binary")
 head(ds2)
-
  studyid treat        w1         w2 y
-1       1     1 0.7784257 -1.5231409 0
-2       1     1 0.7991675 -0.6872109 0
-3       1     0 1.8351258  0.8772528 1
-4       1     0 2.0236660  0.4388474 1
-5       1     0 0.7231042 -1.9485631 1
-6       1     1 0.7420041 -0.7778685 0
+
  studyid treat          w1          w2 y
+1       1     1  1.35999376  0.73143406 0
+2       1     1  1.12927801  0.62002345 1
+3       1     1  0.78404964  0.41148700 1
+4       1     0 -0.14616499  2.10316103 1
+5       1     1  0.03563058 -0.06812964 0
+6       1     1 -1.08032820 -0.98945872 0

The simulated dataset contains information on the following variables:

@@ -637,9 +637,9 @@

0
-(N=313)
+(N=281)
1
-(N=287)
+(N=319) Overall
(N=600)
@@ -653,15 +653,15 @@

Mean (SD) -0.0357 (0.976) -0.00133 (1.03) -0.0193 (1.00) +-0.00668 (1.03) +0.00771 (1.05) +0.000970 (1.04) Median [Min, Max] -0.0185 [-3.54, 2.66] --0.00433 [-2.75, 2.69] -0.0174 [-3.54, 2.69] +0.0652 [-3.05, 2.25] +-0.00417 [-3.00, 3.11] +0.0276 [-3.05, 3.11] w2 @@ -671,15 +671,15 @@

Mean (SD) -0.0488 (1.01) -0.118 (0.996) -0.0820 (1.00) +-0.0583 (0.935) +0.0366 (0.982) +-0.00787 (0.960) Median [Min, Max] -0.0627 [-2.98, 2.86] -0.0674 [-2.84, 2.63] -0.0674 [-2.98, 2.86] +-0.114 [-2.64, 2.62] +0.0309 [-2.57, 3.17] +-0.0265 [-2.64, 3.17] studyid @@ -689,38 +689,38 @@

1 -49 (15.7%) -51 (17.8%) +41 (14.6%) +59 (18.5%) 100 (16.7%) 2 -56 (17.9%) -44 (15.3%) +43 (15.3%) +57 (17.9%) 100 (16.7%) 3 -44 (14.1%) -56 (19.5%) +44 (15.7%) +56 (17.6%) 100 (16.7%) 4 -58 (18.5%) -42 (14.6%) +52 (18.5%) +48 (15.0%) 100 (16.7%) 5 -52 (16.6%) -48 (16.7%) +52 (18.5%) +48 (15.0%) 100 (16.7%) 6 -54 (17.3%) -46 (16.0%) +49 (17.4%) +51 (16.0%) 100 (16.7%) @@ -778,7 +778,7 @@

+<environment: 0x561175515cc0>
@@ -797,37 +797,37 @@

+ 2.5% 25% 50% 75% 97.5% +alpha[1] -0.1440 0.188747 0.53962 0.73109 0.92760 +alpha[2] -1.0709 -0.818813 -0.64110 -0.46286 -0.17836 +alpha[3] -1.3032 -1.089755 -0.87444 -0.70553 -0.38455 +alpha[4] -1.1100 -0.733088 -0.61047 -0.41997 -0.29323 +alpha[5] -1.2273 -0.909380 -0.77217 -0.59668 -0.41225 +alpha[6] -1.4128 -1.155018 -0.91217 -0.78489 -0.50260 +beta[1] -0.1295 0.008414 0.09778 0.19075 0.33197 +beta[2] -0.2931 -0.241737 -0.13348 -0.05350 0.07247 +delta[1] 0.0000 0.000000 0.00000 0.00000 0.00000 +delta[2] -1.2790 -0.352368 -0.04383 0.17977 0.94974 +gamma[1] -0.4221 -0.336772 -0.18240 -0.09536 0.02975 +gamma[2] 0.2020 0.331719 0.40058 0.52150 0.66638 +sd 0.5504 0.849041 1.06372 1.32746 1.70934

The predicted treatment benefit for a new patient with covariates w1 = 1.6 and w2 = 1.3 is given as:

@@ -835,10 +835,10 @@

round(treatment.effect(ipd2, samples, newpatient = c(w1 = 1.6, w2 = 1.3)), 2)
0.025   0.5 0.975 
- 0.28  0.65  1.36 
+ 0.56 1.19 3.91
-

In other words, the aforementioned patient 0.65 (95% Credibility Interval: 0.28 to 1.36)

+

In other words, the aforementioned patient 1.19 (95% Credibility Interval: 0.56 to 3.91)

@@ -853,13 +853,13 @@

ds3 <- generate_ipdnma_example(type = "continuous")
 head(ds3)
-
  studyid treat          z1         z2  y
-1       1     1 -0.66008417  1.9658506 11
-2       1     2  0.72678195 -1.4045085  6
-3       1     1 -0.61407931 -3.4432115 10
-4       1     1  1.32732405 -0.0516703 11
-5       1     2 -1.75412839  1.5136265 11
-6       1     2  0.02939798  1.1166710  9
+
  studyid treat         z1          z2  y
+1       1     1  0.2161967  1.76099639 11
+2       1     2 -0.5632438 -0.82201077  8
+3       1     2  0.6338783  1.01859585  9
+4       1     2  2.0654132 -0.46867968  6
+5       1     1 -2.0795661 -2.22359814 10
+6       1     2 -1.0992477  0.03972141  9

Let us look into the data a bit in more detail:

@@ -881,11 +881,11 @@

1
-(N=327)
+(N=357)
2
-(N=343)
+(N=360) 3
-(N=330)
+(N=283) Overall
(N=1000)
@@ -900,17 +900,17 @@

Mean (SD) -0.0415 (1.03) --0.0323 (0.983) -0.0513 (1.00) -0.0194 (1.00) +-0.0313 (1.00) +0.0765 (1.01) +-0.0306 (1.03) +0.00773 (1.01) Median [Min, Max] -0.0928 [-2.76, 3.26] -0.0363 [-3.03, 2.66] -0.0130 [-2.78, 3.33] -0.0458 [-3.03, 3.33] +-0.0411 [-3.13, 3.40] +0.0951 [-3.11, 2.63] +-0.0654 [-2.86, 2.42] +0.00213 [-3.13, 3.40] z2 @@ -921,17 +921,17 @@

Mean (SD) -0.0170 (0.984) --0.0608 (0.974) --0.0176 (1.02) --0.0211 (0.993) +-0.0980 (1.04) +0.0522 (0.923) +0.000392 (1.01) +-0.0161 (0.993) Median [Min, Max] --0.0393 [-3.44, 2.77] --0.113 [-2.32, 2.74] --0.0405 [-3.12, 3.36] --0.0480 [-3.44, 3.36] +-0.124 [-2.85, 3.38] +0.0144 [-2.24, 3.06] +0.0401 [-3.09, 2.56] +-0.0155 [-3.09, 3.38] studyid @@ -942,72 +942,72 @@

1 -51 (15.6%) -49 (14.3%) +48 (13.4%) +52 (14.4%) 0 (0%) 100 (10.0%) 2 -45 (13.8%) -55 (16.0%) +45 (12.6%) +55 (15.3%) 0 (0%) 100 (10.0%) 3 -43 (13.1%) -57 (16.6%) +49 (13.7%) +51 (14.2%) 0 (0%) 100 (10.0%) 4 -45 (13.8%) +54 (15.1%) 0 (0%) -55 (16.7%) +46 (16.3%) 100 (10.0%) 5 -51 (15.6%) +60 (16.8%) 0 (0%) -49 (14.8%) +40 (14.1%) 100 (10.0%) 6 0 (0%) -47 (13.7%) -53 (16.1%) +49 (13.6%) +51 (18.0%) 100 (10.0%) 7 0 (0%) -46 (13.4%) -54 (16.4%) +44 (12.2%) +56 (19.8%) 100 (10.0%) 8 -31 (9.5%) -31 (9.0%) -38 (11.5%) +29 (8.1%) +39 (10.8%) +32 (11.3%) 100 (10.0%) 9 -31 (9.5%) -24 (7.0%) -45 (13.6%) +34 (9.5%) +34 (9.4%) +32 (11.3%) 100 (10.0%) 10 -30 (9.2%) -34 (9.9%) -36 (10.9%) +38 (10.6%) +36 (10.0%) +26 (9.2%) 100 (10.0%) @@ -1078,7 +1078,7 @@

+<environment: 0x5611757e7780>
samples <- ipd.run(ipd3, n.chains = 2, n.iter = 20, 
                    pars.save = c("alpha", "beta", "delta", "sd", "gamma"))
@@ -1105,54 +1105,54 @@

+ 2.5% 25% 50% 75% 97.5% +alpha[1] 10.91963 10.9755 11.0018 11.0236 11.0965 +alpha[2] 8.01898 8.0560 8.0740 8.1030 8.1455 +alpha[3] 10.46305 10.4986 10.5161 10.5431 10.6024 +alpha[4] 9.45244 9.5602 9.5981 9.6326 9.6729 +alpha[5] 12.74635 12.7986 12.8239 12.8428 12.9038 +alpha[6] 13.04801 13.0916 13.1289 13.1556 13.2330 +alpha[7] 7.27966 7.2990 7.3230 7.3554 7.4213 +alpha[8] 11.06441 11.1190 11.1580 11.2117 11.2897 +alpha[9] 10.07002 10.1133 10.1553 10.1841 10.2688 +alpha[10] 9.18155 9.2155 9.2288 9.2508 9.3211 +beta[1] 0.16436 0.1961 0.2096 0.2251 0.2565 +beta[2] 0.28336 0.3011 0.3137 0.3207 0.3371 +delta[1] 0.00000 0.0000 0.0000 0.0000 0.0000 +delta[2] -3.10971 -3.0519 -3.0081 -2.9840 -2.9517 +delta[3] -1.23184 -1.1583 -1.1172 -1.0915 -1.0214 +gamma[1,1] 0.00000 0.0000 0.0000 0.0000 0.0000 +gamma[2,1] -0.72128 -0.6462 -0.6357 -0.6134 -0.5690 +gamma[3,1] -0.37711 -0.3525 -0.3296 -0.3126 -0.2901 +gamma[1,2] 0.00000 0.0000 0.0000 0.0000 0.0000 +gamma[2,2] 0.51798 0.5498 0.5637 0.5833 0.6102 +gamma[3,2] 0.32928 0.3525 0.3653 0.3781 0.4135 +sd 0.09853 0.1120 0.1300 0.1498 0.1694

As before, we can use the treatment.effect() function of bipd to estimate relative effects for new patients.

@@ -1161,11 +1161,11 @@

$`treatment 2`
     0.025       0.5     0.975 
--2.469337 -2.366859 -2.226574 
+-2.657461 -2.479969 -2.382494 
 
 $`treatment 3`
      0.025        0.5      0.975 
--0.6540734 -0.5590274 -0.3852781 
+-0.8781160 -0.6976577 -0.5854561

This gives us the relative effects for all treatments versus the reference. To obtain relative effects between active treatments we need some more coding:

@@ -1182,7 +1182,7 @@

samples.all$gamma.3.2.*newpatient[2]) )
-
[1] -1.812932
+
[1] -1.773384
quantile(samples.all$delta.2.+samples.all$gamma.2.1.*
            newpatient[1]+samples.all$gamma.2.2.*newpatient[2]
@@ -1191,7 +1191,7 @@ 

, probs = 0.025)

     2.5% 
--1.978609 
+-1.955488
quantile(samples.all$delta.2.+samples.all$gamma.2.1.*
            newpatient[1]+samples.all$gamma.2.2.*newpatient[2]
@@ -1200,7 +1200,7 @@ 

, probs = 0.975)

    97.5% 
--1.643765 
+-1.638554
@@ -1226,9 +1226,9 @@

          
            s1 s2 s3
-  treat A: 49 55 33
-  treat B: 51  0 29
-  treat C:  0 45 38
+ treat A: 41 49 36 + treat B: 59 0 32 + treat C: 0 51 32 @@ -1357,18 +1357,18 @@

study 1 --2.925 (SE = 0.053 ) +-3.029 (SE = 0.061 ) study 2 --1.118 (SE = 0.060 ) +-1.097 (SE = 0.048 ) study 3 --2.966 (SE = 0.059 ) --1.033 (SE = 0.054 ) +-2.901 (SE = 0.087 ) +-0.916 (SE = 0.086 ) @@ -1434,23 +1434,23 @@

+delta[2] -3.1093 -3.0394 -3.0055 -2.9685 -2.8799 +delta[3] -1.1400 -1.0811 -1.0587 -1.0093 -0.9512 +gamma[1,1] -0.8979 -0.8354 -0.8034 -0.7816 -0.7112 +gamma[2,1] 0.8466 0.9164 0.9469 0.9655 1.0061 +gamma[1,2] -0.6650 -0.6082 -0.5804 -0.5503 -0.4759 +gamma[2,2] 0.4219 0.5109 0.5429 0.5854 0.6825
# calculate  treatment effects
 samples.all = data.frame(rbind(samps4.3[[1]], samps4.3[[2]]))
@@ -1461,21 +1461,21 @@ 

samples.all$gamma.2.1.*newpatient[2] )

-
[1] -1.968329
+
[1] -1.916582
quantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+
            samples.all$gamma.2.1.*newpatient[2]
          , probs = 0.025)
     2.5% 
--2.150516 
+-2.123473
quantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+
            samples.all$gamma.2.1.*newpatient[2]
          , probs = 0.975)
    97.5% 
--1.722643 
+-1.773523
@@ -1512,13 +1512,13 @@

Version info

[5] digest_0.6.33 gtable_0.3.4 lattice_0.20-45 jsonlite_1.8.7 [9] evaluate_0.23 lifecycle_1.0.4 tibble_3.2.1 viridisLite_0.4.2 [13] pkgconfig_2.0.3 rlang_1.1.2 cli_3.6.1 rstudioapi_0.15.0 -[17] yaml_2.3.7 mvtnorm_1.2-3 xfun_0.41 fastmap_1.1.1 +[17] yaml_2.3.7 mvtnorm_1.2-4 xfun_0.41 fastmap_1.1.1 [21] withr_2.5.2 httr_1.4.7 stringr_1.5.1 knitr_1.45 [25] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 htmlwidgets_1.6.3 [29] systemfonts_1.0.5 grid_4.2.3 webshot_0.5.5 tidyselect_1.2.0 [33] svglite_2.1.2 glue_1.6.2 R6_2.5.1 fansi_1.0.5 [37] rmarkdown_2.25 Formula_1.2-5 farver_2.1.1 magrittr_2.0.3 -[41] codetools_0.2-19 scales_1.2.1 htmltools_0.5.7 rvest_1.0.3 +[41] codetools_0.2-19 scales_1.3.0 htmltools_0.5.7 rvest_1.0.3 [45] colorspace_2.1-0 labeling_0.4.3 utf8_1.2.4 stringi_1.8.2 [49] munsell_0.5.0 diff --git a/chapter_16_files/figure-html/fig-predben_continuous_outcome-1.png b/chapter_16_files/figure-html/fig-predben_continuous_outcome-1.png index 7f091a88f96a5d556c1cf35883dc60a894d72ed3..5d113de6862dcf82631dd0af807fa1a3dd6dd806 100644 GIT binary patch literal 68226 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 Xn)`=xt}VPC0{_%iw3Lgknm+tL8RFm@ diff --git a/chapter_18.html b/chapter_18.html index c9a8290..06cf480 100644 --- a/chapter_18.html +++ b/chapter_18.html @@ -1300,7 +1300,7 @@

Version info

[43] gower_1.0.1 xfun_0.41 globals_0.16.2 [46] rvest_1.0.3 timechange_0.2.0 lifecycle_1.0.4 [49] geeM_0.10.1 mosaicCore_0.9.4.0 rstatix_0.7.2 - [52] future_1.33.0 scales_1.2.1 ipred_0.9-14 + [52] future_1.33.0 scales_1.3.0 ipred_0.9-14 [55] hms_1.1.3 parallel_4.2.3 RColorBrewer_1.1-3 [58] yaml_2.3.7 labelled_2.12.0 gam_1.22-2 [61] stringi_1.8.2 highr_0.10 foreach_1.5.2 diff --git a/index.html b/index.html index 29d059f..577fba0 100644 --- a/index.html +++ b/index.html @@ -223,7 +223,7 @@

Comparative Effectiveness and Personalized Medicine Research U
Published
-

26 November, 2023

+

28 November, 2023

diff --git a/search.json b/search.json index 21b3c2c..3bb1321 100644 --- a/search.json +++ b/search.json @@ -32,7 +32,7 @@ "href": "chapter_03.html#version-info", "title": "2  Validity control and quality assessment of real-world data and real-world evidence", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] robvis_0.3.0 readxl_1.4.3\n\nloaded via a namespace (and not attached):\n [1] knitr_1.45 magrittr_2.0.3 munsell_0.5.0 tidyselect_1.2.0 \n [5] colorspace_2.1-0 R6_2.5.1 rlang_1.1.2 fastmap_1.1.1 \n [9] fansi_1.0.5 dplyr_1.1.4 tools_4.2.3 grid_4.2.3 \n[13] gtable_0.3.4 xfun_0.41 utf8_1.2.4 cli_3.6.1 \n[17] withr_2.5.2 htmltools_0.5.7 yaml_2.3.7 digest_0.6.33 \n[21] tibble_3.2.1 lifecycle_1.0.4 farver_2.1.1 ggplot2_3.4.4 \n[25] purrr_1.0.2 tidyr_1.3.0 htmlwidgets_1.6.3 vctrs_0.6.4 \n[29] codetools_0.2-19 glue_1.6.2 evaluate_0.23 rmarkdown_2.25 \n[33] compiler_4.2.3 pillar_1.9.0 cellranger_1.1.0 scales_1.2.1 \n[37] generics_0.1.3 jsonlite_1.8.7 pkgconfig_2.0.3" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] robvis_0.3.0 readxl_1.4.3\n\nloaded via a namespace (and not attached):\n [1] knitr_1.45 magrittr_2.0.3 munsell_0.5.0 tidyselect_1.2.0 \n [5] colorspace_2.1-0 R6_2.5.1 rlang_1.1.2 fastmap_1.1.1 \n [9] fansi_1.0.5 dplyr_1.1.4 tools_4.2.3 grid_4.2.3 \n[13] gtable_0.3.4 xfun_0.41 utf8_1.2.4 cli_3.6.1 \n[17] withr_2.5.2 htmltools_0.5.7 yaml_2.3.7 digest_0.6.33 \n[21] tibble_3.2.1 lifecycle_1.0.4 farver_2.1.1 ggplot2_3.4.4 \n[25] purrr_1.0.2 tidyr_1.3.0 htmlwidgets_1.6.3 vctrs_0.6.4 \n[29] codetools_0.2-19 glue_1.6.2 evaluate_0.23 rmarkdown_2.25 \n[33] compiler_4.2.3 pillar_1.9.0 cellranger_1.1.0 scales_1.3.0 \n[37] generics_0.1.3 jsonlite_1.8.7 pkgconfig_2.0.3" }, { "objectID": "chapter_06.html#introduction", @@ -95,7 +95,7 @@ "href": "chapter_06.html#version-info", "title": "3  Confounding adjustment using propensity score methods", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] WeightIt_0.14.2 boot_1.3-28.1 MatchIt_4.5.5 \n [4] sandwich_3.0-2 truncnorm_1.0-9 tableone_0.13.2 \n [7] survey_4.2-1 survival_3.5-3 Matrix_1.6-3 \n[10] MASS_7.3-58.2 marginaleffects_0.16.0 lmtest_0.9-40 \n[13] zoo_1.8-12 knitr_1.45 ggplot2_3.4.4 \n[16] data.table_1.14.8 cobalt_4.5.2 dplyr_1.1.4 \n\nloaded via a namespace (and not attached):\n [1] tidyselect_1.2.0 xfun_0.41 mitools_2.4 haven_2.5.3 \n [5] splines_4.2.3 lattice_0.20-45 labelled_2.12.0 colorspace_2.1-0 \n [9] vctrs_0.6.4 generics_0.1.3 htmltools_0.5.7 yaml_2.3.7 \n[13] utf8_1.2.4 rlang_1.1.2 e1071_1.7-13 pillar_1.9.0 \n[17] glue_1.6.2 withr_2.5.2 DBI_1.1.3 lifecycle_1.0.4 \n[21] munsell_0.5.0 gtable_0.3.4 htmlwidgets_1.6.3 codetools_0.2-19 \n[25] evaluate_0.23 labeling_0.4.3 forcats_1.0.0 fastmap_1.1.1 \n[29] class_7.3-21 fansi_1.0.5 optmatch_0.10.7 Rcpp_1.0.11 \n[33] checkmate_2.3.0 backports_1.4.1 scales_1.2.1 jsonlite_1.8.7 \n[37] farver_2.1.1 chk_0.9.1 hms_1.1.3 digest_0.6.33 \n[41] insight_0.19.6 cli_3.6.1 tools_4.2.3 magrittr_2.0.3 \n[45] proxy_0.4-27 tibble_3.2.1 crayon_1.5.2 pkgconfig_2.0.3 \n[49] rlemon_0.2.1 rmarkdown_2.25 R6_2.5.1 compiler_4.2.3" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] WeightIt_0.14.2 boot_1.3-28.1 MatchIt_4.5.5 \n [4] sandwich_3.0-2 truncnorm_1.0-9 tableone_0.13.2 \n [7] survey_4.2-1 survival_3.5-3 Matrix_1.6-3 \n[10] MASS_7.3-58.2 marginaleffects_0.16.0 lmtest_0.9-40 \n[13] zoo_1.8-12 knitr_1.45 ggplot2_3.4.4 \n[16] data.table_1.14.8 cobalt_4.5.2 dplyr_1.1.4 \n\nloaded via a namespace (and not attached):\n [1] tidyselect_1.2.0 xfun_0.41 mitools_2.4 haven_2.5.3 \n [5] splines_4.2.3 lattice_0.20-45 labelled_2.12.0 colorspace_2.1-0 \n [9] vctrs_0.6.4 generics_0.1.3 htmltools_0.5.7 yaml_2.3.7 \n[13] utf8_1.2.4 rlang_1.1.2 e1071_1.7-13 pillar_1.9.0 \n[17] glue_1.6.2 withr_2.5.2 DBI_1.1.3 lifecycle_1.0.4 \n[21] munsell_0.5.0 gtable_0.3.4 htmlwidgets_1.6.3 codetools_0.2-19 \n[25] evaluate_0.23 labeling_0.4.3 forcats_1.0.0 fastmap_1.1.1 \n[29] class_7.3-21 fansi_1.0.5 optmatch_0.10.7 Rcpp_1.0.11 \n[33] checkmate_2.3.0 backports_1.4.1 scales_1.3.0 jsonlite_1.8.7 \n[37] farver_2.1.1 chk_0.9.1 hms_1.1.3 digest_0.6.33 \n[41] insight_0.19.6 cli_3.6.1 tools_4.2.3 magrittr_2.0.3 \n[45] proxy_0.4-27 tibble_3.2.1 crayon_1.5.2 pkgconfig_2.0.3 \n[49] rlemon_0.2.1 rmarkdown_2.25 R6_2.5.1 compiler_4.2.3" }, { "objectID": "chapter_06.html#references", @@ -158,7 +158,7 @@ "href": "chapter_07.html#version-info", "title": "4  Effect Modification Analysis within the Propensity score Framework", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] interactions_1.1.5 survey_4.2-1 survival_3.5-3 Matrix_1.6-3 \n [5] interactionR_0.1.6 simcausal_0.5.6 scales_1.2.1 ggplot2_3.4.4 \n [9] xtable_1.8-4 dplyr_1.1.4 kableExtra_1.3.4 knitr_1.45 \n[13] cowplot_1.1.1 broom_1.0.5 MatchIt_4.5.5 jtools_2.2.2 \n[17] sandwich_3.0-2 lmtest_0.9-40 zoo_1.8-12 optmatch_0.10.7 \n[21] WeightIt_0.14.2 cobalt_4.5.2 table1_1.4.3 \n\nloaded via a namespace (and not attached):\n [1] fontquiver_0.2.1 webshot_0.5.5 httr_1.4.7 \n [4] tools_4.2.3 backports_1.4.1 utf8_1.2.4 \n [7] R6_2.5.1 DBI_1.1.3 colorspace_2.1-0 \n[10] withr_2.5.2 tidyselect_1.2.0 curl_5.1.0 \n[13] compiler_4.2.3 textshaping_0.3.7 cli_3.6.1 \n[16] rvest_1.0.3 expm_0.999-7 flextable_0.9.4 \n[19] xml2_1.3.5 officer_0.6.3 fontBitstreamVera_0.1.1\n[22] labeling_0.4.3 mvtnorm_1.2-3 askpass_1.2.0 \n[25] systemfonts_1.0.5 stringr_1.5.1 digest_0.6.33 \n[28] rmarkdown_2.25 svglite_2.1.2 gfonts_0.2.0 \n[31] pkgconfig_2.0.3 htmltools_0.5.7 highr_0.10 \n[34] fastmap_1.1.1 htmlwidgets_1.6.3 rlang_1.1.2 \n[37] rstudioapi_0.15.0 httpcode_0.3.0 shiny_1.8.0 \n[40] farver_2.1.1 generics_0.1.3 jsonlite_1.8.7 \n[43] car_3.1-2 zip_2.3.0 magrittr_2.0.3 \n[46] Formula_1.2-5 Rcpp_1.0.11 munsell_0.5.0 \n[49] fansi_1.0.5 abind_1.4-5 gdtools_0.3.4 \n[52] lifecycle_1.0.4 chk_0.9.1 stringi_1.8.2 \n[55] yaml_2.3.7 carData_3.0-5 promises_1.2.1 \n[58] crayon_1.5.2 lattice_0.20-45 splines_4.2.3 \n[61] pander_0.6.5 pillar_1.9.0 uuid_1.1-1 \n[64] igraph_1.5.1 codetools_0.2-19 crul_1.4.0 \n[67] glue_1.6.2 evaluate_0.23 msm_1.7.1 \n[70] mitools_2.4 fontLiberation_0.1.0 data.table_1.14.8 \n[73] vctrs_0.6.4 httpuv_1.6.12 gtable_0.3.4 \n[76] openssl_2.1.1 purrr_1.0.2 tidyr_1.3.0 \n[79] assertthat_0.2.1 xfun_0.41 mime_0.12 \n[82] later_1.3.1 ragg_1.2.6 viridisLite_0.4.2 \n[85] tibble_3.2.1 ellipsis_0.3.2 rlemon_0.2.1" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] interactions_1.1.5 survey_4.2-1 survival_3.5-3 Matrix_1.6-3 \n [5] interactionR_0.1.6 simcausal_0.5.6 scales_1.3.0 ggplot2_3.4.4 \n [9] xtable_1.8-4 dplyr_1.1.4 kableExtra_1.3.4 knitr_1.45 \n[13] cowplot_1.1.1 broom_1.0.5 MatchIt_4.5.5 jtools_2.2.2 \n[17] sandwich_3.0-2 lmtest_0.9-40 zoo_1.8-12 optmatch_0.10.7 \n[21] WeightIt_0.14.2 cobalt_4.5.2 table1_1.4.3 \n\nloaded via a namespace (and not attached):\n [1] fontquiver_0.2.1 webshot_0.5.5 httr_1.4.7 \n [4] tools_4.2.3 backports_1.4.1 utf8_1.2.4 \n [7] R6_2.5.1 DBI_1.1.3 colorspace_2.1-0 \n[10] withr_2.5.2 tidyselect_1.2.0 curl_5.1.0 \n[13] compiler_4.2.3 textshaping_0.3.7 cli_3.6.1 \n[16] rvest_1.0.3 expm_0.999-7 flextable_0.9.4 \n[19] xml2_1.3.5 officer_0.6.3 fontBitstreamVera_0.1.1\n[22] labeling_0.4.3 mvtnorm_1.2-4 askpass_1.2.0 \n[25] systemfonts_1.0.5 stringr_1.5.1 digest_0.6.33 \n[28] rmarkdown_2.25 svglite_2.1.2 gfonts_0.2.0 \n[31] pkgconfig_2.0.3 htmltools_0.5.7 highr_0.10 \n[34] fastmap_1.1.1 htmlwidgets_1.6.3 rlang_1.1.2 \n[37] rstudioapi_0.15.0 httpcode_0.3.0 shiny_1.8.0 \n[40] farver_2.1.1 generics_0.1.3 jsonlite_1.8.7 \n[43] car_3.1-2 zip_2.3.0 magrittr_2.0.3 \n[46] Formula_1.2-5 Rcpp_1.0.11 munsell_0.5.0 \n[49] fansi_1.0.5 abind_1.4-5 gdtools_0.3.4 \n[52] lifecycle_1.0.4 chk_0.9.1 stringi_1.8.2 \n[55] yaml_2.3.7 carData_3.0-5 promises_1.2.1 \n[58] crayon_1.5.2 lattice_0.20-45 splines_4.2.3 \n[61] pander_0.6.5 pillar_1.9.0 uuid_1.1-1 \n[64] igraph_1.5.1 codetools_0.2-19 crul_1.4.0 \n[67] glue_1.6.2 evaluate_0.23 msm_1.7.1 \n[70] mitools_2.4 fontLiberation_0.1.0 data.table_1.14.8 \n[73] vctrs_0.6.4 httpuv_1.6.12 gtable_0.3.4 \n[76] openssl_2.1.1 purrr_1.0.2 tidyr_1.3.0 \n[79] assertthat_0.2.1 xfun_0.41 mime_0.12 \n[82] later_1.3.1 ragg_1.2.6 viridisLite_0.4.2 \n[85] tibble_3.2.1 ellipsis_0.3.2 rlemon_0.2.1" }, { "objectID": "chapter_07.html#references", @@ -200,7 +200,7 @@ "href": "chapter_09.html#version-info", "title": "5  Dealing with missing data", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] ranger_0.16.0 ggmice_0.1.0 missForest_1.5 \n [4] mice_3.16.0 marginaleffects_0.16.0 survey_4.2-1 \n [7] survival_3.5-3 Matrix_1.6-3 cobalt_4.5.2 \n[10] sandwich_3.0-2 PSweight_1.1.8 WeightIt_0.14.2 \n[13] MatchThem_1.1.0 MatchIt_4.5.5 optmatch_0.10.7 \n[16] see_0.8.1 naniar_1.0.0 ggpubr_0.6.0 \n[19] ggplot2_3.4.4 mixgb_1.0.2 truncnorm_1.0-9 \n[22] MASS_7.3-58.2 tidyr_1.3.0 dplyr_1.1.4 \n[25] data.table_1.14.8 table1_1.4.3 kableExtra_1.3.4 \n\nloaded via a namespace (and not attached):\n [1] minqa_1.2.6 colorspace_2.1-0 ggsignif_0.6.4 \n [4] visdat_0.6.0 rstudioapi_0.15.0 farver_2.1.1 \n [7] fansi_1.0.5 xml2_1.3.5 codetools_0.2-19 \n[10] splines_4.2.3 knitr_1.45 itertools_0.1-3 \n[13] Formula_1.2-5 jsonlite_1.8.7 nloptr_2.0.3 \n[16] broom_1.0.5 compiler_4.2.3 httr_1.4.7 \n[19] backports_1.4.1 RcppZiggurat_0.1.6 fastmap_1.1.1 \n[22] cli_3.6.1 htmltools_0.5.7 tools_4.2.3 \n[25] gtable_0.3.4 glue_1.6.2 doRNG_1.8.6 \n[28] Rcpp_1.0.11 carData_3.0-5 SuperLearner_2.0-28.1\n[31] vctrs_0.6.4 svglite_2.1.2 nlme_3.1-162 \n[34] iterators_1.0.14 insight_0.19.6 xfun_0.41 \n[37] stringr_1.5.1 lme4_1.1-35.1 rvest_1.0.3 \n[40] lifecycle_1.0.4 rngtools_1.5.2 rstatix_0.7.2 \n[43] pan_1.9 zoo_1.8-12 scales_1.2.1 \n[46] rlemon_0.2.1 parallel_4.2.3 RColorBrewer_1.1-3 \n[49] yaml_2.3.7 gridExtra_2.3 UpSetR_1.4.0 \n[52] rpart_4.1.19 gam_1.22-2 stringi_1.8.2 \n[55] foreach_1.5.2 randomForest_4.7-1.1 checkmate_2.3.0 \n[58] boot_1.3-28.1 shape_1.4.6 rlang_1.1.2 \n[61] pkgconfig_2.0.3 systemfonts_1.0.5 evaluate_0.23 \n[64] lattice_0.20-45 purrr_1.0.2 chk_0.9.1 \n[67] labeling_0.4.3 htmlwidgets_1.6.3 cowplot_1.1.1 \n[70] Rfast_2.1.0 tidyselect_1.2.0 gbm_2.1.8.1 \n[73] plyr_1.8.9 magrittr_2.0.3 R6_2.5.1 \n[76] generics_0.1.3 nnls_1.5 mitml_0.4-5 \n[79] DBI_1.1.3 pillar_1.9.0 withr_2.5.2 \n[82] abind_1.4-5 nnet_7.3-18 tibble_3.2.1 \n[85] crayon_1.5.2 car_3.1-2 jomo_2.7-6 \n[88] xgboost_1.7.5.1 utf8_1.2.4 rmarkdown_2.25 \n[91] digest_0.6.33 webshot_0.5.5 numDeriv_2016.8-1.1 \n[94] RcppParallel_5.1.7 munsell_0.5.0 glmnet_4.1-8 \n[97] viridisLite_0.4.2 mitools_2.4" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] grid stats graphics grDevices utils datasets methods \n[8] base \n\nother attached packages:\n [1] ranger_0.16.0 ggmice_0.1.0 missForest_1.5 \n [4] mice_3.16.0 marginaleffects_0.16.0 survey_4.2-1 \n [7] survival_3.5-3 Matrix_1.6-3 cobalt_4.5.2 \n[10] sandwich_3.0-2 PSweight_1.1.8 WeightIt_0.14.2 \n[13] MatchThem_1.1.0 MatchIt_4.5.5 optmatch_0.10.7 \n[16] see_0.8.1 naniar_1.0.0 ggpubr_0.6.0 \n[19] ggplot2_3.4.4 mixgb_1.0.2 truncnorm_1.0-9 \n[22] MASS_7.3-58.2 tidyr_1.3.0 dplyr_1.1.4 \n[25] data.table_1.14.8 table1_1.4.3 kableExtra_1.3.4 \n\nloaded via a namespace (and not attached):\n [1] minqa_1.2.6 colorspace_2.1-0 ggsignif_0.6.4 \n [4] visdat_0.6.0 rstudioapi_0.15.0 farver_2.1.1 \n [7] fansi_1.0.5 xml2_1.3.5 codetools_0.2-19 \n[10] splines_4.2.3 knitr_1.45 itertools_0.1-3 \n[13] Formula_1.2-5 jsonlite_1.8.7 nloptr_2.0.3 \n[16] broom_1.0.5 compiler_4.2.3 httr_1.4.7 \n[19] backports_1.4.1 RcppZiggurat_0.1.6 fastmap_1.1.1 \n[22] cli_3.6.1 htmltools_0.5.7 tools_4.2.3 \n[25] gtable_0.3.4 glue_1.6.2 doRNG_1.8.6 \n[28] Rcpp_1.0.11 carData_3.0-5 SuperLearner_2.0-28.1\n[31] vctrs_0.6.4 svglite_2.1.2 nlme_3.1-162 \n[34] iterators_1.0.14 insight_0.19.6 xfun_0.41 \n[37] stringr_1.5.1 lme4_1.1-35.1 rvest_1.0.3 \n[40] lifecycle_1.0.4 rngtools_1.5.2 rstatix_0.7.2 \n[43] pan_1.9 zoo_1.8-12 scales_1.3.0 \n[46] rlemon_0.2.1 parallel_4.2.3 RColorBrewer_1.1-3 \n[49] yaml_2.3.7 gridExtra_2.3 UpSetR_1.4.0 \n[52] rpart_4.1.19 gam_1.22-2 stringi_1.8.2 \n[55] foreach_1.5.2 randomForest_4.7-1.1 checkmate_2.3.0 \n[58] boot_1.3-28.1 shape_1.4.6 rlang_1.1.2 \n[61] pkgconfig_2.0.3 systemfonts_1.0.5 evaluate_0.23 \n[64] lattice_0.20-45 purrr_1.0.2 chk_0.9.1 \n[67] labeling_0.4.3 htmlwidgets_1.6.3 cowplot_1.1.1 \n[70] Rfast_2.1.0 tidyselect_1.2.0 gbm_2.1.8.1 \n[73] plyr_1.8.9 magrittr_2.0.3 R6_2.5.1 \n[76] generics_0.1.3 nnls_1.5 mitml_0.4-5 \n[79] DBI_1.1.3 pillar_1.9.0 withr_2.5.2 \n[82] abind_1.4-5 nnet_7.3-18 tibble_3.2.1 \n[85] crayon_1.5.2 car_3.1-2 jomo_2.7-6 \n[88] xgboost_1.7.5.1 utf8_1.2.4 rmarkdown_2.25 \n[91] digest_0.6.33 webshot_0.5.5 numDeriv_2016.8-1.1 \n[94] RcppParallel_5.1.7 munsell_0.5.0 glmnet_4.1-8 \n[97] viridisLite_0.4.2 mitools_2.4" }, { "objectID": "chapter_09.html#references", @@ -228,14 +228,14 @@ "href": "chapter_10.html#network-meta-analysis-of-clinical-trials", "title": "6  Systematic review and meta-analysis of Real-World Evidence", "section": "6.3 Network meta-analysis of clinical trials", - "text": "6.3 Network meta-analysis of clinical trials\nWe here use the R packages netmeta for conducting a frequentist network meta-analysis. A detailed tutorial on the use of netmeta is available from the book Doing Meta-Analysis with R: A Hands-On Guide.\n\n6.3.1 Interventions for coronavirus disease 2019\nWe here consider data from a study which aimed to assess the comparative effectiveness of remdesivir and tocilizumab for reducing mortality in hospitalised COVID-19 patients. 80 trials were identified from two published network meta-analyses (Selvarajan et al. 2022), (Siemieniuk et al. 2020), a living COVID-19 trial database (COVID-NMA Initiative) [Covid-NMA.com], and a clinical trial database [clinicaltrials.gov]. Trials were included in this study if the patient population included hospitalized COVID-19 patients, active treatment was remdesivir or tocilizumab, comparator treatment was placebo or standard care, short-term mortality data was available, and the trial was published. 21 trials were included. For included trials, a risk of bias score was extracted from the COVID-NMA Initiative.\n\n\n\n\n\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\n\n\n\n\nAder\nREM\nSTD\n34\n414\n37\n418\n\n\nBeigel (ACTT-1)\nREM\nSTD\n59\n541\n77\n521\n\n\nBroman\nTOCI\nSTD\n1\n57\n0\n29\n\n\nCriner\nREM\nSTD\n4\n384\n4\n200\n\n\nDeclerq (COV-AID)\nTOCI\nSTD\n10\n81\n9\n74\n\n\nGordon (REMAP-CAP)\nTOCI\nSTD\n83\n353\n116\n358\n\n\nHermine (CORIMUNO)\nTOCI\nSTD\n7\n63\n8\n67\n\n\nHorby (RECOVERY)\nTOCI\nSTD\n621\n2022\n729\n2094\n\n\nIslam\nREM\nSTD\n0\n30\n0\n30\n\n\nMahajan\nREM\nSTD\n5\n34\n3\n36\n\n\nPan (WHO Solidarity)\nREM\nSTD\n602\n4146\n643\n4129\n\n\nRosas (COVACTA)\nTOCI\nSTD\n58\n294\n28\n144\n\n\nRutgers\nTOCI\nSTD\n21\n174\n34\n180\n\n\nSalama (EMPACTA)\nTOCI\nSTD\n26\n249\n11\n128\n\n\nSalvarani\nTOCI\nSTD\n2\n60\n1\n63\n\n\nSoin (COVINTOC)\nTOCI\nSTD\n11\n92\n15\n88\n\n\nSpinner\nREM\nSTD\n5\n384\n4\n200\n\n\nStone (BACC-BAY)\nTOCI\nSTD\n9\n161\n4\n82\n\n\nTalaschian\nTOCI\nSTD\n5\n17\n4\n19\n\n\nVeiga (TOCIBRAS)\nTOCI\nSTD\n14\n65\n6\n64\n\n\nWang\nREM\nSTD\n22\n158\n10\n78\n\n\n\n\n\n\n\nThe corresponding network is displayed below:\n\n\n\n\n\nEvidence network of the 21 coronavirus-19 trials\n\n\n\n\nWe use the following command to calculate the log odds ratios and corresponding standard errors for each study:\n\ncovid <- pairwise(treat = treat, \n event = event, \n n = n, \n studlab = studlab, \n sm = \"OR\")\nhead(covid)\n\n\n\n\n\n\nTE\nseTE\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\nincr\nallstudies\n\n\n\n\n-0.0819293\n0.2483849\nAder\nREM\nSTD\n34\n414\n37\n418\n0.0\nFALSE\n\n\n-0.3483875\n0.1851030\nBeigel (ACTT-1)\nREM\nSTD\n59\n541\n77\n521\n0.0\nFALSE\n\n\n0.4487619\n1.6487159\nBroman\nTOCI\nSTD\n1\n57\n0\n29\n0.5\nFALSE\n\n\n-0.6620566\n0.7125543\nCriner\nREM\nSTD\n4\n384\n4\n200\n0.0\nFALSE\n\n\n0.0170679\n0.4904898\nDeclerq (COV-AID)\nTOCI\nSTD\n10\n81\n9\n74\n0.0\nFALSE\n\n\n-0.4442338\n0.1688337\nGordon (REMAP-CAP)\nTOCI\nSTD\n83\n353\n116\n358\n0.0\nFALSE\n\n\n\n\n\n\n\nBelow, we conduct a random effects network meta-analysis where we consider standard care (STD) as the control treatment. Note that we have one study where zero cell counts occur, this study will not contribute to the NMA as the log odds ratio and its standard error cannot be determined.\n\nNMA.covid <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = covid, sm = \"OR\", ref = \"STD\",\n comb.random = TRUE, common = FALSE, warn = FALSE)\nNMA.covid \n\nNumber of studies: k = 20\nNumber of pairwise comparisons: m = 20\nNumber of treatments: n = 3\nNumber of designs: d = 2\n\nRandom effects model\n\nTreatment estimate (sm = 'OR', comparison: other treatments vs 'STD'):\n OR 95%-CI z p-value\nREM 0.8999 [0.8067; 1.0039] -1.89 0.0588\nSTD . . . .\nTOCI 0.8301 [0.7434; 0.9268] -3.31 0.0009\n\nQuantifying heterogeneity / inconsistency:\ntau^2 = 0; tau = 0; I^2 = 0% [0.0%; 48.9%]\n\nTests of heterogeneity (within designs) and inconsistency (between designs):\n Q d.f. p-value\nTotal 16.38 18 0.5663\nWithin designs 16.38 18 0.5663\nBetween designs 0.00 0 --\n\n\nA league table of the treatment effect estimates is given below:\n\nnetleague(NMA.covid)\n\nLeague table (random effects model):\n \n REM 0.8999 [0.8067; 1.0039] .\n 0.8999 [0.8067; 1.0039] STD 1.2047 [1.0789; 1.3451]\n 1.0842 [0.9282; 1.2663] 1.2047 [1.0789; 1.3451] TOCI\n\n\nWe can also present the results in a forest plot:\n\n\n\n\n\nWe now consider a Bayesian random effects network meta-analysis that analyzes the observed event counts using a binomial link function.\n\nbdata <- data.frame(study = studlab,\n treatment = treat,\n responders = event,\n sampleSize = n)\n\nnetwork <- mtc.network(data.ab = bdata)\n\nmodel <- mtc.model(network,\n likelihood = \"binom\",\n link = \"log\",\n linearModel = \"random\",\n n.chain = 3)\n\n\n# Adaptation\nmcmc1 <- mtc.run(model, n.adapt = 1000, n.iter = 1000, thin = 10)\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 42\n Unobserved stochastic nodes: 45\n Total graph size: 930\n\nInitializing model\n\n# Sampling\nmcmc2 <- mtc.run(model, n.adapt = 10000, n.iter = 100000, thin = 10)\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 42\n Unobserved stochastic nodes: 45\n Total graph size: 930\n\nInitializing model\n\n\nWe can extract the pooled treatment effect estimates from the posterior distribution. When using STD as control group, we have:\n\nsummary(relative.effect(mcmc2, t1 = \"STD\"))\n\n\nResults on the Log Risk Ratio scale\n\nIterations = 10010:110000\nThinning interval = 10 \nNumber of chains = 3 \nSample size per chain = 10000 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nd.STD.REM -0.1066 0.09616 0.0005552 0.0008684\nd.STD.TOCI -0.1119 0.08161 0.0004712 0.0008437\nsd.d 0.1095 0.08823 0.0005094 0.0018423\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nd.STD.REM -0.311484 -0.15787 -0.10301 -0.05115 0.08329\nd.STD.TOCI -0.256815 -0.16239 -0.11937 -0.06918 0.07421\nsd.d 0.003311 0.04062 0.09003 0.15741 0.32930\n\n\nThe corresponding odds ratios are as follows:\n\n\n\n\n\nComparison\n95% CrI\n\n\n\n\nREM vs. STD\n0.9 (0.73; 1.09)\n\n\nTOCI vs. STD\n0.89 (0.77; 1.08)\n\n\nREM vs. TOCI\n1.02 (0.75; 1.27)\n\n\n\n\n\n\n\nFinally, we expand the COVID-19 network with trials investigating the effectiveness of hydroxychloroquine (HCQ), lopinavir/ritonavir (LOPI), dexamethasone (DEXA) or interferon-\\(\\beta\\) (INTB) (Selvarajan et al. 2022). The corresponding network is displayed below:\n\n\n\n\n\nEvidence network of the 33 coronavirus-19 trials\n\n\n\n\nWe conducted a random effects network meta-analysis, results are depicted below:\n\n\nNumber of studies: k = 33\nNumber of pairwise comparisons: m = 33\nNumber of treatments: n = 7\nNumber of designs: d = 6\n\nRandom effects model\n\nTreatment estimate (sm = 'OR', comparison: other treatments vs 'STD'):\n OR 95%-CI z p-value 95%-PI\nDEXA 0.8557 [0.7558; 0.9688] -2.46 0.0139 [0.7463; 0.9812]\nHCQ 1.1809 [0.8934; 1.5610] 1.17 0.2428 [0.8786; 1.5872]\nINTB 1.1606 [0.9732; 1.3841] 1.66 0.0973 [0.9604; 1.4026]\nLOPI 1.0072 [0.8906; 1.1392] 0.11 0.9085 [0.8794; 1.1537]\nREM 0.8983 [0.8014; 1.0070] -1.84 0.0658 [0.7913; 1.0199]\nSTD . . . . .\nTOCI 0.8304 [0.7410; 0.9306] -3.20 0.0014 [0.7316; 0.9426]\n\nQuantifying heterogeneity / inconsistency:\ntau^2 = 0.0004; tau = 0.0205; I^2 = 0.6% [0.0%; 42.3%]\n\nTests of heterogeneity (within designs) and inconsistency (between designs):\n Q d.f. p-value\nTotal 27.18 27 0.4543\nWithin designs 27.18 27 0.4543\nBetween designs 0.00 0 --\n\n\nWe can calculate the P score for each treatment as follows:\n\nnetrank(NMA.covidf)\n\n P-score\nTOCI 0.9070\nDEXA 0.8357\nREM 0.7143\nSTD 0.4027\nLOPI 0.3899\nHCQ 0.1336\nINTB 0.1166\n\n\n\n\n6.3.2 Pharmacologic treatments for chronic obstructive pulmonary disease\nIn this example, we consider the resuls from a systematic review of randomized controlled trials on pharmacologic treatments for chronic obstructive pulmonary disease (Baker, Baker, and Coleman 2009). The primary outcome, occurrence of one or more episodes of COPD exacerbation, is binary (yes / no). For this outcome, five drug treatments (fluticasone, budesonide, salmeterol, formoterol, tiotropium) and two combinations (fluticasone + salmeterol, budesonide + formoterol) were compared to placebo. The authors considered the two combinations as separate treatments instead of evaluating the individual components.\n\ndata(Baker2009)\n\n\n\n\n\n\nstudy\nyear\nid\ntreatment\nexac\ntotal\n\n\n\n\nLlewellyn-Jones 1996\n1996\n1\nFluticasone\n0\n8\n\n\nLlewellyn-Jones 1996\n1996\n1\nPlacebo\n3\n8\n\n\nBoyd 1997\n1997\n2\nSalmeterol\n47\n229\n\n\nBoyd 1997\n1997\n2\nPlacebo\n59\n227\n\n\nPaggiaro 1998\n1998\n3\nFluticasone\n45\n142\n\n\nPaggiaro 1998\n1998\n3\nPlacebo\n51\n139\n\n\n\n\n\n\n\n\nBaker <- pairwise(treat = treatment,\n event = exac,\n n = total,\n studlab = id,\n sm = \"OR\",\n data = Baker2009)\n\nNMA.COPD <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = Baker, sm = \"OR\", ref = \"Placebo\",\n comb.random = TRUE)\n\nWarning: Comparisons with missing TE / seTE or zero seTE not considered in\nnetwork meta-analysis.\n\n\nComparisons not considered in network meta-analysis:\n studlab treat1 treat2 TE seTE\n 39 Fluticasone+Salmeterol Placebo NA NA\n 39 Fluticasone+Salmeterol Salmeterol NA NA\n 39 Salmeterol Placebo NA NA\n\nnetgraph(NMA.COPD)\n\n\n\n\n\n\n6.3.3 Advanced Therapies for Ulcerative Colitis\nIn this example, we consider a systematic literature review of Phase 3 randomized controlled trials investigating the following advanced therapies: infliximab, adalimumab, vedolizumab, golimumab, tofacitinib, ustekinumab, filgotinib, ozanimod, and upadacitinib (Panaccione et al. 2023). This review included 48 RCTs, from which 23 were found eligible for inclusion in a network meta-analysis. The included RCT populations were largely comparable in their baseline characteristics, though some heterogeneity was noted in weight, disease duration, extent of disease, and concomitant medications. A risk of bias assessment showed a low risk of bias for all included RCTs, which were all industry sponsored.\nWe here focus on the synthesis of 18 trials that contributed efficacy data for induction in bio-naive populations. The following FDA- and/or EMA-approved biologic or SMD doses were investigated:\n\nAdalimumab subcutaneous 160 mg at week 0, 80 mg at week 2, and 40 mg at week 4 (ADA160/80)\nInfliximab intravenous 5 mg/kg (INF5) at weeks 0, 2, and 6 then every 8 weeks\nInfliximab intravenous 10 mg/kg (INF10) at weeks 0, 2, and 6 then every 8 weeks\nFilgotinib oral 100 mg once daily (FIL100)\nFilgotinib oral 200 mg once daily (FIL200)\nGolimumab subcutaneous 200 mg at week 0 and 100 mg at week 2 (GOL200/100)\nOzanimod oral 0.23 mg once daily for 4 days, 0.46 mg once daily for 3 days, then 0.92 mg once daily (OZA0.92)\nTofacitinib oral 10 mg twice daily for 8 weeks (TOF10)\nUpadacitinib oral 45 mg once daily for 8 weeks (UPA45)\nUstekinumab intravenous 6 mg/kg at week 0 (UST6)\nVedolizumab intravenous 300 mg at weeks 0, 2, and 6 (VED300)\n\nThe reference treatment is placebo (PBO).\n\n\n\nEfficacy outcomes (i.e., clinical remission) data of induction bio-naïve populations \n\n\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\n\n\n\n\nACT-1\nINF10\nINF5\n39\n122\n47\n121\n\n\nACT-1\nINF10\nPBO\n39\n122\n18\n121\n\n\nACT-1\nINF5\nPBO\n47\n121\n18\n121\n\n\nACT-2\nINF10\nINF5\n33\n120\n41\n121\n\n\nACT-2\nINF10\nPBO\n33\n120\n7\n123\n\n\nACT-2\nINF5\nPBO\n41\n121\n7\n123\n\n\nGEMINI 1\nVED300\nPBO\n30\n130\n5\n76\n\n\nJapic CTI-060298\nINF5\nPBO\n21\n104\n11\n104\n\n\nJiang 2015\nINF5\nPBO\n22\n41\n9\n41\n\n\nM10-447\nADA160/80\nPBO\n9\n90\n11\n96\n\n\nNCT01551290\nINF5\nPBO\n11\n50\n5\n49\n\n\nNCT02039505\nVED300\nPBO\n22\n79\n6\n41\n\n\nOCTAVE 1\nTOF10\nPBO\n56\n222\n9\n57\n\n\nOCTAVE 2\nTOF10\nPBO\n43\n195\n4\n47\n\n\nPURSUIT-SC\nGOL200/100\nPBO\n45\n253\n16\n251\n\n\nSELECTION\nFIL100\nFIL200\n47\n277\n60\n245\n\n\nSELECTION\nFIL100\nPBO\n47\n277\n17\n137\n\n\nSELECTION\nFIL200\nPBO\n60\n245\n17\n137\n\n\nTRUE NORTH\nOZA0.92\nPBO\n66\n299\n10\n151\n\n\nU-ACCOMPLISH\nUPA45\nPBO\n54\n166\n3\n81\n\n\nU-ACHIEVE Study 2\nUPA45\nPBO\n41\n145\n4\n72\n\n\nULTRA-1\nADA160/80\nPBO\n24\n130\n12\n130\n\n\nULTRA-2\nADA160/80\nPBO\n32\n150\n16\n145\n\n\nUNIFI\nUST6\nPBO\n27\n147\n15\n151\n\n\n\n\n\n\n\nThe corresponding network is displayed below:\n\n\n\n\n\nEvidence network of 18 trials that contributed efficacy data for induction in bio-naive populations\n\n\n\n\nBelow, we conduct a random effects network meta-analysis of the reported study effects (expressed as odds ratio) and consider placebo (treat = \"PBO\") as the control treatment.\n\nNMA.uc <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = UlcerativeColitis, sm = \"OR\", \n ref = \"PBO\", common = FALSE, comb.random = TRUE)\nNMA.uc\n\nAll treatments except FIL100 and UST6 are significantly more efficacious than PBO at inducing clinical remission. We can now estimate the probabilities of each treatment being at each possible rank and the SUCRAs (Surface Under the Cumulative RAnking curve):\n\nsucra.uc <- rankogram(NMA.uc, nsim = 100, random = TRUE, common = FALSE, \n small.values = \"undesirable\")\n\n# Exctract the SUCRA values\nsucra.uc$ranking.random\n\n ADA160/80 FIL100 FIL200 GOL200/100 INF10 INF5 OZA0.92 \n0.25363636 0.19090909 0.41909091 0.63181818 0.61454545 0.75909091 0.75545455 \n PBO TOF10 UPA45 UST6 VED300 \n0.01636364 0.38545455 0.97818182 0.36636364 0.62909091 \n\n\nThese results indicate that 97.8% of the evaluated treatments are worse than UPA45." + "text": "6.3 Network meta-analysis of clinical trials\nWe here use the R packages netmeta for conducting a frequentist network meta-analysis. A detailed tutorial on the use of netmeta is available from the book Doing Meta-Analysis with R: A Hands-On Guide.\n\n6.3.1 Interventions for coronavirus disease 2019\nWe here consider data from a study which aimed to assess the comparative effectiveness of remdesivir and tocilizumab for reducing mortality in hospitalised COVID-19 patients. 80 trials were identified from two published network meta-analyses (Selvarajan et al. 2022), (Siemieniuk et al. 2020), a living COVID-19 trial database (COVID-NMA Initiative) [Covid-NMA.com], and a clinical trial database [clinicaltrials.gov]. Trials were included in this study if the patient population included hospitalized COVID-19 patients, active treatment was remdesivir or tocilizumab, comparator treatment was placebo or standard care, short-term mortality data was available, and the trial was published. 21 trials were included. For included trials, a risk of bias score was extracted from the COVID-NMA Initiative.\n\n\n\n\n\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\n\n\n\n\nAder\nREM\nSTD\n34\n414\n37\n418\n\n\nBeigel (ACTT-1)\nREM\nSTD\n59\n541\n77\n521\n\n\nBroman\nTOCI\nSTD\n1\n57\n0\n29\n\n\nCriner\nREM\nSTD\n4\n384\n4\n200\n\n\nDeclerq (COV-AID)\nTOCI\nSTD\n10\n81\n9\n74\n\n\nGordon (REMAP-CAP)\nTOCI\nSTD\n83\n353\n116\n358\n\n\nHermine (CORIMUNO)\nTOCI\nSTD\n7\n63\n8\n67\n\n\nHorby (RECOVERY)\nTOCI\nSTD\n621\n2022\n729\n2094\n\n\nIslam\nREM\nSTD\n0\n30\n0\n30\n\n\nMahajan\nREM\nSTD\n5\n34\n3\n36\n\n\nPan (WHO Solidarity)\nREM\nSTD\n602\n4146\n643\n4129\n\n\nRosas (COVACTA)\nTOCI\nSTD\n58\n294\n28\n144\n\n\nRutgers\nTOCI\nSTD\n21\n174\n34\n180\n\n\nSalama (EMPACTA)\nTOCI\nSTD\n26\n249\n11\n128\n\n\nSalvarani\nTOCI\nSTD\n2\n60\n1\n63\n\n\nSoin (COVINTOC)\nTOCI\nSTD\n11\n92\n15\n88\n\n\nSpinner\nREM\nSTD\n5\n384\n4\n200\n\n\nStone (BACC-BAY)\nTOCI\nSTD\n9\n161\n4\n82\n\n\nTalaschian\nTOCI\nSTD\n5\n17\n4\n19\n\n\nVeiga (TOCIBRAS)\nTOCI\nSTD\n14\n65\n6\n64\n\n\nWang\nREM\nSTD\n22\n158\n10\n78\n\n\n\n\n\n\n\nThe corresponding network is displayed below:\n\n\n\n\n\nEvidence network of the 21 coronavirus-19 trials\n\n\n\n\nWe use the following command to calculate the log odds ratios and corresponding standard errors for each study:\n\ncovid <- pairwise(treat = treat, \n event = event, \n n = n, \n studlab = studlab, \n sm = \"OR\")\nhead(covid)\n\n\n\n\n\n\nTE\nseTE\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\nincr\nallstudies\n\n\n\n\n-0.0819293\n0.2483849\nAder\nREM\nSTD\n34\n414\n37\n418\n0.0\nFALSE\n\n\n-0.3483875\n0.1851030\nBeigel (ACTT-1)\nREM\nSTD\n59\n541\n77\n521\n0.0\nFALSE\n\n\n0.4487619\n1.6487159\nBroman\nTOCI\nSTD\n1\n57\n0\n29\n0.5\nFALSE\n\n\n-0.6620566\n0.7125543\nCriner\nREM\nSTD\n4\n384\n4\n200\n0.0\nFALSE\n\n\n0.0170679\n0.4904898\nDeclerq (COV-AID)\nTOCI\nSTD\n10\n81\n9\n74\n0.0\nFALSE\n\n\n-0.4442338\n0.1688337\nGordon (REMAP-CAP)\nTOCI\nSTD\n83\n353\n116\n358\n0.0\nFALSE\n\n\n\n\n\n\n\nBelow, we conduct a random effects network meta-analysis where we consider standard care (STD) as the control treatment. Note that we have one study where zero cell counts occur, this study will not contribute to the NMA as the log odds ratio and its standard error cannot be determined.\n\nNMA.covid <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = covid, sm = \"OR\", ref = \"STD\",\n comb.random = TRUE, common = FALSE, warn = FALSE)\nNMA.covid \n\nNumber of studies: k = 20\nNumber of pairwise comparisons: m = 20\nNumber of treatments: n = 3\nNumber of designs: d = 2\n\nRandom effects model\n\nTreatment estimate (sm = 'OR', comparison: other treatments vs 'STD'):\n OR 95%-CI z p-value\nREM 0.8999 [0.8067; 1.0039] -1.89 0.0588\nSTD . . . .\nTOCI 0.8301 [0.7434; 0.9268] -3.31 0.0009\n\nQuantifying heterogeneity / inconsistency:\ntau^2 = 0; tau = 0; I^2 = 0% [0.0%; 48.9%]\n\nTests of heterogeneity (within designs) and inconsistency (between designs):\n Q d.f. p-value\nTotal 16.38 18 0.5663\nWithin designs 16.38 18 0.5663\nBetween designs 0.00 0 --\n\n\nA league table of the treatment effect estimates is given below:\n\nnetleague(NMA.covid)\n\nLeague table (random effects model):\n \n REM 0.8999 [0.8067; 1.0039] .\n 0.8999 [0.8067; 1.0039] STD 1.2047 [1.0789; 1.3451]\n 1.0842 [0.9282; 1.2663] 1.2047 [1.0789; 1.3451] TOCI\n\n\nWe can also present the results in a forest plot:\n\n\n\n\n\nWe now consider a Bayesian random effects network meta-analysis that analyzes the observed event counts using a binomial link function.\n\nbdata <- data.frame(study = studlab,\n treatment = treat,\n responders = event,\n sampleSize = n)\n\nnetwork <- mtc.network(data.ab = bdata)\n\nmodel <- mtc.model(network,\n likelihood = \"binom\",\n link = \"log\",\n linearModel = \"random\",\n n.chain = 3)\n\n\n# Adaptation\nmcmc1 <- mtc.run(model, n.adapt = 1000, n.iter = 1000, thin = 10)\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 42\n Unobserved stochastic nodes: 45\n Total graph size: 930\n\nInitializing model\n\n# Sampling\nmcmc2 <- mtc.run(model, n.adapt = 10000, n.iter = 100000, thin = 10)\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 42\n Unobserved stochastic nodes: 45\n Total graph size: 930\n\nInitializing model\n\n\nWe can extract the pooled treatment effect estimates from the posterior distribution. When using STD as control group, we have:\n\nsummary(relative.effect(mcmc2, t1 = \"STD\"))\n\n\nResults on the Log Risk Ratio scale\n\nIterations = 10010:110000\nThinning interval = 10 \nNumber of chains = 3 \nSample size per chain = 10000 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nd.STD.REM -0.1078 0.09518 0.0005495 0.0008224\nd.STD.TOCI -0.1134 0.08176 0.0004721 0.0008231\nsd.d 0.1089 0.08673 0.0005007 0.0016185\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nd.STD.REM -0.312993 -0.15973 -0.10433 -0.05201 0.07768\nd.STD.TOCI -0.256518 -0.16362 -0.12185 -0.07333 0.07843\nsd.d 0.004741 0.04247 0.08995 0.15421 0.32497\n\n\nThe corresponding odds ratios are as follows:\n\n\n\n\n\nComparison\n95% CrI\n\n\n\n\nREM vs. STD\n0.9 (0.73; 1.08)\n\n\nTOCI vs. STD\n0.89 (0.77; 1.08)\n\n\nREM vs. TOCI\n1.02 (0.75; 1.26)\n\n\n\n\n\n\n\nFinally, we expand the COVID-19 network with trials investigating the effectiveness of hydroxychloroquine (HCQ), lopinavir/ritonavir (LOPI), dexamethasone (DEXA) or interferon-\\(\\beta\\) (INTB) (Selvarajan et al. 2022). The corresponding network is displayed below:\n\n\n\n\n\nEvidence network of the 33 coronavirus-19 trials\n\n\n\n\nWe conducted a random effects network meta-analysis, results are depicted below:\n\n\nNumber of studies: k = 33\nNumber of pairwise comparisons: m = 33\nNumber of treatments: n = 7\nNumber of designs: d = 6\n\nRandom effects model\n\nTreatment estimate (sm = 'OR', comparison: other treatments vs 'STD'):\n OR 95%-CI z p-value 95%-PI\nDEXA 0.8557 [0.7558; 0.9688] -2.46 0.0139 [0.7463; 0.9812]\nHCQ 1.1809 [0.8934; 1.5610] 1.17 0.2428 [0.8786; 1.5872]\nINTB 1.1606 [0.9732; 1.3841] 1.66 0.0973 [0.9604; 1.4026]\nLOPI 1.0072 [0.8906; 1.1392] 0.11 0.9085 [0.8794; 1.1537]\nREM 0.8983 [0.8014; 1.0070] -1.84 0.0658 [0.7913; 1.0199]\nSTD . . . . .\nTOCI 0.8304 [0.7410; 0.9306] -3.20 0.0014 [0.7316; 0.9426]\n\nQuantifying heterogeneity / inconsistency:\ntau^2 = 0.0004; tau = 0.0205; I^2 = 0.6% [0.0%; 42.3%]\n\nTests of heterogeneity (within designs) and inconsistency (between designs):\n Q d.f. p-value\nTotal 27.18 27 0.4543\nWithin designs 27.18 27 0.4543\nBetween designs 0.00 0 --\n\n\nWe can calculate the P score for each treatment as follows:\n\nnetrank(NMA.covidf)\n\n P-score\nTOCI 0.9070\nDEXA 0.8357\nREM 0.7143\nSTD 0.4027\nLOPI 0.3899\nHCQ 0.1336\nINTB 0.1166\n\n\n\n\n6.3.2 Pharmacologic treatments for chronic obstructive pulmonary disease\nIn this example, we consider the resuls from a systematic review of randomized controlled trials on pharmacologic treatments for chronic obstructive pulmonary disease (Baker, Baker, and Coleman 2009). The primary outcome, occurrence of one or more episodes of COPD exacerbation, is binary (yes / no). For this outcome, five drug treatments (fluticasone, budesonide, salmeterol, formoterol, tiotropium) and two combinations (fluticasone + salmeterol, budesonide + formoterol) were compared to placebo. The authors considered the two combinations as separate treatments instead of evaluating the individual components.\n\ndata(Baker2009)\n\n\n\n\n\n\nstudy\nyear\nid\ntreatment\nexac\ntotal\n\n\n\n\nLlewellyn-Jones 1996\n1996\n1\nFluticasone\n0\n8\n\n\nLlewellyn-Jones 1996\n1996\n1\nPlacebo\n3\n8\n\n\nBoyd 1997\n1997\n2\nSalmeterol\n47\n229\n\n\nBoyd 1997\n1997\n2\nPlacebo\n59\n227\n\n\nPaggiaro 1998\n1998\n3\nFluticasone\n45\n142\n\n\nPaggiaro 1998\n1998\n3\nPlacebo\n51\n139\n\n\n\n\n\n\n\n\nBaker <- pairwise(treat = treatment,\n event = exac,\n n = total,\n studlab = id,\n sm = \"OR\",\n data = Baker2009)\n\nNMA.COPD <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = Baker, sm = \"OR\", ref = \"Placebo\",\n comb.random = TRUE)\n\nWarning: Comparisons with missing TE / seTE or zero seTE not considered in\nnetwork meta-analysis.\n\n\nComparisons not considered in network meta-analysis:\n studlab treat1 treat2 TE seTE\n 39 Fluticasone+Salmeterol Placebo NA NA\n 39 Fluticasone+Salmeterol Salmeterol NA NA\n 39 Salmeterol Placebo NA NA\n\nnetgraph(NMA.COPD)\n\n\n\n\n\n\n6.3.3 Advanced Therapies for Ulcerative Colitis\nIn this example, we consider a systematic literature review of Phase 3 randomized controlled trials investigating the following advanced therapies: infliximab, adalimumab, vedolizumab, golimumab, tofacitinib, ustekinumab, filgotinib, ozanimod, and upadacitinib (Panaccione et al. 2023). This review included 48 RCTs, from which 23 were found eligible for inclusion in a network meta-analysis. The included RCT populations were largely comparable in their baseline characteristics, though some heterogeneity was noted in weight, disease duration, extent of disease, and concomitant medications. A risk of bias assessment showed a low risk of bias for all included RCTs, which were all industry sponsored.\nWe here focus on the synthesis of 18 trials that contributed efficacy data for induction in bio-naive populations. The following FDA- and/or EMA-approved biologic or SMD doses were investigated:\n\nAdalimumab subcutaneous 160 mg at week 0, 80 mg at week 2, and 40 mg at week 4 (ADA160/80)\nInfliximab intravenous 5 mg/kg (INF5) at weeks 0, 2, and 6 then every 8 weeks\nInfliximab intravenous 10 mg/kg (INF10) at weeks 0, 2, and 6 then every 8 weeks\nFilgotinib oral 100 mg once daily (FIL100)\nFilgotinib oral 200 mg once daily (FIL200)\nGolimumab subcutaneous 200 mg at week 0 and 100 mg at week 2 (GOL200/100)\nOzanimod oral 0.23 mg once daily for 4 days, 0.46 mg once daily for 3 days, then 0.92 mg once daily (OZA0.92)\nTofacitinib oral 10 mg twice daily for 8 weeks (TOF10)\nUpadacitinib oral 45 mg once daily for 8 weeks (UPA45)\nUstekinumab intravenous 6 mg/kg at week 0 (UST6)\nVedolizumab intravenous 300 mg at weeks 0, 2, and 6 (VED300)\n\nThe reference treatment is placebo (PBO).\n\n\n\nEfficacy outcomes (i.e., clinical remission) data of induction bio-naïve populations \n\n\nstudlab\ntreat1\ntreat2\nevent1\nn1\nevent2\nn2\n\n\n\n\nACT-1\nINF10\nINF5\n39\n122\n47\n121\n\n\nACT-1\nINF10\nPBO\n39\n122\n18\n121\n\n\nACT-1\nINF5\nPBO\n47\n121\n18\n121\n\n\nACT-2\nINF10\nINF5\n33\n120\n41\n121\n\n\nACT-2\nINF10\nPBO\n33\n120\n7\n123\n\n\nACT-2\nINF5\nPBO\n41\n121\n7\n123\n\n\nGEMINI 1\nVED300\nPBO\n30\n130\n5\n76\n\n\nJapic CTI-060298\nINF5\nPBO\n21\n104\n11\n104\n\n\nJiang 2015\nINF5\nPBO\n22\n41\n9\n41\n\n\nM10-447\nADA160/80\nPBO\n9\n90\n11\n96\n\n\nNCT01551290\nINF5\nPBO\n11\n50\n5\n49\n\n\nNCT02039505\nVED300\nPBO\n22\n79\n6\n41\n\n\nOCTAVE 1\nTOF10\nPBO\n56\n222\n9\n57\n\n\nOCTAVE 2\nTOF10\nPBO\n43\n195\n4\n47\n\n\nPURSUIT-SC\nGOL200/100\nPBO\n45\n253\n16\n251\n\n\nSELECTION\nFIL100\nFIL200\n47\n277\n60\n245\n\n\nSELECTION\nFIL100\nPBO\n47\n277\n17\n137\n\n\nSELECTION\nFIL200\nPBO\n60\n245\n17\n137\n\n\nTRUE NORTH\nOZA0.92\nPBO\n66\n299\n10\n151\n\n\nU-ACCOMPLISH\nUPA45\nPBO\n54\n166\n3\n81\n\n\nU-ACHIEVE Study 2\nUPA45\nPBO\n41\n145\n4\n72\n\n\nULTRA-1\nADA160/80\nPBO\n24\n130\n12\n130\n\n\nULTRA-2\nADA160/80\nPBO\n32\n150\n16\n145\n\n\nUNIFI\nUST6\nPBO\n27\n147\n15\n151\n\n\n\n\n\n\n\nThe corresponding network is displayed below:\n\n\n\n\n\nEvidence network of 18 trials that contributed efficacy data for induction in bio-naive populations\n\n\n\n\nBelow, we conduct a random effects network meta-analysis of the reported study effects (expressed as odds ratio) and consider placebo (treat = \"PBO\") as the control treatment.\n\nNMA.uc <- netmeta(TE = TE, seTE = seTE, treat1 = treat1, treat2 = treat2,\n studlab = studlab, data = UlcerativeColitis, sm = \"OR\", \n ref = \"PBO\", common = FALSE, comb.random = TRUE)\nNMA.uc\n\nAll treatments except FIL100 and UST6 are significantly more efficacious than PBO at inducing clinical remission. We can now estimate the probabilities of each treatment being at each possible rank and the SUCRAs (Surface Under the Cumulative RAnking curve):\n\nsucra.uc <- rankogram(NMA.uc, nsim = 100, random = TRUE, common = FALSE, \n small.values = \"undesirable\")\n\n# Exctract the SUCRA values\nsucra.uc$ranking.random\n\n ADA160/80 FIL100 FIL200 GOL200/100 INF10 INF5 OZA0.92 \n0.28727273 0.18909091 0.43909091 0.67363636 0.61818182 0.73909091 0.73090909 \n PBO TOF10 UPA45 UST6 VED300 \n0.01090909 0.39272727 0.98000000 0.31818182 0.62090909 \n\n\nThese results indicate that 98% of the evaluated treatments are worse than UPA45." }, { "objectID": "chapter_10.html#version-info", "href": "chapter_10.html#version-info", "title": "6  Systematic review and meta-analysis of Real-World Evidence", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] netmeta_2.8-2 meta_6.5-0 gemtc_1.0-2 coda_0.19-4 \n[5] dplyr_1.1.4 kableExtra_1.3.4\n\nloaded via a namespace (and not attached):\n [1] Rcpp_1.0.11 mvtnorm_1.2-3 svglite_2.1.2 \n [4] lattice_0.20-45 digest_0.6.33 utf8_1.2.4 \n [7] truncnorm_1.0-9 slam_0.1-50 R6_2.5.1 \n[10] plyr_1.8.9 magic_1.6-1 evaluate_0.23 \n[13] httr_1.4.7 ggplot2_3.4.4 highr_0.10 \n[16] pillar_1.9.0 rlang_1.1.2 rstudioapi_0.15.0 \n[19] minqa_1.2.6 nloptr_2.0.3 rjags_4-14 \n[22] Matrix_1.6-3 rmarkdown_2.25 mathjaxr_1.6-0 \n[25] splines_4.2.3 lme4_1.1-35.1 webshot_0.5.5 \n[28] stringr_1.5.1 htmlwidgets_1.6.3 igraph_1.5.1 \n[31] munsell_0.5.0 compiler_4.2.3 numDeriv_2016.8-1.1\n[34] xfun_0.41 pkgconfig_2.0.3 systemfonts_1.0.5 \n[37] Rglpk_0.6-5 htmltools_0.5.7 tidyselect_1.2.0 \n[40] tibble_3.2.1 codetools_0.2-19 fansi_1.0.5 \n[43] viridisLite_0.4.2 withr_2.5.2 MASS_7.3-58.2 \n[46] grid_4.2.3 nlme_3.1-162 jsonlite_1.8.7 \n[49] gtable_0.3.4 lifecycle_1.0.4 magrittr_2.0.3 \n[52] metafor_4.4-0 scales_1.2.1 metadat_1.2-0 \n[55] cli_3.6.1 stringi_1.8.2 remotes_2.4.2.1 \n[58] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 \n[61] boot_1.3-28.1 forcats_1.0.0 tools_4.2.3 \n[64] CompQuadForm_1.4.3 glue_1.6.2 abind_1.4-5 \n[67] fastmap_1.1.1 yaml_2.3.7 colorspace_2.1-0 \n[70] rvest_1.0.3 knitr_1.45" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] netmeta_2.8-2 meta_6.5-0 gemtc_1.0-2 coda_0.19-4 \n[5] dplyr_1.1.4 kableExtra_1.3.4\n\nloaded via a namespace (and not attached):\n [1] Rcpp_1.0.11 mvtnorm_1.2-4 svglite_2.1.2 \n [4] lattice_0.20-45 digest_0.6.33 utf8_1.2.4 \n [7] truncnorm_1.0-9 slam_0.1-50 R6_2.5.1 \n[10] plyr_1.8.9 magic_1.6-1 evaluate_0.23 \n[13] httr_1.4.7 ggplot2_3.4.4 highr_0.10 \n[16] pillar_1.9.0 rlang_1.1.2 rstudioapi_0.15.0 \n[19] minqa_1.2.6 nloptr_2.0.3 rjags_4-14 \n[22] Matrix_1.6-3 rmarkdown_2.25 mathjaxr_1.6-0 \n[25] splines_4.2.3 lme4_1.1-35.1 webshot_0.5.5 \n[28] stringr_1.5.1 htmlwidgets_1.6.3 igraph_1.5.1 \n[31] munsell_0.5.0 compiler_4.2.3 numDeriv_2016.8-1.1\n[34] xfun_0.41 pkgconfig_2.0.3 systemfonts_1.0.5 \n[37] Rglpk_0.6-5 htmltools_0.5.7 tidyselect_1.2.0 \n[40] tibble_3.2.1 codetools_0.2-19 fansi_1.0.5 \n[43] viridisLite_0.4.2 withr_2.5.2 MASS_7.3-58.2 \n[46] grid_4.2.3 nlme_3.1-162 jsonlite_1.8.7 \n[49] gtable_0.3.4 lifecycle_1.0.4 magrittr_2.0.3 \n[52] metafor_4.4-0 scales_1.3.0 metadat_1.2-0 \n[55] cli_3.6.1 stringi_1.8.2 remotes_2.4.2.1 \n[58] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 \n[61] boot_1.3-28.1 forcats_1.0.0 tools_4.2.3 \n[64] CompQuadForm_1.4.3 glue_1.6.2 abind_1.4-5 \n[67] fastmap_1.1.1 yaml_2.3.7 colorspace_2.1-0 \n[70] rvest_1.0.3 knitr_1.45" }, { "objectID": "chapter_10.html#references", @@ -263,7 +263,7 @@ "href": "chapter_11.html#version-info", "title": "7  Individual Participant Data Meta-analysis of clinical trials and real-world data", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] meta_6.5-0 jarbes_2.0.0 dplyr_1.1.4 ggplot2_3.4.4 \n[5] table1_1.4.3 kableExtra_1.3.4\n\nloaded via a namespace (and not attached):\n [1] httr_1.4.7 tidyr_1.3.0 sfsmisc_1.1-16 \n [4] jsonlite_1.8.7 viridisLite_0.4.2 splines_4.2.3 \n [7] Formula_1.2-5 shiny_1.8.0 metafor_4.4-0 \n[10] yaml_2.3.7 numDeriv_2016.8-1.1 R2WinBUGS_2.1-21 \n[13] pillar_1.9.0 lattice_0.20-45 glue_1.6.2 \n[16] digest_0.6.33 RColorBrewer_1.1-3 promises_1.2.1 \n[19] minqa_1.2.6 rvest_1.0.3 colorspace_2.1-0 \n[22] R2jags_0.7-1 Matrix_1.6-3 mcmcplots_0.4.3 \n[25] htmltools_0.5.7 httpuv_1.6.12 plyr_1.8.9 \n[28] pkgconfig_2.0.3 purrr_1.0.2 xtable_1.8-4 \n[31] scales_1.2.1 webshot_0.5.5 svglite_2.1.2 \n[34] rjags_4-14 later_1.3.1 ggstats_0.5.1 \n[37] metadat_1.2-0 lme4_1.1-35.1 tibble_3.2.1 \n[40] farver_2.1.1 generics_0.1.3 ellipsis_0.3.2 \n[43] withr_2.5.2 cli_3.6.1 magrittr_2.0.3 \n[46] mime_0.12 evaluate_0.23 GGally_2.2.0 \n[49] fansi_1.0.5 nlme_3.1-162 MASS_7.3-58.2 \n[52] xml2_1.3.5 tools_4.2.3 lifecycle_1.0.4 \n[55] stringr_1.5.1 munsell_0.5.0 compiler_4.2.3 \n[58] systemfonts_1.0.5 rlang_1.1.2 nloptr_2.0.3 \n[61] grid_4.2.3 rstudioapi_0.15.0 CompQuadForm_1.4.3 \n[64] htmlwidgets_1.6.3 miniUI_0.1.1.1 labeling_0.4.3 \n[67] rmarkdown_2.25 boot_1.3-28.1 gtable_0.3.4 \n[70] codetools_0.2-19 abind_1.4-5 R6_2.5.1 \n[73] gridExtra_2.3 knitr_1.45 denstrip_1.5.4 \n[76] fastmap_1.1.1 utf8_1.2.4 mathjaxr_1.6-0 \n[79] ggExtra_0.10.1 stringi_1.8.2 parallel_4.2.3 \n[82] Rcpp_1.0.11 vctrs_0.6.4 tidyselect_1.2.0 \n[85] xfun_0.41 coda_0.19-4" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] meta_6.5-0 jarbes_2.0.0 dplyr_1.1.4 ggplot2_3.4.4 \n[5] table1_1.4.3 kableExtra_1.3.4\n\nloaded via a namespace (and not attached):\n [1] httr_1.4.7 tidyr_1.3.0 sfsmisc_1.1-16 \n [4] jsonlite_1.8.7 viridisLite_0.4.2 splines_4.2.3 \n [7] Formula_1.2-5 shiny_1.8.0 metafor_4.4-0 \n[10] yaml_2.3.7 numDeriv_2016.8-1.1 R2WinBUGS_2.1-21 \n[13] pillar_1.9.0 lattice_0.20-45 glue_1.6.2 \n[16] digest_0.6.33 RColorBrewer_1.1-3 promises_1.2.1 \n[19] minqa_1.2.6 rvest_1.0.3 colorspace_2.1-0 \n[22] R2jags_0.7-1 Matrix_1.6-3 mcmcplots_0.4.3 \n[25] htmltools_0.5.7 httpuv_1.6.12 plyr_1.8.9 \n[28] pkgconfig_2.0.3 purrr_1.0.2 xtable_1.8-4 \n[31] scales_1.3.0 webshot_0.5.5 svglite_2.1.2 \n[34] rjags_4-14 later_1.3.1 ggstats_0.5.1 \n[37] metadat_1.2-0 lme4_1.1-35.1 tibble_3.2.1 \n[40] farver_2.1.1 generics_0.1.3 ellipsis_0.3.2 \n[43] withr_2.5.2 cli_3.6.1 magrittr_2.0.3 \n[46] mime_0.12 evaluate_0.23 GGally_2.2.0 \n[49] fansi_1.0.5 nlme_3.1-162 MASS_7.3-58.2 \n[52] xml2_1.3.5 tools_4.2.3 lifecycle_1.0.4 \n[55] stringr_1.5.1 munsell_0.5.0 compiler_4.2.3 \n[58] systemfonts_1.0.5 rlang_1.1.2 nloptr_2.0.3 \n[61] grid_4.2.3 rstudioapi_0.15.0 CompQuadForm_1.4.3 \n[64] htmlwidgets_1.6.3 miniUI_0.1.1.1 labeling_0.4.3 \n[67] rmarkdown_2.25 boot_1.3-28.1 gtable_0.3.4 \n[70] codetools_0.2-19 abind_1.4-5 R6_2.5.1 \n[73] gridExtra_2.3 knitr_1.45 denstrip_1.5.4 \n[76] fastmap_1.1.1 utf8_1.2.4 mathjaxr_1.6-0 \n[79] ggExtra_0.10.1 stringi_1.8.2 parallel_4.2.3 \n[82] Rcpp_1.0.11 vctrs_0.6.4 tidyselect_1.2.0 \n[85] xfun_0.41 coda_0.19-4" }, { "objectID": "chapter_11.html#references", @@ -312,7 +312,7 @@ "href": "chapter_12.html#version-info", "title": "8  Dealing with irregular and informative visits", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] sparseMVN_0.2.2 truncnorm_1.0-9 MASS_7.3-58.2 nlme_3.1-162 \n[5] mice_3.16.0 ggplot2_3.4.4 broom_1.0.5 dplyr_1.1.4 \n\nloaded via a namespace (and not attached):\n [1] shape_1.4.6 tidyselect_1.2.0 xfun_0.41 purrr_1.0.2 \n [5] splines_4.2.3 lattice_0.20-45 colorspace_2.1-0 vctrs_0.6.4 \n [9] generics_0.1.3 htmltools_0.5.7 yaml_2.3.7 pan_1.9 \n[13] utf8_1.2.4 survival_3.5-3 rlang_1.1.2 jomo_2.7-6 \n[17] pillar_1.9.0 nloptr_2.0.3 withr_2.5.2 glue_1.6.2 \n[21] foreach_1.5.2 lifecycle_1.0.4 munsell_0.5.0 gtable_0.3.4 \n[25] htmlwidgets_1.6.3 codetools_0.2-19 evaluate_0.23 labeling_0.4.3 \n[29] knitr_1.45 fastmap_1.1.1 fansi_1.0.5 Rcpp_1.0.11 \n[33] scales_1.2.1 backports_1.4.1 jsonlite_1.8.7 farver_2.1.1 \n[37] lme4_1.1-35.1 digest_0.6.33 grid_4.2.3 cli_3.6.1 \n[41] tools_4.2.3 magrittr_2.0.3 glmnet_4.1-8 tibble_3.2.1 \n[45] tidyr_1.3.0 pkgconfig_2.0.3 ellipsis_0.3.2 Matrix_1.6-3 \n[49] minqa_1.2.6 rmarkdown_2.25 iterators_1.0.14 mitml_0.4-5 \n[53] R6_2.5.1 boot_1.3-28.1 rpart_4.1.19 nnet_7.3-18 \n[57] compiler_4.2.3" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] sparseMVN_0.2.2 truncnorm_1.0-9 MASS_7.3-58.2 nlme_3.1-162 \n[5] mice_3.16.0 ggplot2_3.4.4 broom_1.0.5 dplyr_1.1.4 \n\nloaded via a namespace (and not attached):\n [1] shape_1.4.6 tidyselect_1.2.0 xfun_0.41 purrr_1.0.2 \n [5] splines_4.2.3 lattice_0.20-45 colorspace_2.1-0 vctrs_0.6.4 \n [9] generics_0.1.3 htmltools_0.5.7 yaml_2.3.7 pan_1.9 \n[13] utf8_1.2.4 survival_3.5-3 rlang_1.1.2 jomo_2.7-6 \n[17] pillar_1.9.0 nloptr_2.0.3 withr_2.5.2 glue_1.6.2 \n[21] foreach_1.5.2 lifecycle_1.0.4 munsell_0.5.0 gtable_0.3.4 \n[25] htmlwidgets_1.6.3 codetools_0.2-19 evaluate_0.23 labeling_0.4.3 \n[29] knitr_1.45 fastmap_1.1.1 fansi_1.0.5 Rcpp_1.0.11 \n[33] scales_1.3.0 backports_1.4.1 jsonlite_1.8.7 farver_2.1.1 \n[37] lme4_1.1-35.1 digest_0.6.33 grid_4.2.3 cli_3.6.1 \n[41] tools_4.2.3 magrittr_2.0.3 glmnet_4.1-8 tibble_3.2.1 \n[45] tidyr_1.3.0 pkgconfig_2.0.3 ellipsis_0.3.2 Matrix_1.6-3 \n[49] minqa_1.2.6 rmarkdown_2.25 iterators_1.0.14 mitml_0.4-5 \n[53] R6_2.5.1 boot_1.3-28.1 rpart_4.1.19 nnet_7.3-18 \n[57] compiler_4.2.3" }, { "objectID": "chapter_12.html#references", @@ -326,21 +326,21 @@ "href": "chapter_16.html#estimating-heterogeneous-treatment-effects-in-pairwise-meta-analysis", "title": "9  Prediction of individual treatment effect using data from multiple studies", "section": "9.1 Estimating heterogeneous treatment effects in pairwise meta-analysis", - "text": "9.1 Estimating heterogeneous treatment effects in pairwise meta-analysis\nWe hereby provide code for estimating patient-level treatment effects for the case when we have patient-level data from multiple randomized trials.\n\n9.1.1 Example of a continuous outcome\n\n9.1.1.1 Setup\nWe start by simulating an artificial dataset using the R package bipd:\n\nlibrary(bipd)\nds <- generate_ipdma_example(type = \"continuous\")\n\nLet us have a look at the dataset:\n\nhead(ds)\n\n studyid treat z1 z2 y\n1 1 1 0.66357960 -0.4577273 8\n2 1 0 1.31551822 -0.8754736 11\n3 1 0 0.09999125 0.8680711 11\n4 1 1 1.14502875 0.9097141 9\n5 1 0 -0.27793412 0.2742364 11\n6 1 0 0.74722408 0.7883318 11\n\n\nThe simulated dataset contains information on the following variables:\n\nthe trial indicator studyid\nthe treatment indicator treat, which takes the values 0 for control and 1 for active treatment\ntwo prognostic variables z1 and z2\nthe continuous outcome y\n\n\n\n\n\n\n\nTable 9.1: The simulated dataset with a continuous outcome\n\n\n\n\n\n\n\n\n\n0\n(N=301)\n1\n(N=299)\nOverall\n(N=600)\n\n\n\n\nz1\n\n\n\n\n\nMean (SD)\n0.0102 (0.998)\n-0.0650 (1.04)\n-0.0273 (1.02)\n\n\nMedian [Min, Max]\n0.0716 [-3.25, 2.28]\n-0.0613 [-2.69, 2.63]\n-0.00117 [-3.25, 2.63]\n\n\nz2\n\n\n\n\n\nMean (SD)\n-0.0735 (1.06)\n-0.0213 (1.02)\n-0.0475 (1.04)\n\n\nMedian [Min, Max]\n-0.0459 [-3.30, 2.55]\n-0.0524 [-2.44, 2.96]\n-0.0481 [-3.30, 2.96]\n\n\nstudyid\n\n\n\n\n\n1\n47 (15.6%)\n53 (17.7%)\n100 (16.7%)\n\n\n2\n56 (18.6%)\n44 (14.7%)\n100 (16.7%)\n\n\n3\n48 (15.9%)\n52 (17.4%)\n100 (16.7%)\n\n\n4\n48 (15.9%)\n52 (17.4%)\n100 (16.7%)\n\n\n5\n54 (17.9%)\n46 (15.4%)\n100 (16.7%)\n\n\n6\n48 (15.9%)\n52 (17.4%)\n100 (16.7%)\n\n\n\n\n\n\n\n\n\n\n9.1.1.2 Model fitting\nWe synthesize the evidence using a Bayesian random effects meta-analysis model. The model is given in Equation 16.7 of the book. First we need set up the data and create the model:\n\nipd <- with(ds, ipdma.model.onestage(y = y, study = studyid, treat = treat,\n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"none\"), \n type = \"random\")\n\nThe JAGS model can be accessed as follows:\n\nipd$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dnorm(mu[i], sigma)\n mu[i] <- alpha[studyid[i]] + inprod(beta[], X[i, ]) + \n (1 - equals(treat[i], 1)) * inprod(gamma[], X[i, \n ]) + d[studyid[i], treat[i]]\n }\n sigma ~ dgamma(0.001, 0.001)\n for (j in 1:Nstudies) {\n d[j, 1] <- 0\n d[j, 2] ~ dnorm(delta[2], tau)\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n gamma[k] ~ dnorm(0, 0.001)\n }\n}\n<environment: 0x56436527c9b0>\n\n\nWe can fit the treatment effect model as follows:\n\nsamples <- ipd.run(ipd, n.chains = 2, n.iter = 20,\n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\ntrtbenefit <- round(treatment.effect(ipd, samples, newpatient = c(z1 = 1, z2 = 0.5)), 2)\n\nHere are the estimated model parameters:\n\nsummary(samples)\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] 10.9296 0.06913 0.010931 0.024950\nalpha[2] 7.9285 0.04590 0.007258 0.007295\nalpha[3] 10.5125 0.06249 0.009881 0.007388\nalpha[4] 9.6159 0.04413 0.006978 0.006472\nalpha[5] 12.8345 0.06585 0.010411 0.018175\nalpha[6] 15.7558 0.04926 0.007789 0.007210\nbeta[1] 0.1921 0.02507 0.003964 0.006998\nbeta[2] 0.3448 0.02129 0.003366 0.005640\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -3.5614 0.60289 0.095325 0.107806\ngamma[1] -0.4836 0.02989 0.004726 0.006272\ngamma[2] 0.5403 0.03005 0.004752 0.007927\nsd 1.2461 0.36837 0.058245 0.113460\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] 10.7764 10.8894 10.9301 10.9753 11.0453\nalpha[2] 7.8530 7.8974 7.9325 7.9602 7.9947\nalpha[3] 10.4082 10.4600 10.5173 10.5500 10.6146\nalpha[4] 9.5493 9.5805 9.6209 9.6458 9.7043\nalpha[5] 12.7065 12.7934 12.8372 12.8793 12.9329\nalpha[6] 15.6663 15.7256 15.7538 15.7916 15.8359\nbeta[1] 0.1486 0.1745 0.1886 0.2062 0.2342\nbeta[2] 0.3003 0.3310 0.3504 0.3606 0.3795\ndelta[1] 0.0000 0.0000 0.0000 0.0000 0.0000\ndelta[2] -4.7407 -3.9333 -3.5857 -3.2504 -2.6095\ngamma[1] -0.5414 -0.5018 -0.4891 -0.4671 -0.4231\ngamma[2] 0.4875 0.5196 0.5334 0.5710 0.5902\nsd 0.7783 0.9904 1.1664 1.4194 2.1475\n\n\n\n\n9.1.1.3 Prection\nWe can now predict the individualized treatment effect for a new patient with covariate values z1 = 1 and z2 = 0.5.\n\nround(treatment.effect(ipd, samples, newpatient = c(z1 = 1, z2 = 0.5)), 2)\n\n0.025 0.5 0.975 \n-4.94 -3.76 -2.76 \n\n\nThis means that the predicted outcome for patient with covariate values z1 = 1 and z2 = 0.5 will differ by -3.76 units when receiving the active treatment (treat = 1) as compared to the control treatment (treat = 0).\nWe can also predict treatment benefit for all patients in the sample, and look at the distribution of predicted benefit.\n\nlibrary(dplyr)\nlibrary(ggplot2)\n\nds <- ds %>% mutate(benefit = NA,\n study = paste(\"Trial\", studyid)) \n\nfor (i in seq(nrow(ds))) {\n newpat <- as.matrix(ds[i, c(\"z1\", \"z2\")])\n ds$benefit[i] <- treatment.effect(ipd, samples, newpatient = newpat)[\"0.5\"]\n}\n\nsummbenefit <- ds %>% group_by(study) %>% \n summarize(mediabenefit = median(benefit), meanbenefit = mean(benefit))\n\nggplot(ds, aes(x = benefit)) + \n geom_histogram(aes(y = after_stat(density)), alpha = 0.3) + \n geom_density() +\n geom_vline(data = summbenefit, aes(xintercept = meanbenefit), \n linewidth = 0.5, lty = 2) + \n facet_wrap(~study) + \n ylab(\"Density\") +\n xlab(\"Predicted treatment benefit\") + theme_bw()\n\n\n\n\nFigure 9.1: Distribution of predicted treatment benefit in each trial. Dashed lines represent the trial mean.\n\n\n\n\n\n\n9.1.1.4 Penalization\nLet us repeat the analysis, but this time while penalizing the treatment-covariate coefficients using a Bayesian LASSO prior.\n\nipd <- with(ds, ipdma.model.onestage(y = y, study = studyid, \n treat = treat,\n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"laplace\"), \n type = \"random\")\n\nsamples <- ipd.run(ipd, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 600\n Unobserved stochastic nodes: 20\n Total graph size: 6039\n\nInitializing model\n\nround(treatment.effect(ipd, samples, newpatient = c(1,0.5)), 2)\n\n0.025 0.5 0.975 \n-4.55 -3.86 -2.96 \n\n\n\n\n\n9.1.2 Example of a binary outcome\n\n9.1.2.1 Setup\nWe now present the case of a binary outcome. We first generate a dataset as before, using the bipd package.\n\nds2 <- generate_ipdma_example(type = \"binary\")\nhead(ds2)\n\n studyid treat w1 w2 y\n1 1 1 0.7784257 -1.5231409 0\n2 1 1 0.7991675 -0.6872109 0\n3 1 0 1.8351258 0.8772528 1\n4 1 0 2.0236660 0.4388474 1\n5 1 0 0.7231042 -1.9485631 1\n6 1 1 0.7420041 -0.7778685 0\n\n\nThe simulated dataset contains information on the following variables:\n\nthe trial indicator studyid\nthe treatment indicator treat, which takes the values 0 for control and 1 for active treatment\ntwo prognostic variables w1 and w2\nthe binary outcome y\n\n\n\n\n\n\n\nTable 9.2: The simulated dataset with a binary outcome\n\n\n\n\n\n\n\n\n\n0\n(N=313)\n1\n(N=287)\nOverall\n(N=600)\n\n\n\n\nw1\n\n\n\n\n\nMean (SD)\n0.0357 (0.976)\n0.00133 (1.03)\n0.0193 (1.00)\n\n\nMedian [Min, Max]\n0.0185 [-3.54, 2.66]\n-0.00433 [-2.75, 2.69]\n0.0174 [-3.54, 2.69]\n\n\nw2\n\n\n\n\n\nMean (SD)\n0.0488 (1.01)\n0.118 (0.996)\n0.0820 (1.00)\n\n\nMedian [Min, Max]\n0.0627 [-2.98, 2.86]\n0.0674 [-2.84, 2.63]\n0.0674 [-2.98, 2.86]\n\n\nstudyid\n\n\n\n\n\n1\n49 (15.7%)\n51 (17.8%)\n100 (16.7%)\n\n\n2\n56 (17.9%)\n44 (15.3%)\n100 (16.7%)\n\n\n3\n44 (14.1%)\n56 (19.5%)\n100 (16.7%)\n\n\n4\n58 (18.5%)\n42 (14.6%)\n100 (16.7%)\n\n\n5\n52 (16.6%)\n48 (16.7%)\n100 (16.7%)\n\n\n6\n54 (17.3%)\n46 (16.0%)\n100 (16.7%)\n\n\n\n\n\n\n\n\n\n\n9.1.2.2 Model fitting\nWe use a Bayesian random effects model with binomial likelihood. This is similar to the model 16.7 of the book, but with a Binomial likelihood, i.e. \n\\[\ny_{ij}\\sim \\text{Binomial}(\\pi_{ij}) \\\\\n\\] \\[\n\\text{logit}(\\pi_{ij})=a_j+\\delta_j t_{ij}+ \\sum_{l=1}^{L}\\beta_l x_{ij}+ \\sum_{l=1}^{L}\\gamma_l x_{ij} t_{ij}\n\\] The remaining of the model is as in the book. We can penalize the estimated parameters for effect modification (\\(\\gamma\\)’s), using a Bayesian LASSO. We can do this using again the bipd package:\n\nipd2 <- with(ds2, ipdma.model.onestage(y = y, study = studyid, treat = treat,\n X = cbind(w1, w2), \n response = \"binomial\", \n shrinkage = \"laplace\"), \n type = \"random\", hy.prior = list(\"dunif\", 0, 1))\n\nipd2$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dbern(p[i])\n logit(p[i]) <- alpha[studyid[i]] + inprod(beta[], X[i, \n ]) + (1 - equals(treat[i], 1)) * inprod(gamma[], \n X[i, ]) + d[studyid[i], treat[i]]\n }\n for (j in 1:Nstudies) {\n d[j, 1] <- 0\n d[j, 2] ~ dnorm(delta[2], tau)\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n tt <- lambda\n lambda <- pow(lambda.inv, -1)\n lambda.inv ~ dunif(0, 5)\n for (k in 1:Ncovariate) {\n gamma[k] ~ ddexp(0, tt)\n }\n}\n<environment: 0x564369123018>\n\n\n\nsamples <- ipd.run(ipd2, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\nsummary(samples)\n\n\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] -0.0777601 0.2900 0.04585 0.07594\nalpha[2] -0.6739023 0.2373 0.03752 0.06705\nalpha[3] -0.2894545 0.2814 0.04449 0.05766\nalpha[4] -0.4746006 0.2493 0.03942 0.04008\nalpha[5] -0.4667742 0.1822 0.02881 0.03594\nalpha[6] -0.7728001 0.2865 0.04530 0.11065\nbeta[1] 0.0347552 0.1330 0.02103 0.03572\nbeta[2] 0.1415347 0.1383 0.02186 0.06136\ndelta[1] 0.0000000 0.0000 0.00000 0.00000\ndelta[2] -0.2725732 0.2915 0.04609 0.04462\ngamma[1] 0.0004385 0.1812 0.02865 0.06067\ngamma[2] -0.1048801 0.1328 0.02100 0.03854\nsd 0.6497185 0.3004 0.04750 0.08741\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] -0.57064 -0.27353 -0.104969 0.09793 0.64420\nalpha[2] -1.17968 -0.79739 -0.661550 -0.56794 -0.09491\nalpha[3] -0.90944 -0.45251 -0.224282 -0.10073 0.06020\nalpha[4] -0.84260 -0.64436 -0.463653 -0.30079 0.04459\nalpha[5] -0.71445 -0.63584 -0.476179 -0.35776 -0.05332\nalpha[6] -1.18205 -1.01382 -0.796486 -0.50222 -0.32730\nbeta[1] -0.20537 -0.07229 0.066296 0.14593 0.22292\nbeta[2] -0.07544 0.04080 0.158226 0.24547 0.41404\ndelta[1] 0.00000 0.00000 0.000000 0.00000 0.00000\ndelta[2] -0.77549 -0.43008 -0.249511 -0.13809 0.22392\ngamma[1] -0.26699 -0.12484 -0.007093 0.10637 0.29197\ngamma[2] -0.38613 -0.15989 -0.098391 -0.01668 0.11530\nsd 0.33809 0.42371 0.540628 0.80383 1.40253\n\n\nThe predicted treatment benefit for a new patient with covariates w1 = 1.6 and w2 = 1.3 is given as:\n\nround(treatment.effect(ipd2, samples, newpatient = c(w1 = 1.6, w2 = 1.3)), 2)\n\n0.025 0.5 0.975 \n 0.28 0.65 1.36 \n\n\nIn other words, the aforementioned patient 0.65 (95% Credibility Interval: 0.28 to 1.36)" + "text": "9.1 Estimating heterogeneous treatment effects in pairwise meta-analysis\nWe hereby provide code for estimating patient-level treatment effects for the case when we have patient-level data from multiple randomized trials.\n\n9.1.1 Example of a continuous outcome\n\n9.1.1.1 Setup\nWe start by simulating an artificial dataset using the R package bipd:\n\nlibrary(bipd)\nds <- generate_ipdma_example(type = \"continuous\")\n\nLet us have a look at the dataset:\n\nhead(ds)\n\n studyid treat z1 z2 y\n1 1 1 -1.0979103 1.3313560 11\n2 1 1 -0.2680399 0.2622481 9\n3 1 1 -1.2474858 -0.2392603 9\n4 1 1 -0.4138311 -1.0706763 8\n5 1 1 0.1750534 -0.6511220 8\n6 1 0 -1.6278960 -1.9344096 10\n\n\nThe simulated dataset contains information on the following variables:\n\nthe trial indicator studyid\nthe treatment indicator treat, which takes the values 0 for control and 1 for active treatment\ntwo prognostic variables z1 and z2\nthe continuous outcome y\n\n\n\n\n\n\n\nTable 9.1: The simulated dataset with a continuous outcome\n\n\n\n\n\n\n\n\n\n0\n(N=276)\n1\n(N=324)\nOverall\n(N=600)\n\n\n\n\nz1\n\n\n\n\n\nMean (SD)\n-0.109 (1.04)\n0.00425 (1.07)\n-0.0477 (1.06)\n\n\nMedian [Min, Max]\n-0.0987 [-3.06, 2.68]\n-0.0699 [-3.67, 3.03]\n-0.0843 [-3.67, 3.03]\n\n\nz2\n\n\n\n\n\nMean (SD)\n-0.0325 (1.03)\n0.0330 (1.01)\n0.00287 (1.02)\n\n\nMedian [Min, Max]\n-0.0835 [-2.61, 2.79]\n0.0556 [-2.64, 2.38]\n-0.0172 [-2.64, 2.79]\n\n\nstudyid\n\n\n\n\n\n1\n37 (13.4%)\n63 (19.4%)\n100 (16.7%)\n\n\n2\n53 (19.2%)\n47 (14.5%)\n100 (16.7%)\n\n\n3\n48 (17.4%)\n52 (16.0%)\n100 (16.7%)\n\n\n4\n40 (14.5%)\n60 (18.5%)\n100 (16.7%)\n\n\n5\n56 (20.3%)\n44 (13.6%)\n100 (16.7%)\n\n\n6\n42 (15.2%)\n58 (17.9%)\n100 (16.7%)\n\n\n\n\n\n\n\n\n\n\n9.1.1.2 Model fitting\nWe synthesize the evidence using a Bayesian random effects meta-analysis model. The model is given in Equation 16.7 of the book. First we need set up the data and create the model:\n\nipd <- with(ds, ipdma.model.onestage(y = y, study = studyid, treat = treat,\n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"none\"), \n type = \"random\")\n\nThe JAGS model can be accessed as follows:\n\nipd$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dnorm(mu[i], sigma)\n mu[i] <- alpha[studyid[i]] + inprod(beta[], X[i, ]) + \n (1 - equals(treat[i], 1)) * inprod(gamma[], X[i, \n ]) + d[studyid[i], treat[i]]\n }\n sigma ~ dgamma(0.001, 0.001)\n for (j in 1:Nstudies) {\n d[j, 1] <- 0\n d[j, 2] ~ dnorm(delta[2], tau)\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n gamma[k] ~ dnorm(0, 0.001)\n }\n}\n<environment: 0x561171711fc8>\n\n\nWe can fit the treatment effect model as follows:\n\nsamples <- ipd.run(ipd, n.chains = 2, n.iter = 20,\n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\ntrtbenefit <- round(treatment.effect(ipd, samples, newpatient = c(z1 = 1, z2 = 0.5)), 2)\n\nHere are the estimated model parameters:\n\nsummary(samples)\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] 10.9979 0.04926 0.007789 0.015173\nalpha[2] 8.0468 0.03843 0.006077 0.006603\nalpha[3] 10.4481 0.05038 0.007966 0.011157\nalpha[4] 9.6145 0.06076 0.009606 0.013120\nalpha[5] 12.8619 0.04131 0.006532 0.004880\nalpha[6] 15.7236 0.05121 0.008097 0.010879\nbeta[1] 0.2131 0.02283 0.003609 0.006235\nbeta[2] 0.2887 0.02339 0.003699 0.004204\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -2.4678 0.59641 0.094301 0.072792\ngamma[1] -0.5657 0.03223 0.005097 0.007189\ngamma[2] 0.5999 0.03324 0.005255 0.010773\nsd 1.4458 0.26155 0.041354 0.052604\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] 10.9039 10.961 11.0002 11.0358 11.0789\nalpha[2] 7.9836 8.023 8.0462 8.0725 8.1100\nalpha[3] 10.3476 10.421 10.4531 10.4826 10.5425\nalpha[4] 9.5035 9.564 9.6208 9.6634 9.7010\nalpha[5] 12.7946 12.836 12.8576 12.8878 12.9482\nalpha[6] 15.6457 15.680 15.7192 15.7633 15.8175\nbeta[1] 0.1657 0.199 0.2133 0.2346 0.2429\nbeta[2] 0.2503 0.276 0.2825 0.3040 0.3374\ndelta[1] 0.0000 0.000 0.0000 0.0000 0.0000\ndelta[2] -3.8358 -2.835 -2.4340 -2.0173 -1.5221\ngamma[1] -0.6230 -0.588 -0.5708 -0.5454 -0.5066\ngamma[2] 0.5379 0.579 0.5985 0.6225 0.6603\nsd 1.0047 1.272 1.4356 1.6393 1.9115\n\n\n\n\n9.1.1.3 Prection\nWe can now predict the individualized treatment effect for a new patient with covariate values z1 = 1 and z2 = 0.5.\n\nround(treatment.effect(ipd, samples, newpatient = c(z1 = 1, z2 = 0.5)), 2)\n\n0.025 0.5 0.975 \n-4.11 -2.72 -1.78 \n\n\nThis means that the predicted outcome for patient with covariate values z1 = 1 and z2 = 0.5 will differ by -2.72 units when receiving the active treatment (treat = 1) as compared to the control treatment (treat = 0).\nWe can also predict treatment benefit for all patients in the sample, and look at the distribution of predicted benefit.\n\nlibrary(dplyr)\nlibrary(ggplot2)\n\nds <- ds %>% mutate(benefit = NA,\n study = paste(\"Trial\", studyid)) \n\nfor (i in seq(nrow(ds))) {\n newpat <- as.matrix(ds[i, c(\"z1\", \"z2\")])\n ds$benefit[i] <- treatment.effect(ipd, samples, newpatient = newpat)[\"0.5\"]\n}\n\nsummbenefit <- ds %>% group_by(study) %>% \n summarize(mediabenefit = median(benefit), meanbenefit = mean(benefit))\n\nggplot(ds, aes(x = benefit)) + \n geom_histogram(aes(y = after_stat(density)), alpha = 0.3) + \n geom_density() +\n geom_vline(data = summbenefit, aes(xintercept = meanbenefit), \n linewidth = 0.5, lty = 2) + \n facet_wrap(~study) + \n ylab(\"Density\") +\n xlab(\"Predicted treatment benefit\") + theme_bw()\n\n\n\n\nFigure 9.1: Distribution of predicted treatment benefit in each trial. Dashed lines represent the trial mean.\n\n\n\n\n\n\n9.1.1.4 Penalization\nLet us repeat the analysis, but this time while penalizing the treatment-covariate coefficients using a Bayesian LASSO prior.\n\nipd <- with(ds, ipdma.model.onestage(y = y, study = studyid, \n treat = treat,\n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"laplace\"), \n type = \"random\")\n\nsamples <- ipd.run(ipd, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 600\n Unobserved stochastic nodes: 20\n Total graph size: 6039\n\nInitializing model\n\nround(treatment.effect(ipd, samples, newpatient = c(1,0.5)), 2)\n\n0.025 0.5 0.975 \n-3.79 -2.62 -1.47 \n\n\n\n\n\n9.1.2 Example of a binary outcome\n\n9.1.2.1 Setup\nWe now present the case of a binary outcome. We first generate a dataset as before, using the bipd package.\n\nds2 <- generate_ipdma_example(type = \"binary\")\nhead(ds2)\n\n studyid treat w1 w2 y\n1 1 1 1.35999376 0.73143406 0\n2 1 1 1.12927801 0.62002345 1\n3 1 1 0.78404964 0.41148700 1\n4 1 0 -0.14616499 2.10316103 1\n5 1 1 0.03563058 -0.06812964 0\n6 1 1 -1.08032820 -0.98945872 0\n\n\nThe simulated dataset contains information on the following variables:\n\nthe trial indicator studyid\nthe treatment indicator treat, which takes the values 0 for control and 1 for active treatment\ntwo prognostic variables w1 and w2\nthe binary outcome y\n\n\n\n\n\n\n\nTable 9.2: The simulated dataset with a binary outcome\n\n\n\n\n\n\n\n\n\n0\n(N=281)\n1\n(N=319)\nOverall\n(N=600)\n\n\n\n\nw1\n\n\n\n\n\nMean (SD)\n-0.00668 (1.03)\n0.00771 (1.05)\n0.000970 (1.04)\n\n\nMedian [Min, Max]\n0.0652 [-3.05, 2.25]\n-0.00417 [-3.00, 3.11]\n0.0276 [-3.05, 3.11]\n\n\nw2\n\n\n\n\n\nMean (SD)\n-0.0583 (0.935)\n0.0366 (0.982)\n-0.00787 (0.960)\n\n\nMedian [Min, Max]\n-0.114 [-2.64, 2.62]\n0.0309 [-2.57, 3.17]\n-0.0265 [-2.64, 3.17]\n\n\nstudyid\n\n\n\n\n\n1\n41 (14.6%)\n59 (18.5%)\n100 (16.7%)\n\n\n2\n43 (15.3%)\n57 (17.9%)\n100 (16.7%)\n\n\n3\n44 (15.7%)\n56 (17.6%)\n100 (16.7%)\n\n\n4\n52 (18.5%)\n48 (15.0%)\n100 (16.7%)\n\n\n5\n52 (18.5%)\n48 (15.0%)\n100 (16.7%)\n\n\n6\n49 (17.4%)\n51 (16.0%)\n100 (16.7%)\n\n\n\n\n\n\n\n\n\n\n9.1.2.2 Model fitting\nWe use a Bayesian random effects model with binomial likelihood. This is similar to the model 16.7 of the book, but with a Binomial likelihood, i.e. \n\\[\ny_{ij}\\sim \\text{Binomial}(\\pi_{ij}) \\\\\n\\] \\[\n\\text{logit}(\\pi_{ij})=a_j+\\delta_j t_{ij}+ \\sum_{l=1}^{L}\\beta_l x_{ij}+ \\sum_{l=1}^{L}\\gamma_l x_{ij} t_{ij}\n\\] The remaining of the model is as in the book. We can penalize the estimated parameters for effect modification (\\(\\gamma\\)’s), using a Bayesian LASSO. We can do this using again the bipd package:\n\nipd2 <- with(ds2, ipdma.model.onestage(y = y, study = studyid, treat = treat,\n X = cbind(w1, w2), \n response = \"binomial\", \n shrinkage = \"laplace\"), \n type = \"random\", hy.prior = list(\"dunif\", 0, 1))\n\nipd2$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dbern(p[i])\n logit(p[i]) <- alpha[studyid[i]] + inprod(beta[], X[i, \n ]) + (1 - equals(treat[i], 1)) * inprod(gamma[], \n X[i, ]) + d[studyid[i], treat[i]]\n }\n for (j in 1:Nstudies) {\n d[j, 1] <- 0\n d[j, 2] ~ dnorm(delta[2], tau)\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n tt <- lambda\n lambda <- pow(lambda.inv, -1)\n lambda.inv ~ dunif(0, 5)\n for (k in 1:Ncovariate) {\n gamma[k] ~ ddexp(0, tt)\n }\n}\n<environment: 0x561175515cc0>\n\n\n\nsamples <- ipd.run(ipd2, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\nsummary(samples)\n\n\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] 0.45831 0.3301 0.05219 0.07915\nalpha[2] -0.62295 0.2393 0.03784 0.03752\nalpha[3] -0.87933 0.2575 0.04072 0.08038\nalpha[4] -0.60450 0.2284 0.03611 0.04114\nalpha[5] -0.76798 0.2352 0.03718 0.03346\nalpha[6] -0.93794 0.2698 0.04265 0.08550\nbeta[1] 0.09926 0.1272 0.02011 0.04027\nbeta[2] -0.12892 0.1238 0.01958 0.02188\ndelta[1] 0.00000 0.0000 0.00000 0.00000\ndelta[2] -0.08678 0.5531 0.08745 0.08816\ngamma[1] -0.21134 0.1505 0.02380 0.03024\ngamma[2] 0.42391 0.1475 0.02332 0.02059\nsd 1.09296 0.3420 0.05407 0.05822\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] -0.1440 0.188747 0.53962 0.73109 0.92760\nalpha[2] -1.0709 -0.818813 -0.64110 -0.46286 -0.17836\nalpha[3] -1.3032 -1.089755 -0.87444 -0.70553 -0.38455\nalpha[4] -1.1100 -0.733088 -0.61047 -0.41997 -0.29323\nalpha[5] -1.2273 -0.909380 -0.77217 -0.59668 -0.41225\nalpha[6] -1.4128 -1.155018 -0.91217 -0.78489 -0.50260\nbeta[1] -0.1295 0.008414 0.09778 0.19075 0.33197\nbeta[2] -0.2931 -0.241737 -0.13348 -0.05350 0.07247\ndelta[1] 0.0000 0.000000 0.00000 0.00000 0.00000\ndelta[2] -1.2790 -0.352368 -0.04383 0.17977 0.94974\ngamma[1] -0.4221 -0.336772 -0.18240 -0.09536 0.02975\ngamma[2] 0.2020 0.331719 0.40058 0.52150 0.66638\nsd 0.5504 0.849041 1.06372 1.32746 1.70934\n\n\nThe predicted treatment benefit for a new patient with covariates w1 = 1.6 and w2 = 1.3 is given as:\n\nround(treatment.effect(ipd2, samples, newpatient = c(w1 = 1.6, w2 = 1.3)), 2)\n\n0.025 0.5 0.975 \n 0.56 1.19 3.91 \n\n\nIn other words, the aforementioned patient 1.19 (95% Credibility Interval: 0.56 to 3.91)" }, { "objectID": "chapter_16.html#estimating-heterogeous-treatment-effects-in-network-meta-analysis", "href": "chapter_16.html#estimating-heterogeous-treatment-effects-in-network-meta-analysis", "title": "9  Prediction of individual treatment effect using data from multiple studies", "section": "9.2 Estimating heterogeous treatment effects in network meta-analysis", - "text": "9.2 Estimating heterogeous treatment effects in network meta-analysis\n\n9.2.1 Example of a continuous outcome\n\n9.2.1.1 Setup\nWe use again the bipd package to simulate a dataset:\n\nds3 <- generate_ipdnma_example(type = \"continuous\")\nhead(ds3)\n\n studyid treat z1 z2 y\n1 1 1 -0.66008417 1.9658506 11\n2 1 2 0.72678195 -1.4045085 6\n3 1 1 -0.61407931 -3.4432115 10\n4 1 1 1.32732405 -0.0516703 11\n5 1 2 -1.75412839 1.5136265 11\n6 1 2 0.02939798 1.1166710 9\n\n\nLet us look into the data a bit in more detail:\n\n\n\n\n\n\nTable 9.3: The simulated dataset with a continuous outcome\n\n\n\n\n\n\n\n\n\n\n1\n(N=327)\n2\n(N=343)\n3\n(N=330)\nOverall\n(N=1000)\n\n\n\n\nz1\n\n\n\n\n\n\nMean (SD)\n0.0415 (1.03)\n-0.0323 (0.983)\n0.0513 (1.00)\n0.0194 (1.00)\n\n\nMedian [Min, Max]\n0.0928 [-2.76, 3.26]\n0.0363 [-3.03, 2.66]\n0.0130 [-2.78, 3.33]\n0.0458 [-3.03, 3.33]\n\n\nz2\n\n\n\n\n\n\nMean (SD)\n0.0170 (0.984)\n-0.0608 (0.974)\n-0.0176 (1.02)\n-0.0211 (0.993)\n\n\nMedian [Min, Max]\n-0.0393 [-3.44, 2.77]\n-0.113 [-2.32, 2.74]\n-0.0405 [-3.12, 3.36]\n-0.0480 [-3.44, 3.36]\n\n\nstudyid\n\n\n\n\n\n\n1\n51 (15.6%)\n49 (14.3%)\n0 (0%)\n100 (10.0%)\n\n\n2\n45 (13.8%)\n55 (16.0%)\n0 (0%)\n100 (10.0%)\n\n\n3\n43 (13.1%)\n57 (16.6%)\n0 (0%)\n100 (10.0%)\n\n\n4\n45 (13.8%)\n0 (0%)\n55 (16.7%)\n100 (10.0%)\n\n\n5\n51 (15.6%)\n0 (0%)\n49 (14.8%)\n100 (10.0%)\n\n\n6\n0 (0%)\n47 (13.7%)\n53 (16.1%)\n100 (10.0%)\n\n\n7\n0 (0%)\n46 (13.4%)\n54 (16.4%)\n100 (10.0%)\n\n\n8\n31 (9.5%)\n31 (9.0%)\n38 (11.5%)\n100 (10.0%)\n\n\n9\n31 (9.5%)\n24 (7.0%)\n45 (13.6%)\n100 (10.0%)\n\n\n10\n30 (9.2%)\n34 (9.9%)\n36 (10.9%)\n100 (10.0%)\n\n\n\n\n\n\n\n\n\n\n9.2.1.2 Model fitting\nWe will use the model shown in Equation 16.8 in the book. In addition, we will use Bayesian LASSO to penalize the treatment-covariate interactions.\n\nipd3 <- with(ds3, ipdnma.model.onestage(y = y, study = studyid, treat = treat, \n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"laplace\", \n type = \"random\"))\nipd3$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dnorm(mu[i], sigma)\n mu[i] <- alpha[studyid[i]] + inprod(beta[], X[i, ]) + \n inprod(gamma[treat[i], ], X[i, ]) + d[studyid[i], \n treatment.arm[i]]\n }\n sigma ~ dgamma(0.001, 0.001)\n for (i in 1:Nstudies) {\n w[i, 1] <- 0\n d[i, 1] <- 0\n for (k in 2:na[i]) {\n d[i, k] ~ dnorm(mdelta[i, k], taudelta[i, k])\n mdelta[i, k] <- delta[t[i, k]] - delta[t[i, 1]] + \n sw[i, k]\n taudelta[i, k] <- tau * 2 * (k - 1)/k\n w[i, k] <- d[i, k] - delta[t[i, k]] + delta[t[i, \n 1]]\n sw[i, k] <- sum(w[i, 1:(k - 1)])/(k - 1)\n }\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n for (k in 2:Ntreat) {\n delta[k] ~ dnorm(0, 0.001)\n }\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n lambda[1] <- 0\n lambda.inv[1] <- 0\n for (m in 2:Ntreat) {\n tt[m] <- lambda[m] * sigma\n lambda[m] <- pow(lambda.inv[m], -1)\n lambda.inv[m] ~ dunif(0, 5)\n }\n for (k in 1:Ncovariate) {\n gamma[1, k] <- 0\n for (m in 2:Ntreat) {\n gamma[m, k] ~ ddexp(0, tt[m])\n }\n }\n}\n<environment: 0x564369413e38>\n\nsamples <- ipd.run(ipd3, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 1000\n Unobserved stochastic nodes: 35\n Total graph size: 10141\n\nInitializing model\n\nsummary(samples)\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] 10.9677 0.05362 0.008477 0.012633\nalpha[2] 7.9965 0.04237 0.006700 0.006598\nalpha[3] 10.5814 0.04407 0.006969 0.009689\nalpha[4] 9.6109 0.04258 0.006732 0.009433\nalpha[5] 12.8797 0.06277 0.009925 0.017919\nalpha[6] 13.0960 0.05173 0.008179 0.012106\nalpha[7] 7.4242 0.04106 0.006492 0.006866\nalpha[8] 11.1889 0.04789 0.007572 0.012093\nalpha[9] 10.1681 0.05110 0.008080 0.011901\nalpha[10] 9.2562 0.05067 0.008011 0.007960\nbeta[1] 0.1987 0.01264 0.001999 0.002899\nbeta[2] 0.3108 0.02337 0.003695 0.009724\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -2.9560 0.05677 0.008977 0.012215\ndelta[3] -1.1215 0.05748 0.009088 0.012277\ngamma[1,1] 0.0000 0.00000 0.000000 0.000000\ngamma[2,1] -0.5851 0.02171 0.003432 0.004402\ngamma[3,1] -0.2693 0.01665 0.002633 0.003055\ngamma[1,2] 0.0000 0.00000 0.000000 0.000000\ngamma[2,2] 0.5731 0.03052 0.004826 0.011556\ngamma[3,2] 0.4100 0.03128 0.004946 0.009657\nsd 0.1165 0.04584 0.007248 0.014289\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] 10.8713 10.93528 10.9770 10.9957 11.0564\nalpha[2] 7.8914 7.98224 7.9952 8.0194 8.0640\nalpha[3] 10.4897 10.55539 10.5789 10.6047 10.6674\nalpha[4] 9.5556 9.57870 9.6041 9.6420 9.6946\nalpha[5] 12.7620 12.84730 12.8659 12.9303 13.0014\nalpha[6] 13.0186 13.05556 13.0884 13.1373 13.1875\nalpha[7] 7.3506 7.38837 7.4354 7.4488 7.4889\nalpha[8] 11.0971 11.15935 11.1877 11.2169 11.2628\nalpha[9] 10.0780 10.13356 10.1745 10.2050 10.2600\nalpha[10] 9.1503 9.22480 9.2645 9.2842 9.3348\nbeta[1] 0.1757 0.18981 0.1971 0.2077 0.2191\nbeta[2] 0.2777 0.28754 0.3087 0.3246 0.3552\ndelta[1] 0.0000 0.00000 0.0000 0.0000 0.0000\ndelta[2] -3.0496 -3.00345 -2.9629 -2.9149 -2.8592\ndelta[3] -1.1981 -1.15550 -1.1289 -1.0864 -1.0305\ngamma[1,1] 0.0000 0.00000 0.0000 0.0000 0.0000\ngamma[2,1] -0.6166 -0.60441 -0.5832 -0.5723 -0.5511\ngamma[3,1] -0.2977 -0.28106 -0.2688 -0.2562 -0.2478\ngamma[1,2] 0.0000 0.00000 0.0000 0.0000 0.0000\ngamma[2,2] 0.5275 0.54940 0.5698 0.6014 0.6188\ngamma[3,2] 0.3643 0.37990 0.4102 0.4374 0.4599\nsd 0.0596 0.08422 0.1028 0.1245 0.2309\n\n\nAs before, we can use the treatment.effect() function of bipd to estimate relative effects for new patients.\n\ntreatment.effect(ipd3, samples, newpatient= c(1,2))\n\n$`treatment 2`\n 0.025 0.5 0.975 \n-2.469337 -2.366859 -2.226574 \n\n$`treatment 3`\n 0.025 0.5 0.975 \n-0.6540734 -0.5590274 -0.3852781 \n\n\nThis gives us the relative effects for all treatments versus the reference. To obtain relative effects between active treatments we need some more coding:\n\nsamples.all=data.frame(rbind(samples[[1]], samples[[2]]))\nnewpatient= c(1,2)\nnewpatient <- (newpatient - ipd3$scale_mean)/ipd3$scale_sd\n\nmedian(\n samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n-\n (samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n)\n\n[1] -1.812932\n\nquantile(samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n -(samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n , probs = 0.025)\n\n 2.5% \n-1.978609 \n\nquantile(samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n -(samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n , probs = 0.975)\n\n 97.5% \n-1.643765 \n\n\n\n\n\n9.2.2 Modeling patient-level relative effects using randomized and observational evidence for a network of treatments\nWe will now follow Chapter 16.3.5 from the book. In this analysis we will not use penalization, and we will assume fixed effects. For an example with penalization and random effects, see part 2 of this vignettte.\n\n9.2.2.1 Setup\nWe generate a very simple dataset of three studies comparing three treatments. We will assume 2 RCTs and 1 non-randomized trial:\n\nds4 <- generate_ipdnma_example(type = \"continuous\")\nds4 <- ds4 %>% filter(studyid %in% c(1,4,10)) %>%\n mutate(studyid = factor(studyid) %>%\n recode_factor(\n \"1\" = \"1\",\n \"4\" = \"2\",\n \"10\" = \"3\"),\n design = ifelse(studyid == \"3\", \"nrs\", \"rct\"))\n\nThe sample size is as follows:\n\n\n \n s1 s2 s3\n treat A: 49 55 33\n treat B: 51 0 29\n treat C: 0 45 38\n\n\n\n\n9.2.2.2 Model fitting\nWe will use the design-adjusted model, equation 16.9 in the book. We will fit a two-stage fixed effects meta-analysis and we will use a variance inflation factor. The code below is used to specify the analysis of each individual study. Briefly, in each study we adjust the treatment effect for the prognostic factors z1 and z2, as well as their interaction with treat.\n\nlibrary(rjags)\n\nLoading required package: coda\n\n\nLinked to JAGS 4.3.0\n\n\nLoaded modules: basemod,bugs\n\nfirst.stage <- \"\nmodel{\n\nfor (i in 1:N){\n y[i] ~ dnorm(mu[i], tau) \n mu[i] <- a + inprod(b[], X[i,]) + inprod(c[,treat[i]], X[i,]) + d[treat[i]] \n}\nsigma ~ dunif(0, 5)\ntau <- pow(sigma, -2)\n\na ~ dnorm(0, 0.001)\n\nfor(k in 1:Ncovariate){\n b[k] ~ dnorm(0,0.001)\n}\n\nfor(k in 1:Ncovariate){\n c[k,1] <- 0\n}\n\ntauGamma <- pow(sdGamma,-1)\nsdGamma ~ dunif(0, 5)\n\nfor(k in 1:Ncovariate){\n for(t in 2:Ntreat){\n c[k,t] ~ ddexp(0, tauGamma)\n }\n}\n\nd[1] <- 0\nfor(t in 2:Ntreat){\n d[t] ~ dnorm(0, 0.001)\n}\n}\"\n\nSubsequently, we estimate the relative treatment effects in the first (randomized) study comparing treatments A and B:\n\nmodel1.spec <- textConnection(first.stage) \ndata1 <- with(ds4 %>% filter(studyid == 1), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = treat,\n Ncovariate = 2, \n Ntreat = 2))\njags.m <- jags.model(model1.spec, data = data1, n.chains = 2, n.adapt = 500,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.1 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s1 <- data.frame(as.matrix(samps4.1))\n\nsamps.all.s1 <- samps.all.s1[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\")]\ndelta.1 <- colMeans(samps.all.s1)\ncov.1 <- var(samps.all.s1)\n\nWe repeat the analysis for the second (randomized) study comparing treatments A and C:\n\nmodel1.spec <- textConnection(first.stage) \ndata2 <- with(ds4 %>% filter(studyid == 2), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = ifelse(treat == 3, 2, treat),\n Ncovariate = 2, \n Ntreat = 2))\njags.m <- jags.model(model1.spec, data = data2, n.chains = 2, n.adapt = 100,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.2 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s2 <- data.frame(as.matrix(samps4.2))\nsamps.all.s2 <- samps.all.s2[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\")]\ndelta.2 <- colMeans(samps.all.s2)\ncov.2 <- var(samps.all.s2)\n\nFinally, we analyze the third (non-randomized) study comparing treatments A, B, and C:\n\nmodel1.spec <- textConnection(first.stage) \ndata3 <- with(ds4 %>% filter(studyid == 3), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = treat,\n Ncovariate = 2, \n Ntreat = 3))\njags.m <- jags.model(model1.spec, data = data3, n.chains = 2, n.adapt = 100,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.3 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s3 <- data.frame(as.matrix(samps4.3))\n\nsamps.all.s3 <- samps.all.s3[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\", \"c.1.3.\", \n \"c.2.3.\", \"d.3.\")]\ndelta.3 <- colMeans(samps.all.s3)\ncov.3 <- var(samps.all.s3)\n\nThe corresponding treatment effect estimates are depicted below:\n\n\n\n\nTable 9.4: Treatment effect estimates.\n\n\nstudy\nB versus A\nC versus A\n\n\n\n\nstudy 1\n-2.925 (SE = 0.053 )\n\n\n\nstudy 2\n\n-1.118 (SE = 0.060 )\n\n\nstudy 3\n-2.966 (SE = 0.059 )\n-1.033 (SE = 0.054 )\n\n\n\n\n\n\n\n\nWe can now fit the second stage of the network meta-analysis. The corresponding JAGS model is specified below:\n\nsecond.stage <-\n\"model{\n \n #likelihood\n y1 ~ dmnorm(Mu1, Omega1)\n y2 ~ dmnorm(Mu2, Omega2)\n y3 ~ dmnorm(Mu3, Omega3*W)\n\n \n Omega1 <- inverse(cov.1)\n Omega2 <- inverse(cov.2)\n Omega3 <- inverse(cov.3)\n\n Mu1 <- c(gamma[,1], delta[2])\n Mu2 <- c(gamma[,2], delta[3]) \n Mu3 <- c(gamma[,1], delta[2],gamma[,2], delta[3])\n \n #parameters\n for(i in 1:2){\n gamma[i,1] ~ dnorm(0, 0.001)\n gamma[i,2] ~ dnorm(0, 0.001)\n }\n \n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n delta[3] ~ dnorm(0, 0.001)\n \n}\n\"\n\nWe can fit as follows:\n\nmodel1.spec <- textConnection(second.stage) \ndata3 <- list(y1 = delta.1, y2 = delta.2, y3 = delta.3, \n cov.1 = cov.1, cov.2 = cov.2, cov.3 = cov.3, W = 0.5)\n\njags.m <- jags.model(model1.spec, data = data3, n.chains = 2, n.adapt = 50,\n quiet = TRUE)\nparams <- c(\"delta\", \"gamma\") \nsamps4.3 <- coda.samples(jags.m, params, n.iter = 50)\n\n\nsummary(samps4.3)\n\n\nIterations = 1:50\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 50 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -2.9350 0.06288 0.006288 0.006319\ndelta[3] -1.1050 0.04409 0.004409 0.004059\ngamma[1,1] -0.8160 0.04711 0.004711 0.004727\ngamma[2,1] 0.8857 0.10500 0.010500 0.010550\ngamma[1,2] -0.4524 0.05131 0.005131 0.005144\ngamma[2,2] 0.3154 0.05123 0.005123 0.005085\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\ndelta[1] 0.0000 0.0000 0.0000 0.0000 0.0000\ndelta[2] -3.0155 -2.9691 -2.9371 -2.9134 -2.8454\ndelta[3] -1.2058 -1.1311 -1.0996 -1.0732 -1.0298\ngamma[1,1] -0.9083 -0.8393 -0.8133 -0.7887 -0.7247\ngamma[2,1] 0.8242 0.8727 0.8931 0.9269 0.9740\ngamma[1,2] -0.5746 -0.4779 -0.4419 -0.4224 -0.3735\ngamma[2,2] 0.2235 0.2758 0.3189 0.3489 0.4153\n\n# calculate treatment effects\nsamples.all = data.frame(rbind(samps4.3[[1]], samps4.3[[2]]))\nnewpatient = c(1,2)\n\nmedian(\n samples.all$delta.2. + samples.all$gamma.1.1.*newpatient[1] +\n samples.all$gamma.2.1.*newpatient[2]\n)\n\n[1] -1.968329\n\nquantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+\n samples.all$gamma.2.1.*newpatient[2]\n , probs = 0.025)\n\n 2.5% \n-2.150516 \n\nquantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+\n samples.all$gamma.2.1.*newpatient[2]\n , probs = 0.975)\n\n 97.5% \n-1.722643" + "text": "9.2 Estimating heterogeous treatment effects in network meta-analysis\n\n9.2.1 Example of a continuous outcome\n\n9.2.1.1 Setup\nWe use again the bipd package to simulate a dataset:\n\nds3 <- generate_ipdnma_example(type = \"continuous\")\nhead(ds3)\n\n studyid treat z1 z2 y\n1 1 1 0.2161967 1.76099639 11\n2 1 2 -0.5632438 -0.82201077 8\n3 1 2 0.6338783 1.01859585 9\n4 1 2 2.0654132 -0.46867968 6\n5 1 1 -2.0795661 -2.22359814 10\n6 1 2 -1.0992477 0.03972141 9\n\n\nLet us look into the data a bit in more detail:\n\n\n\n\n\n\nTable 9.3: The simulated dataset with a continuous outcome\n\n\n\n\n\n\n\n\n\n\n1\n(N=357)\n2\n(N=360)\n3\n(N=283)\nOverall\n(N=1000)\n\n\n\n\nz1\n\n\n\n\n\n\nMean (SD)\n-0.0313 (1.00)\n0.0765 (1.01)\n-0.0306 (1.03)\n0.00773 (1.01)\n\n\nMedian [Min, Max]\n-0.0411 [-3.13, 3.40]\n0.0951 [-3.11, 2.63]\n-0.0654 [-2.86, 2.42]\n0.00213 [-3.13, 3.40]\n\n\nz2\n\n\n\n\n\n\nMean (SD)\n-0.0980 (1.04)\n0.0522 (0.923)\n0.000392 (1.01)\n-0.0161 (0.993)\n\n\nMedian [Min, Max]\n-0.124 [-2.85, 3.38]\n0.0144 [-2.24, 3.06]\n0.0401 [-3.09, 2.56]\n-0.0155 [-3.09, 3.38]\n\n\nstudyid\n\n\n\n\n\n\n1\n48 (13.4%)\n52 (14.4%)\n0 (0%)\n100 (10.0%)\n\n\n2\n45 (12.6%)\n55 (15.3%)\n0 (0%)\n100 (10.0%)\n\n\n3\n49 (13.7%)\n51 (14.2%)\n0 (0%)\n100 (10.0%)\n\n\n4\n54 (15.1%)\n0 (0%)\n46 (16.3%)\n100 (10.0%)\n\n\n5\n60 (16.8%)\n0 (0%)\n40 (14.1%)\n100 (10.0%)\n\n\n6\n0 (0%)\n49 (13.6%)\n51 (18.0%)\n100 (10.0%)\n\n\n7\n0 (0%)\n44 (12.2%)\n56 (19.8%)\n100 (10.0%)\n\n\n8\n29 (8.1%)\n39 (10.8%)\n32 (11.3%)\n100 (10.0%)\n\n\n9\n34 (9.5%)\n34 (9.4%)\n32 (11.3%)\n100 (10.0%)\n\n\n10\n38 (10.6%)\n36 (10.0%)\n26 (9.2%)\n100 (10.0%)\n\n\n\n\n\n\n\n\n\n\n9.2.1.2 Model fitting\nWe will use the model shown in Equation 16.8 in the book. In addition, we will use Bayesian LASSO to penalize the treatment-covariate interactions.\n\nipd3 <- with(ds3, ipdnma.model.onestage(y = y, study = studyid, treat = treat, \n X = cbind(z1, z2), \n response = \"normal\", \n shrinkage = \"laplace\", \n type = \"random\"))\nipd3$model.JAGS\n\nfunction () \n{\n for (i in 1:Np) {\n y[i] ~ dnorm(mu[i], sigma)\n mu[i] <- alpha[studyid[i]] + inprod(beta[], X[i, ]) + \n inprod(gamma[treat[i], ], X[i, ]) + d[studyid[i], \n treatment.arm[i]]\n }\n sigma ~ dgamma(0.001, 0.001)\n for (i in 1:Nstudies) {\n w[i, 1] <- 0\n d[i, 1] <- 0\n for (k in 2:na[i]) {\n d[i, k] ~ dnorm(mdelta[i, k], taudelta[i, k])\n mdelta[i, k] <- delta[t[i, k]] - delta[t[i, 1]] + \n sw[i, k]\n taudelta[i, k] <- tau * 2 * (k - 1)/k\n w[i, k] <- d[i, k] - delta[t[i, k]] + delta[t[i, \n 1]]\n sw[i, k] <- sum(w[i, 1:(k - 1)])/(k - 1)\n }\n }\n sd ~ dnorm(0, 1)\n T(0, )\n tau <- pow(sd, -2)\n delta[1] <- 0\n for (k in 2:Ntreat) {\n delta[k] ~ dnorm(0, 0.001)\n }\n for (j in 1:Nstudies) {\n alpha[j] ~ dnorm(0, 0.001)\n }\n for (k in 1:Ncovariate) {\n beta[k] ~ dnorm(0, 0.001)\n }\n lambda[1] <- 0\n lambda.inv[1] <- 0\n for (m in 2:Ntreat) {\n tt[m] <- lambda[m] * sigma\n lambda[m] <- pow(lambda.inv[m], -1)\n lambda.inv[m] ~ dunif(0, 5)\n }\n for (k in 1:Ncovariate) {\n gamma[1, k] <- 0\n for (m in 2:Ntreat) {\n gamma[m, k] ~ ddexp(0, tt[m])\n }\n }\n}\n<environment: 0x5611757e7780>\n\nsamples <- ipd.run(ipd3, n.chains = 2, n.iter = 20, \n pars.save = c(\"alpha\", \"beta\", \"delta\", \"sd\", \"gamma\"))\n\nCompiling model graph\n Resolving undeclared variables\n Allocating nodes\nGraph information:\n Observed stochastic nodes: 1000\n Unobserved stochastic nodes: 35\n Total graph size: 10141\n\nInitializing model\n\nsummary(samples)\n\n\nIterations = 2001:2020\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 20 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\nalpha[1] 11.0054 0.04657 0.007363 0.012764\nalpha[2] 8.0765 0.03547 0.005608 0.005559\nalpha[3] 10.5203 0.03557 0.005624 0.006145\nalpha[4] 9.5929 0.05702 0.009016 0.006777\nalpha[5] 12.8219 0.04349 0.006877 0.009105\nalpha[6] 13.1271 0.04599 0.007272 0.012103\nalpha[7] 7.3314 0.04014 0.006347 0.005912\nalpha[8] 11.1654 0.06891 0.010895 0.015310\nalpha[9] 10.1536 0.05152 0.008146 0.011122\nalpha[10] 9.2352 0.03315 0.005242 0.004732\nbeta[1] 0.2107 0.02439 0.003857 0.009089\nbeta[2] 0.3100 0.01551 0.002452 0.004458\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -3.0186 0.04908 0.007760 0.007798\ndelta[3] -1.1271 0.06164 0.009745 0.009625\ngamma[1,1] 0.0000 0.00000 0.000000 0.000000\ngamma[2,1] -0.6337 0.03889 0.006149 0.015685\ngamma[3,1] -0.3310 0.02730 0.004316 0.010507\ngamma[1,2] 0.0000 0.00000 0.000000 0.000000\ngamma[2,2] 0.5642 0.02534 0.004007 0.004891\ngamma[3,2] 0.3652 0.02139 0.003382 0.005746\nsd 0.1302 0.02514 0.003975 0.003567\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\nalpha[1] 10.91963 10.9755 11.0018 11.0236 11.0965\nalpha[2] 8.01898 8.0560 8.0740 8.1030 8.1455\nalpha[3] 10.46305 10.4986 10.5161 10.5431 10.6024\nalpha[4] 9.45244 9.5602 9.5981 9.6326 9.6729\nalpha[5] 12.74635 12.7986 12.8239 12.8428 12.9038\nalpha[6] 13.04801 13.0916 13.1289 13.1556 13.2330\nalpha[7] 7.27966 7.2990 7.3230 7.3554 7.4213\nalpha[8] 11.06441 11.1190 11.1580 11.2117 11.2897\nalpha[9] 10.07002 10.1133 10.1553 10.1841 10.2688\nalpha[10] 9.18155 9.2155 9.2288 9.2508 9.3211\nbeta[1] 0.16436 0.1961 0.2096 0.2251 0.2565\nbeta[2] 0.28336 0.3011 0.3137 0.3207 0.3371\ndelta[1] 0.00000 0.0000 0.0000 0.0000 0.0000\ndelta[2] -3.10971 -3.0519 -3.0081 -2.9840 -2.9517\ndelta[3] -1.23184 -1.1583 -1.1172 -1.0915 -1.0214\ngamma[1,1] 0.00000 0.0000 0.0000 0.0000 0.0000\ngamma[2,1] -0.72128 -0.6462 -0.6357 -0.6134 -0.5690\ngamma[3,1] -0.37711 -0.3525 -0.3296 -0.3126 -0.2901\ngamma[1,2] 0.00000 0.0000 0.0000 0.0000 0.0000\ngamma[2,2] 0.51798 0.5498 0.5637 0.5833 0.6102\ngamma[3,2] 0.32928 0.3525 0.3653 0.3781 0.4135\nsd 0.09853 0.1120 0.1300 0.1498 0.1694\n\n\nAs before, we can use the treatment.effect() function of bipd to estimate relative effects for new patients.\n\ntreatment.effect(ipd3, samples, newpatient= c(1,2))\n\n$`treatment 2`\n 0.025 0.5 0.975 \n-2.657461 -2.479969 -2.382494 \n\n$`treatment 3`\n 0.025 0.5 0.975 \n-0.8781160 -0.6976577 -0.5854561 \n\n\nThis gives us the relative effects for all treatments versus the reference. To obtain relative effects between active treatments we need some more coding:\n\nsamples.all=data.frame(rbind(samples[[1]], samples[[2]]))\nnewpatient= c(1,2)\nnewpatient <- (newpatient - ipd3$scale_mean)/ipd3$scale_sd\n\nmedian(\n samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n-\n (samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n)\n\n[1] -1.773384\n\nquantile(samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n -(samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n , probs = 0.025)\n\n 2.5% \n-1.955488 \n\nquantile(samples.all$delta.2.+samples.all$gamma.2.1.*\n newpatient[1]+samples.all$gamma.2.2.*newpatient[2]\n -(samples.all$delta.3.+samples.all$gamma.3.1.*newpatient[1]+\n samples.all$gamma.3.2.*newpatient[2])\n , probs = 0.975)\n\n 97.5% \n-1.638554 \n\n\n\n\n\n9.2.2 Modeling patient-level relative effects using randomized and observational evidence for a network of treatments\nWe will now follow Chapter 16.3.5 from the book. In this analysis we will not use penalization, and we will assume fixed effects. For an example with penalization and random effects, see part 2 of this vignettte.\n\n9.2.2.1 Setup\nWe generate a very simple dataset of three studies comparing three treatments. We will assume 2 RCTs and 1 non-randomized trial:\n\nds4 <- generate_ipdnma_example(type = \"continuous\")\nds4 <- ds4 %>% filter(studyid %in% c(1,4,10)) %>%\n mutate(studyid = factor(studyid) %>%\n recode_factor(\n \"1\" = \"1\",\n \"4\" = \"2\",\n \"10\" = \"3\"),\n design = ifelse(studyid == \"3\", \"nrs\", \"rct\"))\n\nThe sample size is as follows:\n\n\n \n s1 s2 s3\n treat A: 41 49 36\n treat B: 59 0 32\n treat C: 0 51 32\n\n\n\n\n9.2.2.2 Model fitting\nWe will use the design-adjusted model, equation 16.9 in the book. We will fit a two-stage fixed effects meta-analysis and we will use a variance inflation factor. The code below is used to specify the analysis of each individual study. Briefly, in each study we adjust the treatment effect for the prognostic factors z1 and z2, as well as their interaction with treat.\n\nlibrary(rjags)\n\nLoading required package: coda\n\n\nLinked to JAGS 4.3.0\n\n\nLoaded modules: basemod,bugs\n\nfirst.stage <- \"\nmodel{\n\nfor (i in 1:N){\n y[i] ~ dnorm(mu[i], tau) \n mu[i] <- a + inprod(b[], X[i,]) + inprod(c[,treat[i]], X[i,]) + d[treat[i]] \n}\nsigma ~ dunif(0, 5)\ntau <- pow(sigma, -2)\n\na ~ dnorm(0, 0.001)\n\nfor(k in 1:Ncovariate){\n b[k] ~ dnorm(0,0.001)\n}\n\nfor(k in 1:Ncovariate){\n c[k,1] <- 0\n}\n\ntauGamma <- pow(sdGamma,-1)\nsdGamma ~ dunif(0, 5)\n\nfor(k in 1:Ncovariate){\n for(t in 2:Ntreat){\n c[k,t] ~ ddexp(0, tauGamma)\n }\n}\n\nd[1] <- 0\nfor(t in 2:Ntreat){\n d[t] ~ dnorm(0, 0.001)\n}\n}\"\n\nSubsequently, we estimate the relative treatment effects in the first (randomized) study comparing treatments A and B:\n\nmodel1.spec <- textConnection(first.stage) \ndata1 <- with(ds4 %>% filter(studyid == 1), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = treat,\n Ncovariate = 2, \n Ntreat = 2))\njags.m <- jags.model(model1.spec, data = data1, n.chains = 2, n.adapt = 500,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.1 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s1 <- data.frame(as.matrix(samps4.1))\n\nsamps.all.s1 <- samps.all.s1[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\")]\ndelta.1 <- colMeans(samps.all.s1)\ncov.1 <- var(samps.all.s1)\n\nWe repeat the analysis for the second (randomized) study comparing treatments A and C:\n\nmodel1.spec <- textConnection(first.stage) \ndata2 <- with(ds4 %>% filter(studyid == 2), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = ifelse(treat == 3, 2, treat),\n Ncovariate = 2, \n Ntreat = 2))\njags.m <- jags.model(model1.spec, data = data2, n.chains = 2, n.adapt = 100,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.2 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s2 <- data.frame(as.matrix(samps4.2))\nsamps.all.s2 <- samps.all.s2[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\")]\ndelta.2 <- colMeans(samps.all.s2)\ncov.2 <- var(samps.all.s2)\n\nFinally, we analyze the third (non-randomized) study comparing treatments A, B, and C:\n\nmodel1.spec <- textConnection(first.stage) \ndata3 <- with(ds4 %>% filter(studyid == 3), \n list(y = y,\n N = length(y), \n X = cbind(z1,z2), \n treat = treat,\n Ncovariate = 2, \n Ntreat = 3))\njags.m <- jags.model(model1.spec, data = data3, n.chains = 2, n.adapt = 100,\n quiet = TRUE)\nparams <- c(\"d\", \"c\") \nsamps4.3 <- coda.samples(jags.m, params, n.iter = 50)\nsamps.all.s3 <- data.frame(as.matrix(samps4.3))\n\nsamps.all.s3 <- samps.all.s3[, c(\"c.1.2.\", \"c.2.2.\", \"d.2.\", \"c.1.3.\", \n \"c.2.3.\", \"d.3.\")]\ndelta.3 <- colMeans(samps.all.s3)\ncov.3 <- var(samps.all.s3)\n\nThe corresponding treatment effect estimates are depicted below:\n\n\n\n\nTable 9.4: Treatment effect estimates.\n\n\nstudy\nB versus A\nC versus A\n\n\n\n\nstudy 1\n-3.029 (SE = 0.061 )\n\n\n\nstudy 2\n\n-1.097 (SE = 0.048 )\n\n\nstudy 3\n-2.901 (SE = 0.087 )\n-0.916 (SE = 0.086 )\n\n\n\n\n\n\n\n\nWe can now fit the second stage of the network meta-analysis. The corresponding JAGS model is specified below:\n\nsecond.stage <-\n\"model{\n \n #likelihood\n y1 ~ dmnorm(Mu1, Omega1)\n y2 ~ dmnorm(Mu2, Omega2)\n y3 ~ dmnorm(Mu3, Omega3*W)\n\n \n Omega1 <- inverse(cov.1)\n Omega2 <- inverse(cov.2)\n Omega3 <- inverse(cov.3)\n\n Mu1 <- c(gamma[,1], delta[2])\n Mu2 <- c(gamma[,2], delta[3]) \n Mu3 <- c(gamma[,1], delta[2],gamma[,2], delta[3])\n \n #parameters\n for(i in 1:2){\n gamma[i,1] ~ dnorm(0, 0.001)\n gamma[i,2] ~ dnorm(0, 0.001)\n }\n \n delta[1] <- 0\n delta[2] ~ dnorm(0, 0.001)\n delta[3] ~ dnorm(0, 0.001)\n \n}\n\"\n\nWe can fit as follows:\n\nmodel1.spec <- textConnection(second.stage) \ndata3 <- list(y1 = delta.1, y2 = delta.2, y3 = delta.3, \n cov.1 = cov.1, cov.2 = cov.2, cov.3 = cov.3, W = 0.5)\n\njags.m <- jags.model(model1.spec, data = data3, n.chains = 2, n.adapt = 50,\n quiet = TRUE)\nparams <- c(\"delta\", \"gamma\") \nsamps4.3 <- coda.samples(jags.m, params, n.iter = 50)\n\n\nsummary(samps4.3)\n\n\nIterations = 1:50\nThinning interval = 1 \nNumber of chains = 2 \nSample size per chain = 50 \n\n1. Empirical mean and standard deviation for each variable,\n plus standard error of the mean:\n\n Mean SD Naive SE Time-series SE\ndelta[1] 0.0000 0.00000 0.000000 0.000000\ndelta[2] -2.9990 0.06271 0.006271 0.006288\ndelta[3] -1.0496 0.04920 0.004920 0.004900\ngamma[1,1] -0.8046 0.04553 0.004553 0.004557\ngamma[2,1] 0.9338 0.06545 0.006545 0.006558\ngamma[1,2] -0.5747 0.06981 0.006981 0.006998\ngamma[2,2] 0.5486 0.07140 0.007140 0.008008\n\n2. Quantiles for each variable:\n\n 2.5% 25% 50% 75% 97.5%\ndelta[1] 0.0000 0.0000 0.0000 0.0000 0.0000\ndelta[2] -3.1093 -3.0394 -3.0055 -2.9685 -2.8799\ndelta[3] -1.1400 -1.0811 -1.0587 -1.0093 -0.9512\ngamma[1,1] -0.8979 -0.8354 -0.8034 -0.7816 -0.7112\ngamma[2,1] 0.8466 0.9164 0.9469 0.9655 1.0061\ngamma[1,2] -0.6650 -0.6082 -0.5804 -0.5503 -0.4759\ngamma[2,2] 0.4219 0.5109 0.5429 0.5854 0.6825\n\n# calculate treatment effects\nsamples.all = data.frame(rbind(samps4.3[[1]], samps4.3[[2]]))\nnewpatient = c(1,2)\n\nmedian(\n samples.all$delta.2. + samples.all$gamma.1.1.*newpatient[1] +\n samples.all$gamma.2.1.*newpatient[2]\n)\n\n[1] -1.916582\n\nquantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+\n samples.all$gamma.2.1.*newpatient[2]\n , probs = 0.025)\n\n 2.5% \n-2.123473 \n\nquantile(samples.all$delta.2.+samples.all$gamma.1.1.*newpatient[1]+\n samples.all$gamma.2.1.*newpatient[2]\n , probs = 0.975)\n\n 97.5% \n-1.773523" }, { "objectID": "chapter_16.html#version-info", "href": "chapter_16.html#version-info", "title": "9  Prediction of individual treatment effect using data from multiple studies", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] rjags_4-14 coda_0.19-4 ggplot2_3.4.4 bipd_0.3 \n[5] kableExtra_1.3.4 dplyr_1.1.4 table1_1.4.3 \n\nloaded via a namespace (and not attached):\n [1] highr_0.10 pillar_1.9.0 compiler_4.2.3 tools_4.2.3 \n [5] digest_0.6.33 gtable_0.3.4 lattice_0.20-45 jsonlite_1.8.7 \n [9] evaluate_0.23 lifecycle_1.0.4 tibble_3.2.1 viridisLite_0.4.2\n[13] pkgconfig_2.0.3 rlang_1.1.2 cli_3.6.1 rstudioapi_0.15.0\n[17] yaml_2.3.7 mvtnorm_1.2-3 xfun_0.41 fastmap_1.1.1 \n[21] withr_2.5.2 httr_1.4.7 stringr_1.5.1 knitr_1.45 \n[25] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 htmlwidgets_1.6.3\n[29] systemfonts_1.0.5 grid_4.2.3 webshot_0.5.5 tidyselect_1.2.0 \n[33] svglite_2.1.2 glue_1.6.2 R6_2.5.1 fansi_1.0.5 \n[37] rmarkdown_2.25 Formula_1.2-5 farver_2.1.1 magrittr_2.0.3 \n[41] codetools_0.2-19 scales_1.2.1 htmltools_0.5.7 rvest_1.0.3 \n[45] colorspace_2.1-0 labeling_0.4.3 utf8_1.2.4 stringi_1.8.2 \n[49] munsell_0.5.0" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] rjags_4-14 coda_0.19-4 ggplot2_3.4.4 bipd_0.3 \n[5] kableExtra_1.3.4 dplyr_1.1.4 table1_1.4.3 \n\nloaded via a namespace (and not attached):\n [1] highr_0.10 pillar_1.9.0 compiler_4.2.3 tools_4.2.3 \n [5] digest_0.6.33 gtable_0.3.4 lattice_0.20-45 jsonlite_1.8.7 \n [9] evaluate_0.23 lifecycle_1.0.4 tibble_3.2.1 viridisLite_0.4.2\n[13] pkgconfig_2.0.3 rlang_1.1.2 cli_3.6.1 rstudioapi_0.15.0\n[17] yaml_2.3.7 mvtnorm_1.2-4 xfun_0.41 fastmap_1.1.1 \n[21] withr_2.5.2 httr_1.4.7 stringr_1.5.1 knitr_1.45 \n[25] xml2_1.3.5 generics_0.1.3 vctrs_0.6.4 htmlwidgets_1.6.3\n[29] systemfonts_1.0.5 grid_4.2.3 webshot_0.5.5 tidyselect_1.2.0 \n[33] svglite_2.1.2 glue_1.6.2 R6_2.5.1 fansi_1.0.5 \n[37] rmarkdown_2.25 Formula_1.2-5 farver_2.1.1 magrittr_2.0.3 \n[41] codetools_0.2-19 scales_1.3.0 htmltools_0.5.7 rvest_1.0.3 \n[45] colorspace_2.1-0 labeling_0.4.3 utf8_1.2.4 stringi_1.8.2 \n[49] munsell_0.5.0" }, { "objectID": "chapter_16.html#references", @@ -389,7 +389,7 @@ "href": "chapter_18.html#version-info", "title": "10  Visualization and interpretation of individualized treatment rule results", "section": "Version info", - "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n [1] fastDummies_1.7.3 reshape2_1.4.4 truncnorm_1.0-9 table1_1.4.3 \n [5] kableExtra_1.3.4 knitr_1.45 ggpubr_0.6.0 MASS_7.3-58.2 \n [9] corrplot_0.92 caret_6.0-94 lattice_0.20-45 gbm_2.1.8.1 \n[13] tableone_0.13.2 rpart.plot_3.1.1 rpart_4.1.19 precmed_1.0.0 \n[17] DTRreg_2.0 magrittr_2.0.3 lubridate_1.9.3 forcats_1.0.0 \n[21] stringr_1.5.1 dplyr_1.1.4 purrr_1.0.2 readr_2.1.4 \n[25] tidyr_1.3.0 tibble_3.2.1 ggplot2_3.4.4 tidyverse_2.0.0 \n\nloaded via a namespace (and not attached):\n [1] colorspace_2.1-0 ggsignif_0.6.4 class_7.3-21 \n [4] ggridges_0.5.4 proxy_0.4-27 rstudioapi_0.15.0 \n [7] farver_2.1.1 listenv_0.9.0 prodlim_2023.08.28 \n [10] fansi_1.0.5 xml2_1.3.5 codetools_0.2-19 \n [13] splines_4.2.3 Formula_1.2-5 jsonlite_1.8.7 \n [16] pROC_1.18.5 broom_1.0.5 geepack_1.3.9 \n [19] data.tree_1.1.0 httr_1.4.7 DiagrammeR_1.0.10 \n [22] clipr_0.8.0 compiler_4.2.3 randomForestSRC_3.2.2\n [25] backports_1.4.1 Matrix_1.6-3 fastmap_1.1.1 \n [28] survey_4.2-1 cli_3.6.1 visNetwork_2.1.2 \n [31] htmltools_0.5.7 tools_4.2.3 gtable_0.3.4 \n [34] glue_1.6.2 MESS_0.5.12 Rcpp_1.0.11 \n [37] carData_3.0-5 vctrs_0.6.4 svglite_2.1.2 \n [40] nlme_3.1-162 iterators_1.0.14 timeDate_4022.108 \n [43] gower_1.0.1 xfun_0.41 globals_0.16.2 \n [46] rvest_1.0.3 timechange_0.2.0 lifecycle_1.0.4 \n [49] geeM_0.10.1 mosaicCore_0.9.4.0 rstatix_0.7.2 \n [52] future_1.33.0 scales_1.2.1 ipred_0.9-14 \n [55] hms_1.1.3 parallel_4.2.3 RColorBrewer_1.1-3 \n [58] yaml_2.3.7 labelled_2.12.0 gam_1.22-2 \n [61] stringi_1.8.2 highr_0.10 foreach_1.5.2 \n [64] e1071_1.7-13 hardhat_1.3.0 lava_1.7.3 \n [67] shape_1.4.6 systemfonts_1.0.5 rlang_1.1.2 \n [70] pkgconfig_2.0.3 evaluate_0.23 labeling_0.4.3 \n [73] recipes_1.0.8 htmlwidgets_1.6.3 cowplot_1.1.1 \n [76] tidyselect_1.2.0 parallelly_1.36.0 ggformula_0.12.0 \n [79] plyr_1.8.9 R6_2.5.1 generics_0.1.3 \n [82] DBI_1.1.3 pillar_1.9.0 haven_2.5.3 \n [85] withr_2.5.2 survival_3.5-3 abind_1.4-5 \n [88] nnet_7.3-18 future.apply_1.11.0 car_3.1-2 \n [91] utf8_1.2.4 tzdb_0.4.0 rmarkdown_2.25 \n [94] grid_4.2.3 data.table_1.14.8 ModelMetrics_1.2.2.2 \n [97] webshot_0.5.5 digest_0.6.33 stats4_4.2.3 \n[100] munsell_0.5.0 glmnet_4.1-8 viridisLite_0.4.2 \n[103] mitools_2.4" + "text": "Version info\nThis chapter was rendered using the following version of R and its packages:\n\n\nR version 4.2.3 (2023-03-15)\nPlatform: x86_64-pc-linux-gnu (64-bit)\nRunning under: Ubuntu 22.04.3 LTS\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3\nLAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so\n\nlocale:\n [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n [1] fastDummies_1.7.3 reshape2_1.4.4 truncnorm_1.0-9 table1_1.4.3 \n [5] kableExtra_1.3.4 knitr_1.45 ggpubr_0.6.0 MASS_7.3-58.2 \n [9] corrplot_0.92 caret_6.0-94 lattice_0.20-45 gbm_2.1.8.1 \n[13] tableone_0.13.2 rpart.plot_3.1.1 rpart_4.1.19 precmed_1.0.0 \n[17] DTRreg_2.0 magrittr_2.0.3 lubridate_1.9.3 forcats_1.0.0 \n[21] stringr_1.5.1 dplyr_1.1.4 purrr_1.0.2 readr_2.1.4 \n[25] tidyr_1.3.0 tibble_3.2.1 ggplot2_3.4.4 tidyverse_2.0.0 \n\nloaded via a namespace (and not attached):\n [1] colorspace_2.1-0 ggsignif_0.6.4 class_7.3-21 \n [4] ggridges_0.5.4 proxy_0.4-27 rstudioapi_0.15.0 \n [7] farver_2.1.1 listenv_0.9.0 prodlim_2023.08.28 \n [10] fansi_1.0.5 xml2_1.3.5 codetools_0.2-19 \n [13] splines_4.2.3 Formula_1.2-5 jsonlite_1.8.7 \n [16] pROC_1.18.5 broom_1.0.5 geepack_1.3.9 \n [19] data.tree_1.1.0 httr_1.4.7 DiagrammeR_1.0.10 \n [22] clipr_0.8.0 compiler_4.2.3 randomForestSRC_3.2.2\n [25] backports_1.4.1 Matrix_1.6-3 fastmap_1.1.1 \n [28] survey_4.2-1 cli_3.6.1 visNetwork_2.1.2 \n [31] htmltools_0.5.7 tools_4.2.3 gtable_0.3.4 \n [34] glue_1.6.2 MESS_0.5.12 Rcpp_1.0.11 \n [37] carData_3.0-5 vctrs_0.6.4 svglite_2.1.2 \n [40] nlme_3.1-162 iterators_1.0.14 timeDate_4022.108 \n [43] gower_1.0.1 xfun_0.41 globals_0.16.2 \n [46] rvest_1.0.3 timechange_0.2.0 lifecycle_1.0.4 \n [49] geeM_0.10.1 mosaicCore_0.9.4.0 rstatix_0.7.2 \n [52] future_1.33.0 scales_1.3.0 ipred_0.9-14 \n [55] hms_1.1.3 parallel_4.2.3 RColorBrewer_1.1-3 \n [58] yaml_2.3.7 labelled_2.12.0 gam_1.22-2 \n [61] stringi_1.8.2 highr_0.10 foreach_1.5.2 \n [64] e1071_1.7-13 hardhat_1.3.0 lava_1.7.3 \n [67] shape_1.4.6 systemfonts_1.0.5 rlang_1.1.2 \n [70] pkgconfig_2.0.3 evaluate_0.23 labeling_0.4.3 \n [73] recipes_1.0.8 htmlwidgets_1.6.3 cowplot_1.1.1 \n [76] tidyselect_1.2.0 parallelly_1.36.0 ggformula_0.12.0 \n [79] plyr_1.8.9 R6_2.5.1 generics_0.1.3 \n [82] DBI_1.1.3 pillar_1.9.0 haven_2.5.3 \n [85] withr_2.5.2 survival_3.5-3 abind_1.4-5 \n [88] nnet_7.3-18 future.apply_1.11.0 car_3.1-2 \n [91] utf8_1.2.4 tzdb_0.4.0 rmarkdown_2.25 \n [94] grid_4.2.3 data.table_1.14.8 ModelMetrics_1.2.2.2 \n [97] webshot_0.5.5 digest_0.6.33 stats4_4.2.3 \n[100] munsell_0.5.0 glmnet_4.1-8 viridisLite_0.4.2 \n[103] mitools_2.4" }, { "objectID": "chapter_18.html#references", @@ -403,6 +403,6 @@ "href": "authors.html", "title": "11  Book Authors", "section": "", - "text": "We gratefully acknowledge the contribution from the following authors:\n\nAuthors\n\n\n\n\n\n\nAuthor\nAffiliation\n\n\n\n\nAlf Scotland\nBiogen Digital Health International GmbH, Baar, Switzerland\n\n\nAmr Makady\nThe Janssen Pharmaceutical Companies of Johnson & Johnson, Breda, The Netherlands\n\n\nCarl de Moor\nCertara, Cambridge, MA, United States\n\n\nChangyu Shen\nBiogen, Cambridge, MA, United States\n\n\nChristina Read\nUtrecht University, Utrecht, The Netherlands\n\n\nElvira D’Andrea\nAbbVie Inc., Boston, MA, United States\n\n\nFabio Pellegrini\nBiogen Spain, Madrid, Spain\n\n\nGabrielle Simoneau\nBiogen Canada, Toronto, Canada\n\n\nGerko Vink\nUtrecht University, Utrecht, The Netherlands\n\n\nGrammati Sarri\nCytel Inc., London, United Kingdom\n\n\nHanne Oberman\nUtrecht University, Utrecht, The Netherlands\n\n\nJamie Elvidge\nNational Institute for Health and Care Excellence (NICE), Manchester, United Kingdom\n\n\nJanie Coulombe\nUniversité de Montréal, Montréal, Canada\n\n\nJeremy Dietz\nNational Institute for Health and Care Excellence (NICE), London, United Kingdom\n\n\nJohanna Muñoz\nJulius Center for Health Sciences and Primary Care, University Medical Center Utrecht, Utrecht University, Utrecht, The Netherlands\n\n\nKonstantina Chalkou\nInstitute of Social and Preventive Medicine (ISPM), University of Bern, Bern, Switzerland\n\n\nMohammad Ehsanul Karim\nSchool of Population and Public Health, University of British Columbia, Vancouver, Canada\n\n\nTammy Jiang\nBiogen, Cambridge, MA, United States" + "text": "We gratefully acknowledge the contribution from the following authors:\n\nAuthors\n\n\n\n\n\n\nAuthor\nAffiliation\n\n\n\n\nAlf Scotland\nBiogen Digital Health International GmbH, Baar, Switzerland\n\n\nAmr Makady\nThe Janssen Pharmaceutical Companies of Johnson & Johnson, Breda, The Netherlands\n\n\nCarl de Moor\nCertara, Cambridge, MA, United States\n\n\nChangyu Shen\nBiogen, Cambridge, MA, United States\n\n\nChristina Read\nUtrecht University, Utrecht, The Netherlands\n\n\nElvira D’Andrea\nAbbVie Inc., Boston, MA, United States\n\n\nFabio Pellegrini\nBiogen Spain, Madrid, Spain\n\n\nGabrielle Simoneau\nBiogen Canada, Toronto, Canada\n\n\nGerko Vink\nUtrecht University, Utrecht, The Netherlands\n\n\nGrammati Sarri\nCytel Inc., London, United Kingdom\n\n\nHanne Oberman\nUtrecht University, Utrecht, The Netherlands\n\n\nJamie Elvidge\nNational Institute for Health and Care Excellence (NICE), Manchester, United Kingdom\n\n\nJanie Coulombe\nUniversité de Montréal, Montréal, Canada\n\n\nJeremy Dietz\nNational Institute for Health and Care Excellence (NICE), London, United Kingdom\n\n\nJohanna Muñoz\nJulius Center for Health Sciences and Primary Care, University Medical Center Utrecht, Utrecht University, Utrecht, The Netherlands\n\n\nKatrine Strandberg-Larsen\nDepartment of Public Health, University of Copenhagen, Copenhagen, Denmark\n\n\nKonstantina Chalkou\nInstitute of Social and Preventive Medicine (ISPM), University of Bern, Bern, Switzerland\n\n\nMohammad Ehsanul Karim\nSchool of Population and Public Health, University of British Columbia, Vancouver, Canada\n\n\nTammy Jiang\nBiogen, Cambridge, MA, United States" } ] \ No newline at end of file