dat.pagliaro1992.Rd
Results from 26 trials examining the effectiveness of beta-blockers and sclerotherapy for the prevention of first bleeding in patients with cirrhosis
dat.pagliaro1992
The data frame contains the following columns:
study | numeric | study id |
trt | character | either beta-blockers, sclerotherapy, or control |
xi | numeric | number of patients with first bleeding |
ni | numeric | number of patients treated |
The dataset includes the results from 26 randomized controlled trials examining the effectiveness of nonsurgical treatments for the prevention of first bleeding in patients with cirrhosis. Patients were either treated with beta-blockers, endoscopic sclerotherapy, or with a nonactive treatment (control). Two trials included all three treatment conditions, 7 trials compared beta-blockers against control, and 17 trials compared sclerotherapy against control. The dataset has been used in various papers to illustrate methods for conducting a network meta-analysis / mixed treatment comparison.
Pagliaro, L., D'Amico, G., Sörensen, T. I. A., Lebrec, D., Burroughs, A. K., Morabito, A., Tiné, F., Politi, F., & Traina, M. (1992). Prevention of first bleeding in cirrhosis: A meta-analysis of randomized trials of nonsurgical treatment. Annals of Internal Medicine, 117(1), 59–70. https://doi.org/10.7326/0003-4819-117-1-59
medicine, odds ratios, Mantel-Haenszel method, network meta-analysis
### copy data into 'dat' and examine data
dat <- dat.pagliaro1992
dat
#> study trt xi ni
#> 1 1 beta-blockers 2 43
#> 2 1 sclerotherapy 9 42
#> 3 1 control 13 41
#> 4 2 beta-blockers 12 68
#> 5 2 sclerotherapy 13 73
#> 6 2 control 13 72
#> 7 3 beta-blockers 4 20
#> 8 3 control 4 16
#> 9 4 beta-blockers 20 116
#> 10 4 control 30 111
#> 11 5 beta-blockers 1 30
#> 12 5 control 11 49
#> 13 6 beta-blockers 7 53
#> 14 6 control 10 53
#> 15 7 beta-blockers 18 85
#> 16 7 control 31 89
#> 17 8 beta-blockers 2 51
#> 18 8 control 11 51
#> 19 9 beta-blockers 8 23
#> 20 9 control 2 25
#> 21 10 sclerotherapy 4 18
#> 22 10 control 0 19
#> 23 11 sclerotherapy 3 35
#> 24 11 control 22 36
#> 25 12 sclerotherapy 5 56
#> 26 12 control 30 53
#> 27 13 sclerotherapy 5 16
#> 28 13 control 6 18
#> 29 14 sclerotherapy 3 23
#> 30 14 control 9 22
#> 31 15 sclerotherapy 11 49
#> 32 15 control 31 46
#> 33 16 sclerotherapy 19 53
#> 34 16 control 9 60
#> 35 17 sclerotherapy 17 53
#> 36 17 control 26 60
#> 37 18 sclerotherapy 10 71
#> 38 18 control 29 69
#> 39 19 sclerotherapy 12 41
#> 40 19 control 14 41
#> 41 20 sclerotherapy 0 21
#> 42 20 control 3 20
#> 43 21 sclerotherapy 13 33
#> 44 21 control 14 35
#> 45 22 sclerotherapy 31 143
#> 46 22 control 23 138
#> 47 23 sclerotherapy 20 55
#> 48 23 control 19 51
#> 49 24 sclerotherapy 3 13
#> 50 24 control 12 16
#> 51 25 sclerotherapy 3 21
#> 52 25 control 5 28
#> 53 26 sclerotherapy 6 22
#> 54 26 control 2 24
### load metafor package
library(metafor)
### restructure dataset to a contrast-based format
dat.c <- to.wide(dat, study="study", grp="trt", grpvars=3:4)
dat.c
#> study trt.1 xi.1 ni.1 trt.2 xi.2 ni.2 id comp design
#> 1 1 beta-blockers 2 43 control 13 41 1 be-co be-sc-co
#> 2 1 sclerotherapy 9 42 control 13 41 2 sc-co be-sc-co
#> 3 2 beta-blockers 12 68 control 13 72 3 be-co be-sc-co
#> 4 2 sclerotherapy 13 73 control 13 72 4 sc-co be-sc-co
#> 5 3 beta-blockers 4 20 control 4 16 5 be-co be-co
#> 6 4 beta-blockers 20 116 control 30 111 6 be-co be-co
#> 7 5 beta-blockers 1 30 control 11 49 7 be-co be-co
#> 8 6 beta-blockers 7 53 control 10 53 8 be-co be-co
#> 9 7 beta-blockers 18 85 control 31 89 9 be-co be-co
#> 10 8 beta-blockers 2 51 control 11 51 10 be-co be-co
#> 11 9 beta-blockers 8 23 control 2 25 11 be-co be-co
#> 12 10 sclerotherapy 4 18 control 0 19 12 sc-co sc-co
#> 13 11 sclerotherapy 3 35 control 22 36 13 sc-co sc-co
#> 14 12 sclerotherapy 5 56 control 30 53 14 sc-co sc-co
#> 15 13 sclerotherapy 5 16 control 6 18 15 sc-co sc-co
#> 16 14 sclerotherapy 3 23 control 9 22 16 sc-co sc-co
#> 17 15 sclerotherapy 11 49 control 31 46 17 sc-co sc-co
#> 18 16 sclerotherapy 19 53 control 9 60 18 sc-co sc-co
#> 19 17 sclerotherapy 17 53 control 26 60 19 sc-co sc-co
#> 20 18 sclerotherapy 10 71 control 29 69 20 sc-co sc-co
#> 21 19 sclerotherapy 12 41 control 14 41 21 sc-co sc-co
#> 22 20 sclerotherapy 0 21 control 3 20 22 sc-co sc-co
#> 23 21 sclerotherapy 13 33 control 14 35 23 sc-co sc-co
#> 24 22 sclerotherapy 31 143 control 23 138 24 sc-co sc-co
#> 25 23 sclerotherapy 20 55 control 19 51 25 sc-co sc-co
#> 26 24 sclerotherapy 3 13 control 12 16 26 sc-co sc-co
#> 27 25 sclerotherapy 3 21 control 5 28 27 sc-co sc-co
#> 28 26 sclerotherapy 6 22 control 2 24 28 sc-co sc-co
### Mantel-Haenszel results for beta-blockers and sclerotherapy versus control, respectively
rma.mh(measure="OR", ai=xi.1, n1i=ni.1, ci=xi.2, n2i=ni.2,
data=dat.c, subset=(trt.1=="beta-blockers"), digits=2)
#>
#> Equal-Effects Model (k = 9)
#>
#> I^2 (total heterogeneity / total variability): 57.85%
#> H^2 (total variability / sampling variability): 2.37
#>
#> Test for Heterogeneity:
#> Q(df = 8) = 18.98, p-val = 0.01
#>
#> Model Results (log scale):
#>
#> estimate se zval pval ci.lb ci.ub
#> -0.62 0.16 -3.78 <.01 -0.94 -0.30
#>
#> Model Results (OR scale):
#>
#> estimate ci.lb ci.ub
#> 0.54 0.39 0.74
#>
#> Cochran-Mantel-Haenszel Test: CMH = 14.14, df = 1, p-val < 0.01
#> Tarone's Test for Heterogeneity: X^2 = 22.76, df = 8, p-val < 0.01
#>
rma.mh(measure="OR", ai=xi.1, n1i=ni.1, ci=xi.2, n2i=ni.2,
data=dat.c, subset=(trt.1=="sclerotherapy"), digits=2)
#>
#> Equal-Effects Model (k = 19)
#>
#> I^2 (total heterogeneity / total variability): 77.94%
#> H^2 (total variability / sampling variability): 4.53
#>
#> Test for Heterogeneity:
#> Q(df = 18) = 81.60, p-val < .01
#>
#> Model Results (log scale):
#>
#> estimate se zval pval ci.lb ci.ub
#> -0.53 0.11 -4.84 <.01 -0.74 -0.31
#>
#> Model Results (OR scale):
#>
#> estimate ci.lb ci.ub
#> 0.59 0.48 0.73
#>
#> Cochran-Mantel-Haenszel Test: CMH = 24.20, df = 1, p-val < 0.01
#> Tarone's Test for Heterogeneity: X^2 = 94.46, df = 18, p-val < 0.01
#>
### calculate log odds for each study arm
dat <- escalc(measure="PLO", xi=xi, ni=ni, data=dat)
dat
#>
#> study trt xi ni yi vi
#> 1 1 beta-blockers 2 43 -3.0204 0.5244
#> 2 1 sclerotherapy 9 42 -1.2993 0.1414
#> 3 1 control 13 41 -0.7673 0.1126
#> 4 2 beta-blockers 12 68 -1.5404 0.1012
#> 5 2 sclerotherapy 13 73 -1.5294 0.0936
#> 6 2 control 13 72 -1.5126 0.0939
#> 7 3 beta-blockers 4 20 -1.3863 0.3125
#> 8 3 control 4 16 -1.0986 0.3333
#> 9 4 beta-blockers 20 116 -1.5686 0.0604
#> 10 4 control 30 111 -0.9933 0.0457
#> 11 5 beta-blockers 1 30 -3.3673 1.0345
#> 12 5 control 11 49 -1.2397 0.1172
#> 13 6 beta-blockers 7 53 -1.8827 0.1646
#> 14 6 control 10 53 -1.4586 0.1233
#> 15 7 beta-blockers 18 85 -1.3143 0.0705
#> 16 7 control 31 89 -0.6265 0.0495
#> 17 8 beta-blockers 2 51 -3.1987 0.5204
#> 18 8 control 11 51 -1.2910 0.1159
#> 19 9 beta-blockers 8 23 -0.6286 0.1917
#> 20 9 control 2 25 -2.4423 0.5435
#> 21 10 sclerotherapy 4 18 -1.2528 0.3214
#> 22 10 control 0 19 -3.6636 2.0513
#> 23 11 sclerotherapy 3 35 -2.3671 0.3646
#> 24 11 control 22 36 0.4520 0.1169
#> 25 12 sclerotherapy 5 56 -2.3224 0.2196
#> 26 12 control 30 53 0.2657 0.0768
#> 27 13 sclerotherapy 5 16 -0.7885 0.2909
#> 28 13 control 6 18 -0.6931 0.2500
#> 29 14 sclerotherapy 3 23 -1.8971 0.3833
#> 30 14 control 9 22 -0.3677 0.1880
#> 31 15 sclerotherapy 11 49 -1.2397 0.1172
#> 32 15 control 31 46 0.7259 0.0989
#> 33 16 sclerotherapy 19 53 -0.5819 0.0820
#> 34 16 control 9 60 -1.7346 0.1307
#> 35 17 sclerotherapy 17 53 -0.7503 0.0866
#> 36 17 control 26 60 -0.2683 0.0679
#> 37 18 sclerotherapy 10 71 -1.8083 0.1164
#> 38 18 control 29 69 -0.3216 0.0595
#> 39 19 sclerotherapy 12 41 -0.8824 0.1178
#> 40 19 control 14 41 -0.6568 0.1085
#> 41 20 sclerotherapy 0 21 -3.7612 2.0465
#> 42 20 control 3 20 -1.7346 0.3922
#> 43 21 sclerotherapy 13 33 -0.4308 0.1269
#> 44 21 control 14 35 -0.4055 0.1190
#> 45 22 sclerotherapy 31 143 -1.2845 0.0412
#> 46 22 control 23 138 -1.6094 0.0522
#> 47 23 sclerotherapy 20 55 -0.5596 0.0786
#> 48 23 control 19 51 -0.5213 0.0839
#> 49 24 sclerotherapy 3 13 -1.2040 0.4333
#> 50 24 control 12 16 1.0986 0.3333
#> 51 25 sclerotherapy 3 21 -1.7918 0.3889
#> 52 25 control 5 28 -1.5261 0.2435
#> 53 26 sclerotherapy 6 22 -0.9808 0.2292
#> 54 26 control 2 24 -2.3979 0.5455
#>
### turn treatment variable into factor and set reference level
dat$trt <- relevel(factor(dat$trt), ref="control")
### add a space before each level (this makes the output a bit more legible)
levels(dat$trt) <- paste0(" ", levels(dat$trt))
### network meta-analysis using an arm-based random-effects model with fixed study effects
### (by setting rho=1/2, tau^2 reflects the amount of heterogeneity for all treatment comparisons)
res <- rma.mv(yi, vi, mods = ~ 0 + factor(study) + trt, random = ~ trt | study, rho=1/2, data=dat)
res
#>
#> Multivariate Meta-Analysis Model (k = 54; method: REML)
#>
#> Variance Components:
#>
#> outer factor: study (nlvls = 26)
#> inner factor: trt (nlvls = 3)
#>
#> estim sqrt fixed
#> tau^2 0.9913 0.9957 no
#> rho 0.5000 yes
#>
#> Test for Residual Heterogeneity:
#> QE(df = 26) = 99.3092, p-val < .0001
#>
#> Test of Moderators (coefficients 1:28):
#> QM(df = 28) = 56.4980, p-val = 0.0011
#>
#> Model Results:
#>
#> estimate se zval pval ci.lb ci.ub
#> factor(study)1 -1.1071 0.8684 -1.2748 0.2024 -2.8091 0.5950
#> factor(study)2 -1.0951 0.8483 -1.2910 0.1967 -2.7577 0.5675
#> factor(study)3 -0.8816 0.9712 -0.9077 0.3641 -2.7851 1.0220
#> factor(study)4 -0.9237 0.8980 -1.0286 0.3037 -2.6838 0.8364
#> factor(study)5 -1.6433 0.9724 -1.6900 0.0910 -3.5491 0.2625 .
#> factor(study)6 -1.3172 0.9221 -1.4286 0.1531 -3.1244 0.4900
#> factor(study)7 -0.6125 0.8997 -0.6808 0.4960 -2.3758 1.1509
#> factor(study)8 -1.7386 0.9479 -1.8341 0.0666 -3.5966 0.1193 .
#> factor(study)9 -0.9195 0.9816 -0.9367 0.3489 -2.8435 1.0045
#> factor(study)10 -1.3962 1.0750 -1.2988 0.1940 -3.5032 0.7107
#> factor(study)11 -0.4776 0.9305 -0.5133 0.6077 -2.3015 1.3462
#> factor(study)12 -0.6253 0.9099 -0.6872 0.4920 -2.4086 1.1581
#> factor(study)13 -0.4554 0.9463 -0.4812 0.6304 -2.3101 1.3994
#> factor(study)14 -0.7814 0.9455 -0.8264 0.4086 -2.6346 1.0718
#> factor(study)15 0.0456 0.9027 0.0505 0.9597 -1.7238 1.8149
#> factor(study)16 -0.8312 0.9032 -0.9203 0.3574 -2.6014 0.9390
#> factor(study)17 -0.2181 0.8941 -0.2440 0.8072 -1.9706 1.5343
#> factor(study)18 -0.7510 0.8961 -0.8380 0.4020 -2.5074 1.0055
#> factor(study)19 -0.4790 0.9043 -0.5297 0.5963 -2.2514 1.2934
#> factor(study)20 -2.1080 1.0763 -1.9585 0.0502 -4.2176 0.0016 .
#> factor(study)21 -0.1279 0.9071 -0.1410 0.8878 -1.9057 1.6499
#> factor(study)22 -1.1504 0.8861 -1.2983 0.1942 -2.8871 0.5863
#> factor(study)23 -0.2472 0.8957 -0.2760 0.7825 -2.0028 1.5083
#> factor(study)24 0.2882 0.9746 0.2957 0.7675 -1.6219 2.1983
#> factor(study)25 -1.3812 0.9557 -1.4453 0.1484 -3.2542 0.4919
#> factor(study)26 -1.2182 0.9737 -1.2511 0.2109 -3.1266 0.6902
#> trt beta-blockers -0.7163 0.3871 -1.8508 0.0642 -1.4750 0.0423 .
#> trt sclerotherapy -0.5839 0.2684 -2.1753 0.0296 -1.1101 -0.0578 *
#>
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
### average odds ratio comparing beta-blockers and sclerotherapy versus control, respectively
predict(res, newmods=c(rep(0,26), 1, 0), transf=exp, digits=2)
#>
#> pred ci.lb ci.ub pi.lb pi.ub
#> 0.49 0.23 1.04 0.06 3.96
#>
predict(res, newmods=c(rep(0,26), 0, 1), transf=exp, digits=2)
#>
#> pred ci.lb ci.ub pi.lb pi.ub
#> 0.56 0.33 0.94 0.07 4.21
#>
### average odds ratio comparing beta-blockers versus sclerotherapy
predict(res, newmods=c(rep(0,26), 1, -1), transf=exp, digits=2)
#>
#> pred ci.lb ci.ub pi.lb pi.ub
#> 0.88 0.36 2.11 0.10 7.45
#>