
rma.glmm
function from R package
metafor (Viechtbauer 2010) is called internally.metabin(event.e, n.e, event.c, n.c, studlab,
data=NULL, subset=NULL,
method=ifelse(tau.common, "Inverse", .settings$method),
sm=
ifelse(!is.na(charmatch(tolower(method), c("peto", "glmm"),
nomatch = NA)),
"OR", .settings$smbin),
incr=.settings$incr, allincr=.settings$allincr,
addincr=.settings$addincr, allstudies=.settings$allstudies,
MH.exact=.settings$MH.exact, RR.cochrane=.settings$RR.cochrane,
model.glmm = "UM.FS",
level=.settings$level, level.comb=.settings$level.comb,
comb.fixed=.settings$comb.fixed, comb.random=.settings$comb.random,
hakn=.settings$hakn,
method.tau=
ifelse(!is.na(charmatch(tolower(method), "glmm", nomatch = NA)),
"ML", .settings$method.tau),
tau.preset=NULL, TE.tau=NULL,
tau.common=.settings$tau.common,
prediction=.settings$prediction, level.predict=.settings$level.predict,
method.bias=ifelse(sm=="OR", "score", .settings$method.bias),
backtransf=.settings$backtransf,
title=.settings$title, complab=.settings$complab, outclab="",
label.e=.settings$label.e, label.c=.settings$label.c,
label.left=.settings$label.left, label.right=.settings$label.right,
byvar, bylab, print.byvar=.settings$print.byvar,
print.CMH=.settings$print.CMH,
keepdata=.settings$keepdata,
warn=.settings$warn,
...)
"Inverse"
, "MH"
,
"Peto"
, or "GLMM"
, can be abbreviated."RR"
, "OR"
, "RD"
, or "ASD"
) is to be used
for pooling of studies, see Details."TACC"
which stands for treatment arm continuity
correction, see Details.incr
is added to each
cell frequency of all studies if at least one study has a zero cell
count. If FALSE (default), incr
is added only to each cell frequency of
studies with a zero cell count.incr
is added to each cell
frequency of all studies irrespective of zero cell counts.sm
is equal to "RR"
or "OR"
).incr
is not to be added
to all cell frequencies for studies with a zero cell count to
calculate the pooled estimate based on the Mantel-Haenszel method.incr
instead of
1*incr
is to be added to n.e
and n.c
in the
calculation of the risk ratio (i.e., sm="RR"
) for studies
with a zero cell. This is used in "UM.FS"
, "UM.RS"
, "CM.EL"
, and
"CM.AL"
, see Details."DL"
, "PM"
, "REML"
, "ML"
, "HS"
,
"SJ"
, "HE"
, o"rank"
,
"linreg"
, "mm"
, "count"
, "score"
, or
"peters"
, can be abbreviated. Ssm="OR"
) and risk ratio (sm="RR"
) should be
back transformed in printouts and plots. If TRUE (default),
results will be presented as odds ratios and risk ratios;
event.e
).incr
is added to studies with zero cell
frequencies).rma.glmm
function.c("metabin", "meta")
with corresponding
print
, summary
, plot
function. The object is a
list containing the following components:method = "GLMM"
).hakn=TRUE
).byvar
is not
missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing
and hakn=TRUE
.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing
(only calculated if argument tau.common
is TRUE).byvar
is not missing.byvar
is not missing.byvar
is not
missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is not missing.byvar
is
not missing.byvar
is not missing.byvar
is
not missing.keepdata=TRUE
).keepdata=TRUE
).rma.glmm
function (fixed effect model).rma.glmm
function (random effects model).sm="RR"
)sm="OR"
)sm="RD"
)sm="ASD"
).settings$
). These defaults can be changed using the
settings.meta
function.
Internally, both fixed effect and random effects models are
calculated regardless of values chosen for arguments
comb.fixed
and comb.random
. Accordingly, the estimate
for the random effects model can be extracted from component
TE.random
of an object of class "meta"
even if
argument comb.random=FALSE
. However, all functions in R
package meta will adequately consider the values for
comb.fixed
and comb.random
. E.g. function
print.meta
will not print results for the random
effects model if comb.random=FALSE
. By default, both fixed effect and random effects models are
considered (see arguments comb.fixed
and
comb.random
). If method
is "MH"
(default), the
Mantel-Haenszel method is used to calculate the fixed effect
estimate; if method
is "Inverse"
, inverse variance
weighting is used for pooling; if method
is "Peto"
,
the Peto method is used for pooling. By default, the
DerSimonian-Laird estimate (1986) is used in the random effects
model (method.tau="DL"
). For the Peto method, Peto's log odds
ratio, i.e. (O - E) / V
and its standard error sqrt(1 / V)
with O - E
and V
denoting "Observed minus
Expected" and "V", are utilised in the random effects
model. Accordingly, results of a random effects model using
sm="Peto"
can be (slightly) different to results from a
random effects model using sm="MH"
or sm="Inverse"
.
A distinctive and frequently overlooked advantage of binary
endpoints is that individual patient data (IPD) can be extracted
from a two-by-two table. Accordingly, statistical methods for IPD,
i.e., logistic regression and generalised linear mixed models, can
be utilised in a meta-analysis of binary outcomes (Stijnen et al.,
2010; Simmonds et al., 2014). These methods are available (argument
method = "GLMM"
) for the odds ratio as summary measure by
calling the rma.glmm
function from R package
metafor internally. Four different GLMMs are available for
meta-analysis with binary outcomes using argument model.glmm
(which corresponds to argument model
in the
rma.glmm
function):
model.glmm = "UM.FS"
, i.e.,UnconditionalModel -FixedStudy effects)model.glmm = "UM.RS"
, i.e.,UnconditionalModel -RandomStudy effects)model.glmm = "CM.EL"
, i.e.,ConditionalModel -ExactLikelihood)model.glmm = "CM.AL"
, i.e.,ConditionalModel -ApproximateLikelihood)...
' in metabin
are
described in rma.glmm
where you can also find
information on the iterative algorithms used for estimation. Note,
regardless of which value is used for argument model.glmm
,
results for two different GLMMs are calculated: fixed effect model
(with fixed treatment effect) and random effects model (with random
treatment effects).
For studies with a zero cell count, by default, 0.5 is added to all
cell frequencies of these studies; if incr
is "TACC"
a
treatment arm continuity correction is used instead (Sweeting et
al., 2004; Diamond et al., 2007). For odds ratio and risk ratio,
treatment estimates and standard errors are only calculated for
studies with zero or all events in both groups if allstudies
is TRUE
. This continuity correction is used both to calculate
individual study results with confidence limits and to conduct
meta-analysis based on the inverse variance method. For Peto method
and GLMMs no continuity correction is used. For the Mantel-Haenszel
method, by default (if MH.exact
is FALSE), incr
is
added to all cell frequencies of a study with a zero cell count in
the calculation of the pooled risk ratio or odds ratio as well as
the estimation of the variance of the pooled risk difference, risk
ratio or odds ratio. This approach is also used in other software,
e.g. RevMan 5 and the Stata procedure metan. According to Fleiss (in
Cooper & Hedges, 1994), there is no need to add 0.5 to a cell
frequency of zero to calculate the Mantel-Haenszel estimate and he
advocates the exact method (MH.exact
=TRUE). Note, estimates
based on exact Mantel-Haenszel method or GLMM are not defined if the
number of events is zero in all studies either in the experimental
or control group. Argument byvar
can be used to conduct subgroup analysis for
all methods but GLMMs. Instead use the metareg
function for GLMMs which can also be used for continuous covariates.
A prediction interval for treatment effect of a new study is
calculated (Higgins et al., 2009) if arguments prediction
and
comb.random
are TRUE
.
R function update.meta
can be used to redo the
meta-analysis of an existing metabin object by only specifying
arguments which should be changed.
For the random effects, the method by Hartung and Knapp (2001) is
used to adjust test statistics and confidence intervals if argument
hakn=TRUE
. For GLMMs, a method similar to Knapp and Hartung
(2003) is implemented, see description of argument tdist
in
rma.glmm
.
The iterative Paule-Mandel method (1982) to estimate the
between-study variance is used if argument
method.tau="PM"
. Internally, R function paulemandel
is
called which is based on R function mpaule.default from R package
metRology from S.L.R. Ellison method.tau
) are also available:
method.tau="REML"
)method.tau="ML"
)method.tau="HS"
)method.tau="SJ"
)method.tau="HE"
)method.tau="EB"
).rma.uni
of R package
metafor is called internally. See help page of R function
rma.uni
for more details on these methods to estimate
between-study variance.Diamond GA, Bax L, Kaul S (2007), Uncertain Effects of Rosiglitazone on the Risk for Myocardial Infarction and Cardiovascular Death. Annals of Internal Medicine, 147, 578--581.
DerSimonian R & Laird N (1986), Meta-analysis in clinical trials. Controlled Clinical Trials, 7, 177--188.
Fleiss JL (1993), The statistical basis of meta-analysis. Statistical Methods in Medical Research, 2, 121--145.
Greenland S & Robins JM (1985), Estimation of a common effect parameter from sparse follow-up data. Biometrics, 41, 55--68.
Hartung J & Knapp G (2001), A Refined Method for the Meta-analysis of Controlled Clinical Trials with Binary Outcome. Statistics in Medicine, 20, 3875--89. Higgins JPT, Thompson SG, Spiegelhalter DJ (2009), A re-evaluation of random-effects meta-analysis. Journal of the Royal Statistical Society: Series A, 172, 137--159. Knapp G & Hartung J (2003), Improved Tests for a Random Effects Meta-regression with a Single Covariate. Statistics in Medicine, 22, 2693--710, doi: 10.1002/sim.1482 . Review Manager (RevMan) [Computer program]. Version 5.3. Copenhagen: The Nordic Cochrane Centre, The Cochrane Collaboration, 2014. Paule RC & Mandel J (1982), Consensus values and weighting factors. Journal of Research of the National Bureau of Standards, 87, 377--385. Pettigrew HM, Gart JJ, Thomas DG (1986), The bias and higher cumulants of the logarithm of a binomial variate. Biometrika, 73, 425--435.
Rücker G, Schwarzer G, Carpenter JR (2008), Arcsine test for publication bias in meta-analyses with binary outcomes. Statistics in Medicine, 27, 746--763. Simmonds MC, Higgins JP (2014), A general framework for the use of logistic regression models in meta-analysis. Statistical Methods in Medical Research. StataCorp. 2011. Stata Statistical Software: Release 12. College Station, TX: StataCorp LP. Stijnen T, Hamza TH, Ozdemir P (2010), Random effects meta-analysis of event outcome in the framework of the generalized linear mixed model with applications in sparse data. Statistics in Medicine, 29, 3046--67. Sweeting MJ, Sutton AJ, Lambert PC (2004), What to add to nothing? Use and avoidance of continuity corrections in meta-analysis of sparse data. Statistics in Medicine, 23, 1351--1375.
Viechtbauer W (2010), Conducting Meta-Analyses in R with the Metafor Package. Journal of Statistical Software, 36, 1--48.
update.meta
, forest
, funnel
, metabias
, metacont
, metagen
, metareg
, print.meta
#
# Calculate odds ratio and confidence interval for a single study
#
metabin(10, 20, 15, 20, sm = "OR")
#
# Different results (due to handling of studies with double zeros)
#
metabin(0, 10, 0, 10, sm = "OR")
metabin(0, 10, 0, 10, sm = "OR", allstudies = TRUE)
#
# Use subset of Olkin (1995) to conduct meta-analysis based on inverse
# variance method (with risk ratio as summary measure)
#
data(Olkin95)
meta1 <- metabin(event.e, n.e, event.c, n.c,
data = Olkin95, subset = c(41, 47, 51, 59),
method = "Inverse")
summary(meta1)
funnel(meta1)
#
# Use different subset of Olkin (1995)
#
meta2 <- metabin(event.e, n.e, event.c, n.c,
data = Olkin95, subset = Olkin95$year < 1970,
method = "Inverse", studlab = author)
summary(meta2)
forest(meta2)
#
# Meta-analysis with odds ratio as summary measure
#
meta3 <- metabin(event.e, n.e, event.c, n.c,
data = Olkin95, subset = Olkin95$year < 1970,
sm = "OR", method = "Inverse", studlab = author)
# Same meta-analysis result using 'update.meta' function
meta3 <- update(meta2, sm = "OR")
summary(meta3)
#
# Meta-analysis based on Mantel-Haenszel method
# (with odds ratio as summary measure)
#
meta4 <- update(meta3, method = "MH")
summary(meta4)
#
# Meta-analysis based on Peto method
# (only available for odds ratio as summary measure)
#
meta5 <- update(meta3, method = "Peto")
summary(meta5)
#
# Meta-analysis using generalised linear mixed models
# (only if R packages 'metafor' and 'lme4' are available)
#
if (suppressMessages(require(metafor, quietly = TRUE, warn = FALSE)) &
require(lme4, quietly = TRUE)) {
#
# Logistic regression model with (k = 4) fixed study effects
# (default: model.glmm = "UM.FS")
#
meta6 <- metabin(event.e, n.e, event.c, n.c,
data = Olkin95, subset = Olkin95$year < 1970,
method = "GLMM")
# Same results:
meta6 <- update(meta2, method = "GLMM")
summary(meta6)
#
# Mixed-effects logistic regression model with random study effects
# (warning message printed due to argument 'nAGQ')
#
meta7 <- update(meta6, model.glmm = "UM.RS")
#
# Use additional argument 'nAGQ' for internal call of 'rma.glmm' function
#
meta7 <- update(meta6, model.glmm = "UM.RS", nAGQ = 1)
summary(meta7)
#
# Generalised linear mixed model (conditional Hypergeometric-Normal)
# (R package 'BiasedUrn' must be available)
#
if (require(BiasedUrn, quietly = TRUE)) {
meta8 <- update(meta6, model.glmm = "CM.EL")
summary(meta8)
}
#
# Generalised linear mixed model (conditional Binomial-Normal)
#
meta9 <- update(meta6, model.glmm = "CM.AL")
summary(meta9)
#
# Logistic regression model with (k = 70) fixed study effects
# (about 18 seconds with Intel Core i7-3667U, 2.0GHz)
#
meta10 <- metabin(event.e, n.e, event.c, n.c,
data = Olkin95, method = "GLMM")
summary(meta10)
#
# Mixed-effects logistic regression model with random study effects
# - about 50 seconds with Intel Core i7-3667U, 2.0GHz
# - several warning messages, e.g. "failure to converge, ..."
#
summary(update(meta10, model.glmm = "UM.RS"))
#
# Conditional Hypergeometric-Normal GLMM
# - long computation time (about 12 minutes with Intel Core i7-3667U, 2.0GHz)
# - estimation problems for this very large dataset:
# * warning that Choleski factorization of Hessian failed
# * confidence interval for treatment effect smaller in random
# effects model compared to fixed effect model
#
if (require(BiasedUrn, quietly = TRUE)) {
system.time(meta11 <- update(meta10, model.glmm = "CM.EL"))
summary(meta11)
}
#
# Generalised linear mixed model (conditional Binomial-Normal)
# (less than 1 second with Intel Core i7-3667U, 2.0GHz)
#
summary(update(meta10, model.glmm = "CM.AL"))
}
Run the code above in your browser using DataLab