library(meta)
## Loading 'meta' package (version 4.19-0).
## Type 'help(meta)' for a brief overview.
library(metasens)
## Loading 'metasens' package (version 0.6-0).
The outcome of interest, that is, clinical improvement, is binary and the brief overview provided by help(meta) reveals that the appropriate R function is metabin. By default, the Risk Ratio (RR) is used in metabin as the effect measure, and it is not necessary to specify this explicitly (which could be done setting the argument sm = “ RR ”).
The first four arguments of metabin are mandatory and define the variables containing the number of patients who experienced a clinical improvement and the number of randomised patients (for which we have the information), for the experimental arm and the control arm, respectively. The function performs both fixed effect and random effects meta-analysis,12 using the dataset joy (argument data). The argument studlab defines study labels that are printed in the output and shown in the forest plot, here as the name of the first author and the publication year. The default method to calculate the fixed effect estimate is Mantel-Haenszel.13 The inverse variance weighting could be used for pooling by specifying method = “ Inverse ”, which was used in Chaimani et al.6 The method to estimate the between-study variance in the random effects model can be specified with the argument method.tau; in this example we chose the method by Paule and Mandel,14 which is a recommended method for binary outcomes.
joy=read.csv("Joy2006.txt")
joy
#a new variable to classify missing data for subgroup anaysis of stuides with and without missing data
joy$miss = ifelse((joy$drop.h + joy$drop.p) == 0 , c( "Without missing data" ), c( "With missing data" ))
#see https://cran.r-project.org/web/packages/meta/meta.pdf for parameter options
m.publ = metabin (resp.h, resp.h + fail.h , resp.p, resp.p + fail.p, data = joy,
studlab = paste0 (author, " ( ", year, " )"), method.tau = "PM" )
m.publ
## RR 95%-CI %W(fixed) %W(random)
## Arvanitis ( 1997 ) 1.4167 [0.8911; 2.2522] 21.1 14.1
## Beasley ( 1996 ) 1.0489 [0.7316; 1.5039] 27.5 15.6
## Bechelli ( 1983 ) 6.2069 [1.5196; 25.3532] 2.3 4.7
## Borison ( 1992 ) 7.0000 [0.4018; 121.9370] 0.6 1.4
## Chouinard ( 1993 ) 3.4921 [1.1132; 10.9548] 3.5 6.3
## Durost ( 1964 ) 8.6842 [1.2581; 59.9463] 1.3 2.8
## Garry ( 1962 ) 1.7500 [0.5847; 5.2378] 4.7 6.7
## Howard ( 1974 ) 2.0392 [0.6699; 6.2075] 4.0 6.6
## Marder ( 1994 ) 1.3571 [0.7470; 2.4657] 16.6 12.2
## Nishikawa ( 1982 ) 3.0000 [0.1373; 65.5488] 0.6 1.2
## Nishikawa ( 1984 ) 9.0000 [0.5693; 142.2877] 0.8 1.5
## Reschke ( 1974 ) 3.7931 [1.0576; 13.6036] 3.4 5.4
## Selman ( 1976 ) 1.4841 [0.9364; 2.3523] 10.3 14.1
## Serafetinides ( 1972 ) 8.3793 [0.4964; 141.4449] 0.6 1.4
## Simpson ( 1967 ) 2.2727 [0.1237; 41.7658] 0.8 1.4
## Spencer ( 1992 ) 11.0000 [1.6714; 72.3964] 1.2 3.0
## Vichaiya ( 1971 ) 19.0000 [1.1581; 311.7148] 0.6 1.5
##
## Number of studies combined: k = 17
## Number of observations: o = 818
## Number of events: e = 274
##
## RR 95%-CI z p-value
## Fixed effect model 2.0910 [1.6859; 2.5935] 6.71 < 0.0001
## Random effects model 2.1465 [1.5066; 3.0583] 4.23 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0.1754 [0.0000; 1.0088]; tau = 0.4188 [0.0000; 1.0044]
## I^2 = 41.3% [0.0%; 67.0%]; H = 1.30 [1.00; 1.74]
##
## Test of heterogeneity:
## Q d.f. p-value
## 27.24 16 0.0388
##
## Details on meta-analytical method:
## - Mantel-Haenszel method
## - Paule-Mandel estimator for tau^2
## - Q-profile method for confidence interval of tau^2 and tau
## - Continuity correction of 0.5 in studies with zero cell frequencies
forest(m.publ, sortvar = year, prediction = TRUE , label.left = "Favo u rs placebo" , label.right = "Favo u rs haloperidol" )
Section ‘Assessing the impact of missing outcome data’ Subgroup analysis of studies with and without missing data
m.publ.sub = update (m.publ, byvar = miss, print.byvar = FALSE )
m.publ.sub
## RR 95%-CI %W(fixed) %W(random)
## Arvanitis ( 1997 ) 1.4167 [0.8911; 2.2522] 21.1 14.1
## Beasley ( 1996 ) 1.0489 [0.7316; 1.5039] 27.5 15.6
## Bechelli ( 1983 ) 6.2069 [1.5196; 25.3532] 2.3 4.7
## Borison ( 1992 ) 7.0000 [0.4018; 121.9370] 0.6 1.4
## Chouinard ( 1993 ) 3.4921 [1.1132; 10.9548] 3.5 6.3
## Durost ( 1964 ) 8.6842 [1.2581; 59.9463] 1.3 2.8
## Garry ( 1962 ) 1.7500 [0.5847; 5.2378] 4.7 6.7
## Howard ( 1974 ) 2.0392 [0.6699; 6.2075] 4.0 6.6
## Marder ( 1994 ) 1.3571 [0.7470; 2.4657] 16.6 12.2
## Nishikawa ( 1982 ) 3.0000 [0.1373; 65.5488] 0.6 1.2
## Nishikawa ( 1984 ) 9.0000 [0.5693; 142.2877] 0.8 1.5
## Reschke ( 1974 ) 3.7931 [1.0576; 13.6036] 3.4 5.4
## Selman ( 1976 ) 1.4841 [0.9364; 2.3523] 10.3 14.1
## Serafetinides ( 1972 ) 8.3793 [0.4964; 141.4449] 0.6 1.4
## Simpson ( 1967 ) 2.2727 [0.1237; 41.7658] 0.8 1.4
## Spencer ( 1992 ) 11.0000 [1.6714; 72.3964] 1.2 3.0
## Vichaiya ( 1971 ) 19.0000 [1.1581; 311.7148] 0.6 1.5
## miss
## Arvanitis ( 1997 ) With missing data
## Beasley ( 1996 ) With missing data
## Bechelli ( 1983 ) With missing data
## Borison ( 1992 ) Without missing data
## Chouinard ( 1993 ) Without missing data
## Durost ( 1964 ) Without missing data
## Garry ( 1962 ) With missing data
## Howard ( 1974 ) Without missing data
## Marder ( 1994 ) With missing data
## Nishikawa ( 1982 ) Without missing data
## Nishikawa ( 1984 ) With missing data
## Reschke ( 1974 ) Without missing data
## Selman ( 1976 ) With missing data
## Serafetinides ( 1972 ) With missing data
## Simpson ( 1967 ) With missing data
## Spencer ( 1992 ) Without missing data
## Vichaiya ( 1971 ) With missing data
##
## Number of studies combined: k = 17
## Number of observations: o = 818
## Number of events: e = 274
##
## RR 95%-CI z p-value
## Fixed effect model 2.0910 [1.6859; 2.5935] 6.71 < 0.0001
## Random effects model 2.1465 [1.5066; 3.0583] 4.23 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0.1754 [0.0000; 1.0088]; tau = 0.4188 [0.0000; 1.0044]
## I^2 = 41.3% [0.0%; 67.0%]; H = 1.30 [1.00; 1.74]
##
## Test of heterogeneity:
## Q d.f. p-value
## 27.24 16 0.0388
##
## Results for subgroups (fixed effect model):
## k RR 95%-CI Q I^2
## With missing data 10 1.7020 [1.3516; 2.1432] 13.73 34.4%
## Without missing data 7 4.3628 [2.4501; 7.7689] 3.35 0.0%
##
## Test for subgroup differences (fixed effect model):
## Q d.f. p-value
## Between groups 8.82 1 0.0030
##
## Results for subgroups (random effects model):
## k RR 95%-CI tau^2 tau
## With missing data 10 1.7115 [1.1290; 2.5944] 0.1785 0.4224
## Without missing data 7 3.8035 [2.1274; 6.8001] 0 0
##
## Test for subgroup differences (random effects model):
## Q d.f. p-value
## Between groups 4.80 1 0.0285
##
## Details on meta-analytical method:
## - Mantel-Haenszel method
## - Paule-Mandel estimator for tau^2
## - Q-profile method for confidence interval of tau^2 and tau
## - Continuity correction of 0.5 in studies with zero cell frequencies
# forest(m.publ.sub, sortvar = year, prediction = TRUE , label.left = "Favo u rs placebo" , label.right = "Favo u rs haloperidol" )
forest(m.publ.sub, sortvar = year,
xlim = c(0.1, 100), at = c(0.1, 0.3, 1, 3, 10, 30, 100),
test.subgroup.random = TRUE)
## Impute as no events (ICA-0) - default
##
mmiss.0 = metamiss(m.publ, drop.h, drop.p)
##
## Impute as events (ICA-1)
##
mmiss.1 = metamiss(m.publ, drop.h, drop.p, method = "1")
##
## Observed risk in control group (ICA-pc)
##
mmiss.pc = metamiss(m.publ, drop.h, drop.p, method = "pc")
##
## Observed risk in experimental group (ICA-pe)
##
mmiss.pe = metamiss(m.publ, drop.h, drop.p, method = "pe")
##
## Observed group-specific risks (ICA-p)
##
mmiss.p = metamiss(m.publ, drop.h, drop.p, method = "p")
##
## Best-case scenario (ICA-b)
##
mmiss.b = metamiss(m.publ, drop.h, drop.p, method = "b", small.values = "bad")
##
## Worst-case scenario (ICA-w)
##
mmiss.w = metamiss(m.publ, drop.h, drop.p, method = "w", small.values = "bad")
##
## Gamble-Hollis method
##
mmiss.gh = metamiss(m.publ, drop.h, drop.p, method = "GH")
##
## IMOR.e = 2 and IMOR.c = 2
## (same as available case analysis)
##
mmiss.imor2 = metamiss(m.publ, drop.h, drop.p, method = "IMOR", IMOR.e = 2)
##
## IMOR.e = 0.5 and IMOR.c = 0.5
##
mmiss.imor0.5 = metamiss(m.publ, drop.h, drop.p, method = "IMOR", IMOR.e = 0.5)
meths = c("Available case analysis (ACA)",
"Impute no events (ICA-0)", "Impute events (ICA-1)",
"Observed risk in control group (ICA-pc)",
"Observed risk in experimental group (ICA-pe)",
"Observed group-specific risks (ICA-p)",
"Best-case scenario (ICA-b)", "Worst-case scenario (ICA-w)",
"Gamble-Hollis analysis",
"IMOR.e = 2, IMOR.c = 2", "IMOR.e = 0.5, IMOR.c = 0.5")
Reference: https://ebmh.bmj.com/content/22/4/153#DC2