Merge results of two meta-analyses on the same data set
Merge results of two meta-analyses on the same data set
This function can be used to merge results of two meta-analyses into a single meta-analysis object if they are based on the same data set. This is, for example, useful to produce a forest plot of a random-effects meta-analysis with different estimates of the between-study variance τ2.
common1: A logical indicating whether results of common effect model should be considered for first meta-analysis.
random1: A logical indicating whether results of random effects model should be considered for first meta-analysis.
prediction1: A logical indicating whether prediction interval should be considered for first meta-analysis.
common2: A logical indicating whether results of common effect model should be considered for second meta-analysis.
random2: A logical indicating whether results of random effects model should be considered for second meta-analysis.
prediction2: A logical indicating whether prediction interval should be considered for second meta-analysis.
label1: Default setting for arguments 'label1.common', 'label1.random', 'label1.predict' and 'label1.subgroup'.
label2: Default setting for arguments 'label2.common', 'label2.random', 'label2.predict' and 'label2.subgroup'.
label1.common: A character string ...
label2.common: A character string ...
label1.random: A character string ... (default label for arguments 'hetlabel1' and 'taulabel1').
label2.random: A character string ... (default label for arguments 'hetlabel2' and 'taulabel2').
label1.predict: A character string ...
label2.predict: A character string ...
label1.subgroup: A character string ...
label2.subgroup: A character string ...
hetlabel1: A character string used to label heterogeneity statistics of the first meta-analysis.
hetlabel2: A character string used to label heterogeneity statistics of the second meta-analysis.
taulabel1: A character string used to label estimate of between-study variance of the first meta-analysis.
taulabel2: A character string used to label estimate of between-study variance of the second meta-analysis.
text.pooled1: A character string used in printouts and forest plot to label the results from the first meta-analysis.
text.pooled2: A character string used in printouts and forest plot to label the results from the second meta-analysis.
text.w.pooled1: A character string used to label weights of the first meta-analysis; can be of same length as the number of pooled estimates requested in argument pooled1.
text.w.pooled2: A character string used to label weights of the second meta-analysis; can be of same length as the number of pooled estimates requested in argument pooled1.
text.common1: A character string used in printouts and forest plot to label results for common effect models from the first meta-analysis.
text.common2: A character string used in printouts and forest plot to label results for common effect models from the second meta-analysis.
text.random1: A character string used in printouts and forest plot to label results for random effects models from the first meta-analysis.
text.random2: A character string used in printouts and forest plot to label results for random effects models from the second meta-analysis.
text.predict1: A character string used in printouts and forest plot to label prediction interval from the first meta-analysis.
text.predict2: A character string used in printouts and forest plot to label prediction interval from the second meta-analysis.
text.w.common1: A character string used to label common effect weights of the first meta-analysis; can be of same length as the number of common effect estimates.
text.w.common2: A character string used to label common effect weights of the second meta-analysis; can be of same length as the number of common effect estimates.
text.w.random1: A character string used to label random effects weights of the first meta-analysis; can be of same length as the number of random effects estimates.
text.w.random2: A character string used to label random effects weights of the second meta-analysis; can be of same length as the number of random effects estimates.
keep: A logical indicating whether to keep additional information from second meta-analysis.
keep.Q: A logical indicating whether heterogeneity statistic Q of second meta-analysis should be kept or ignored.
keep.I2: A logical indicating whether heterogeneity statistic I2 of second meta-analysis should be kept or ignored.
keep.w: A logical indicating whether weights of the second meta-analysis should be kept or ignored.
common: A logical indicating whether results of common effect meta-analyses should be reported.
random: A logical indicating whether results of random effects meta-analyses should be reported.
overall: A logical indicating whether overall summaries should be reported.
overall.hetstat: A logical value indicating whether to print heterogeneity measures for overall treatment comparisons.
prediction: A logical indicating whether prediction intervals should be reported.
backtransf: A logical indicating whether results should be back transformed in printouts and plots. If backtransf=TRUE (default), results for sm="OR" are printed as odds ratios rather than log odds ratios, for example.
warn.deprecated: A logical indicating whether warnings should be printed if deprecated arguments are used.
pooled1: Deprecated argument (replaced by 'common1', 'random1', 'prediction1'). A character string indicating whether results of common effect or random effects model should be considered for first meta-analysis. Either "both", "common" or "random", can be abbreviated.
pooled2: Deprecated argument (replaced by 'common2', 'random2', 'prediction2'). A character string indicating whether results of common effect or random effects model should be considered for second meta-analysis. Either "both", "common" or "random", can be abbreviated.
Returns
An object of class "meta" and "metamerge" with corresponding generic functions (see meta-object).
The following list elements have a different meaning: - TE, seTE, studlab: Treatment estimate, standard error, and study labels (first meta-analyis).
lower, upper: Lower and upper confidence interval limits for individual studies (first meta-analysis).
statistic, pval: Statistic and p-value for test of treatment effect for individual studies (first meta-analysis.
w.common: Vector or matrix with common effect weights.
w.random: Vector or matrix with random effects weights.
k: Vector with number of estimates (same length as number of common effect and random effects estimates).
k.study: Vector with number of studies (same length as number of common effect and random effects estimates).
k.all: Vector with total number of studies (same length as number of common effect and random effects estimates).
k.TE: Vector with number of studies with estimable effects (same length as number of common effect and random effects estimates).
k.MH: Vector with number of studies combined with Mantel-Haenszel method (same length as number of common effect and random effects estimates).
TE.common: Vector with common effect estimates.
seTE.common: Vector with standard errors of common effect estimates.
lower.common: Vector with lower confidence limits (common effect model).
upper.common: Vector with upper confidence limits (common effect model).
statistic.common: Vector with test statistics for test of overall effect (common effect model).
pval.common: Vector with p-value of test for overall effect (common effect model).
TE.random: Vector with random effects estimates.
seTE.random: Vector with standard errors of random effects estimates.
lower.random: Vector with lower confidence limits (random effects model).
upper.random: Vector with upper confidence limits (random effects model).
statistic.random: Vector with test statistics for test of overall effect (random effects model).
pval.random: Vector with p-value of test for overall effect (random effects model).
Furthermore, meta-analysis results of common effect or random effects model are taken from first meta-analysis if only random effects or common effects models are selected from both meta-analyses (arguments pooled1 and pooled2).
Details
In R package meta , objects of class "meta" contain results of both common effect and random effects meta-analyses. This function enables the user to merge the results of two meta-analysis object if they are based on the same data set.
Applications of this function include printing and plotting results of the common effect or random effects meta-analysis and the
trim-and-fill method (trimfill),
limit meta-analyis (limitmeta from R package metasens ),
Copas selection model (copas from R package metasens ),
robust variance meta-analysis model (robu from R package robumeta ).
The first argument (meta1) must be an object created by a meta-analysis function (see meta-object). If an object created with limitmeta or copas is provided as the first argument, this object will be returned, i.e., argument meta2 will be ignored.
The second meta-analysis could be an object created by a meta-analysis function or with trimfill, limitmeta, copas, or robu.
The created meta-analysis object only contains the study results, i.e., estimated effects and confidence intervals, from the first meta-analysis which are shown in printouts and forest plots. This only makes a difference for meta-analysis methods where individual study results differ, e.g., Mantel-Haenszel and Peto method for binary outcomes (see metabin).
R function metaadd can be used to add pooled results from any (external) meta-analysis.
R function metabind can be used to print and plot the results of several meta-analyses without the restriction that the same data set has to be used. Accordingly, individual study results are ignored.
Examples
# Print results with more significant digits and do not show confidence# intervals for tau^2 and tauoldset <- settings.meta(digits =6, digits.stat =4, digits.pval =6, digits.Q =6, digits.I2 =4, digits.H =4, print.tau2.ci =FALSE, print.tau.ci =FALSE)oldopts <- options(width =120)data(Fleiss1993bin)# Mantel-Haenszel methodm1 <- metabin(d.asp, n.asp, d.plac, n.plac, data = Fleiss1993bin, studlab = paste(study, year), sm ="OR")# Peto methodm2 <- update(m1, method ="Peto")# Inverse variance method (only common effect model)m3 <- update(m2, method ="Inverse", random =FALSE)# Merge results from MH and Peto method# - show individual results for MH method# (as this is the first meta-analysis)# - keep all additional information from Peto meta-analysis (i.e.,# weights, Q statistic and I2 statistic)m12 <- metamerge(m1, m2, label1 ="REML", label2 ="REML-Peto", label1.common ="MH", label2.common ="Peto", text.common1 ="Mantel-Haenszel method", text.common2 ="Peto method", text.w.random1 ="REML", text.w.random2 ="REML-Peto", hetlabel1 ="MH/IV", hetlabel2 ="Peto", keep =TRUE)# Add common effect results from inverse variance method# - keep weights from IV meta-analysis# - Q and I2 statistic are identical for sm = "MH" and sm = "Inverse"# as inverse variance method is used for sm = "MH" under random# effects modelm123 <- metamerge(m12, m3, label2 ="IV", text.common2 ="Inverse variance method", keep.w =TRUE)summary(m123)## Not run:forest(m123, digits =6)# Merge results (show individual results for Peto method)m21 <- metamerge(m2, m1, label1 ="REML-Peto", label2 ="REML", label1.common ="Peto", label2.common ="MH", hetlabel1 ="Peto", hetlabel2 ="MH/IV", text.common1 ="Peto method", text.common2 ="Mantel-Haenszel method", keep =TRUE)# Add results from inverse variance method# - keep weights from IV meta-analysis# - Q and I2 statistic are identical for sm = "MH" and sm = "Inverse"# as inverse variance method is used for sm = "MH" under random# effects modelm213 <- metamerge(m21, m3, label2 ="IV", text.common2 ="Inverse variance method", keep.w =TRUE)summary(m213)# Random effects method using ML estimator for between-study variance tau2m4 <- update(m1, common =FALSE, method.tau ="ML")# Use DerSimonian-Laird estimator for tau2m5 <- update(m4, method.tau ="DL")# Use Paule-Mandel estimator for tau2m6 <- update(m4, method.tau ="PM")# Merge random effects results for ML and DL estimators# - keep weights for DL estimator (which are different from ML)m45 <- metamerge(m4, m5, label1 ="ML", label2 ="DL", text.w.random1 ="RE-ML", text.w.random2 ="RE-DL", keep.w =TRUE)summary(m45)# Add results for PM estimator# - keep weightsm456 <- metamerge(m45, m6, label2 ="PM", text.w.random2 ="RE-PM", keep.w =TRUE)summary(m456)m123456 <- metamerge(m123, m456)m123456
# Use Hartung-Knapp confidence intervals# - do not keep information on Q, I2 and weightsm7 <- update(m4, method.random.ci ="HK", text.random ="Hartung-Knapp method")m8 <- update(m5, method.random.ci ="HK", text.random ="Hartung-Knapp method")m9 <- update(m6, method.random.ci ="HK", text.random ="Hartung-Knapp method")# Merge results for Hartung-Knapp method (with REML and DL estimator)# - RE weights for REML estimator are shownm78 <- metamerge(m7, m8, label1 ="ML", label2 ="DL")summary(m78)m789 <- metamerge(m78, m9, label2 ="PM")summary(m789)# Merge everythingm1to9 <- metamerge(metamerge(m123, m456, keep.w =TRUE), m789)summary(m1to9)m10 <- update(m1, method ="GLMM")m.all <- metamerge(m1to9, m10, keep.Q =TRUE, label2 ="GLMM", taulabel2 ="ML-GLMM")summary(m.all)forest(m.all, layout ="JAMA")forest(m.all, details =TRUE)## End(Not run)settings.meta(oldset)options(oldopts)