The Voorhees Release
Released on Friday the 13th, November 2026.
For common effect analyses using the Mantel-Haenszel method,
argument MH.exact in metabin() now defaults to
TRUE, omitting continuity corrections from pooling.
Study-level estimates and inverse-variance random effects analyses
continue to follow the continuity-correction settings. If only one
eligible study remains, MH.exact is set to
FALSE and the configured continuity-correction settings
apply. Use settings.meta("meta8") to restore the previous
default.
Defaults for forest plots have been revised. In the default
layout (layout = "meta"), all default study-level columns
are now printed on the left side of the forest plot. Details of the
meta-analysis methods, tests for an overall effect, and a header line
are printed by default. The previous default layout remains available
via settings.meta("meta8") or
forest(..., layout = "meta8"). The R function
settings.meta() can also be used to activate
(forest.details = TRUE) or deactivate
(forest.details = FALSE) the printing of details on
meta-analysis methods for the current R session, independently of the
forest-plot layout.
Furthermore, the arguments leftcols and
rightcols are now honored for all layouts, allowing users
to customize the columns on either side of the forest plot. Columns
specified in rightcols are removed from the left side if
they would otherwise be printed on both sides.
Forest-plot formatting arguments can now also be supplied as named
lists, including fs, ff, col,
calcwidth, print, label,
colgap, just, digits,
test, type, fill,
pooled, text, lty,
lwd, rob, cid, and
addrow. The corresponding individual
list.element arguments remain supported.
Forest plots can now include a customisable main title. By default,
it is generated from the meta-analysis title, comparison label, and
outcome label, where available. Use main = "" to suppress
it.
metabind() has been substantially redesigned, with a
new object structure and dedicated print.metabind() and
forest.metabind() methods. These methods display stored
component results without calculating new pooled estimates. They support
common effect and random effects results, prediction intervals, multiple
interval methods, and subgroup analyses. Results using different,
compatible summary measures can be displayed together, with appropriate
back-transformation and scaling.
For subgroup analyses, selected overall results can be displayed once when the included datasets, results, and relevant analysis and interval settings agree. Overall heterogeneity is assessed separately and is shared only when its values and settings also agree.
Objects generated with metabind() or
metamerge() before version 9.0-0 must be recreated using
the current package version.
metagen() now always stores null.effect
on the transformed analysis scale. If argument
transf = FALSE, the supplied value is transformed before
being stored.
Function asin2ir() renamed to ft2ir()
to reflect that it is the inverse of the Freeman-Tukey transformation of
incidence rates.
Cluster-robust variance estimators are now available for univariate random effects meta-analysis and three-level models (Tipton and Pustejovsky, 2015; Pustejovsky and Tipton, 2022).
These estimators are selected using
method.random.ci = "CR0", "CR1", or
"CR2" for supported fitting methods. CR2 requires the
optional package clubSandwich. Univariate models use
study labels to identify clusters; three-level models use the supplied
variable cluster.
Cumulative meta-analysis and leave-one-out analyses now default
to random effects results whenever prediction intervals are requested,
either explicitly or through the input meta-analysis object’s prediction
setting. This also applies when random effects results were not selected
in the input object. Explicit choices of pooled remain
unchanged.
Formatting arguments can now be supplied through named lists
print and digits in print.meta(),
print.summary.meta(), print.metacum(),
print.metainf(), and print.blup.meta(). Named
list digits is also supported by
print.cidprop() and
print.estimates.blup.meta(). Named list test
controls tests for subgroup differences in print.meta() and
print.summary.meta(). Corresponding individual formatting
arguments remain supported.
The new help page meta-formatting describes supported
elements, their availability across functions, and general
defaults.
R package meta now requires R (>= 4.1.0).
metabin(), metacont(),
metacor(), metagen(), metainc(),
metamean(), metaprop(),
metarate(), metareg(),
update.meta():
method.random.ci can be equal to “CR0”, “CR1”,
or “CR2” for cluster-robust variance estimatorstitle is used as default for argument
main in forest.meta()forest.meta():
layout = "meta8"layout = "RevMan5", information on
tests for an overall effect are printed before heterogeneity
statisticsmain, xpos.main,
gap.main, and lineheight.main, together with
element main of the just, fs,
ff, and col lists, can be used to add and
format a main titlesmlab and xlab and elements
left and right of label can
contain more than two linespredict,
hetstat, tests, subgroup,
addline, and details of calcwidth
now default to TRUEpooled of calcwidth prevents
pooled labels from overlapping columns containing pooled-row information
by reserving additional spacelabel.e and label.c in meta-analysis
functions) attached to columns when calculating column widths, and
suppress these labels if the attached column already has a two-line
headingstudy.text of col to specify
colours for text in individual study rows; excluded studies are printed
in lightgrey by defaultdiamond.common.subgroup,
diamond.random.subgroup,
diamond.lines.common.subgroup,
diamond.lines.random.subgroup,
predict.subgroup, and predict.lines.subgroup
of colrandom.subgroup and
prediction.subgroup can be logical matrices to select
subgroup random effects estimates or prediction intervals separately for
each available confidence- or prediction-interval method, e.g.,
random.subgroup = df.random.w > 1rob of just to specify the
justification of the risk-of-bias table heading; the heading now spans
all risk-of-bias columnsleftcols is
FALSExlab) instead of above the forest
plot (argument smlab) (related to issue
#106)*.fixed and *.fixed.*
have been removed. Use the corresponding common-effect elements of the
fs, ff, col, and
label lists instead.forest.metacum():
layout and main to select
the forest plot layout and specify its titleprint controls the display of heterogeneity
statistics, their confidence intervals, and CID probabilities through
elements I2, I2.ci, tau2,
tau2.ci, tau, tau.ci,
Q, pval.Q, and probforest.metainf():
layout and main to select
the forest plot layout and specify its titleprint controls the display of heterogeneity
statistics, their confidence intervals, and CID probabilities through
elements I2, I2.ci, tau2,
tau2.ci, tau, tau.ci,
Q, pval.Q, and probmetagen():
lower and upper are now retained only if
arguments level and level.ci agree (issue #99)TE,
lower, and upper suggest that the treatment
estimate is not approximately halfway between the confidence limits (issue #99)TE, lower, and upper for
Freeman-Tukey double arcsine transformed proportions
(sm = "PFT") if argument transf = FALSE;
sample sizes must be supplied in argument n.en.c is provided for
meta-analysis of single proportions, incidence rates, means, or
correlationsnull.effect on the original scale for
meta-analyses of single proportions, incidence rates, means, or
correlations if argument transf = FALSE (issue #103)metacor(), metamean(),
metarate():
null.effect (issue #103)New setting log.prefix allows users to define the
prefix for log-transformed effect measures. The default prefix is now
“log” instead of “ln” in printouts and forest plots.
print.meta():
null.effect is not NAmetabias():
method = "Deeks" and plotit = TRUE) (pull #92)drapery(), funnel.meta():
backtransf = TRUE (issue #102)xlim are interpreted on the original scale if
argument backtransf = TRUEat can be used in
funnel.meta() to specify tick marks on the x-axisaxes can be used in drapery()
to suppress axes and the plot boxbubble(), funnel.meta():
metaadd():
sm = "PFT") or rates
(sm = "IRFT")Functions that ignore additional arguments in argument
... now print a warning if such arguments are
supplied.
New function ir2ft() to calculate the Freeman-Tukey
transformation of incidence rates. If argument time is not
provided, the ordinary square-root transformation is
calculated.
p2asin():
n to calculate Freeman-Tukey double
arcsine transformationtransf():
n and time to pass these
argument to p2asin() or ir2ft() for
sm = "PFT" or sm = "IRFT"n and time precede arguments
func and args, matching the argument order of
backtransf()settings.meta():
main.prefix, col.main,
just.main, xpos.main, gap.main,
lineheight.main, fs.main, and
ff.main to define defaults for the main title of a forest
plotforest.meta(), settings.meta():
ff in forest.meta()
and the corresponding individual ff.* settings in
settings.meta() are checked against values accepted by
grid::gpar() and also allow integer values 1 to 4forest.meta():
label.e to the column
n.e with sample sizes for meta-analysis objects created
with metagen() if sample sizes in control group
(n.c) are not providedmetarate() for meta-analysis of
single incidence rates (issue #97)backtransf = FALSE for meta-analyses conducted with
metamean(), metaprop(), or
metarate()backtransf = TRUE and argument pscale or
irscale is used for meta-analyses conducted with
metaprop() or metarate()metagen(sm = "VE") (issue #98)xlim excludes the pooled estimate but includes one
confidence limitsmlab and xlab, and elements
left and right of label when
calculating forest plot spacing. User-specified values for elements
forest.left and forest.right of
colgap take precedence over the automatic calculationlab.NA for missing values in additional
columns on individual result rows when subgroups are displayed;
previously, these labels were incorrectly replaced by empty stringscalcwidth settings in the
RevMan5 layout (issue #108)bubble(), forest.meta(),
metabin(), metagen(), metainc(),
metaprop(), metarate(),
print.meta(), print.summary.meta(),
rd(), trimfill(), update.meta():
pscale and
irscaleforest.metacum(), forest.metainf():
layout = "BMJ" (issue #96)metaprop(), metarate():
sm = "PFT") or rates (sm = "IRFT") (issue #102)exclude when calculating the harmonic
mean used to back transform Freeman-Tukey transformed proportions
(sm = "PFT") or rates (sm = "IRFT")sm = "PFT") or rates (sm = "IRFT") using only
non-excluded studies with both event counts and sample sizes or exposure
times available (pull
#107)metacont(), metamean():
metagen():
null.effect when argument
transf = FALSEprint.meta(), forest.meta():
null.effect from
metagen() objects when argument
backtransf = TRUEmetamerge():
metacum(), metainf(),
subgroup():
metacum(), metainf():
metacont() for
standardized mean differences, including method.smd,
sd.glass, exact.smd, and
pooledvarirunit supplied to
metarate()subgroup():
summary.meta():
settings.meta():
NULL for numeric settings where
NULL is not an admissible valuepairwise():
"DOR" or "VE" (issue #94)labbe():
sm = "VE"
(issue #94)drapery():
sm = "VE")
(issue #94)bubble():
sm = "VE")
(issue #94)sm = "PFT") or rates (sm = "IRFT") using
study-specific sample sizes or times for individual studies and the
corresponding harmonic mean for the meta-regression line (issue #102)pscale or
irscale differs from 1 (issue #105)metabias():
sm = "VE") (issue #94)cidprop():
sm = "PFT") or rates
(sm = "IRFT") using the harmonic mean of sample sizes or
times (issue
#102)plot.cidprop():
sm = "VE")
(issue #94)random and prediction
was ignoredxlim determines the limits of the
x-axis (issue
#94)estimates.meta():
sm = "PFT") or rates
(sm = "IRFT")sm = "VE" and backtransf = TRUE (issue #94)blup.meta(), print.blup.meta(),
estimates.blup.meta():
sm = "VE", including explicit overrides of
backtransf (issue #94)ciClopperPearson(), ciPoisson():
Argument evaluation now uses rlang::enquo() and
rlang::eval_tidy() instead of expressions extracted from
match.call(). Captured expressions retain their evaluation
environments, improving argument forwarding through wrapper functions.
Subgroup labels are derived from the captured expressions.
Use R package testthat for unit tests.
R package testthat added to Suggests.
New internal function layout_colors() to define
default colours for forest plots.
New internal functions chknumeric_strict() and
chkfontface() to check numeric arguments without missing or
NULL values or font face arguments
New internal function warn_ignore_dots() to provide
consistent warnings for ignored arguments supplied via
....
New internal function percent_label() to format
percentage labels.
New internal function drop_backward() for removing
redundant legacy *.fixed list elements and the
Hartung-Knapp aliases df.hakn, seTE.hakn, and
seTE.hakn.adhoc from meta objects. Its use is
deferred to a future update to maintain compatibility with R package
metaumbrella.
chkchar(), chkcolor(),
chklevel(), chknumeric():
single; replaced by
argument lengthforest.meta():
bmj.xpos and
rob.xpos; a warning is printed if either is used and
argument warn.deprecated = TRUEcidprop():
sm = "VE"), defaults for
cid.below.null and cid.above.null calculated
from cid are based on relative instead of absolute
distances from the null effect (issue #94)metaprop(), metarate():
sm = "PFT") or rates
(sm = "IRFT")trimfill():
sm = "PFT") and ordinary
square root transformation logic for Freeman-Tukey transformed rates
(sm = "IRFT") because harmonic mean changes with filled
studiescrtitle():
prefix and forestformatN(), pasteCI():
text.NA renamed to lab.NABy default, the width and height of a file to store a forest plot is automatically determined (issues #86). Furthermore, the user can specify the height of the file with the forest plot.
Nour Edin Darwish nouredindarwish@gmail.com added as co-author or R functions forest.meta() and author of forest_dims().
For generalised linear mixed models, the number of studies included in the meta-analysis is extracted from rma.glmm() in R package metafor.
R package cli added to Depends.
R package svglite added to Suggests.
Use “95% CI” or “95% PI” instead of “95%-CI” or “95%-PI” in printouts and figures
forest.meta():
New function forest_dims() to get the width and height of a forest plot
Relax the minimum number of studies in a meta-analysis required to calculate confidence and prediction intervals (issue #80):
Calculate confidence for I2 and H if argument ‘method.I2 = “tau2”’ (issue #80).
More flexible definition of column labels in forest plots (issue #87).
New function rd() to calculate risk difference(s) from meta-analysis results; results are expressed as absolute risk reduction / increase or absolute benefit increase / reduction.
R function cidprop() uses null effect as threshold, if defined.
R function pairwise() accepts data in the common BUGS format, i.e., relative treatment effects in comparison to a reference treatment.
For relative effect measures show “ln” instead of “log” in printouts and forest plots if ‘backtransf = FALSE’.
R package metabook added to Depends (to access meta-analysis datasets).
Inverse variance heterogeneity (IVhet) method by Doi et al. (2015) going back to Henmi and Copas (2010) implemented.
User-defined weights can be provided in meta-analysis functions.
Major revision of R function metaadd() to add meta-analysis results to existing meta-analysis object.
R function longarm() can be used with dose-response data.
New functions cidprop() and plot.cidprop() to calculate and plot expected proportions of comparable studies with clinically important benefit or harm which are derived from the prediction interval.
Rewrite of R function metacum() for cumulative meta-analysis with dedicated print and forest functions.
Rewrite of R function metainf() for leave-one-out meta-analysis with dedicated print and forest functions.
Remove R code for cumulative or leave-one-out meta-analysis from R function forest.meta().
In forest plots, information for additional columns can be printed in the lines with pooled effects using the new argument ‘data.pooled’.
R packages **ggplot2*, tibble, and scales added to Imports.
R packages gridExtra and ggpubr added to Suggests.
metabin(), metainc():
metainc():
pairwise(): add columns ‘incr1’ and ‘incr2’ to core variables
Internal function xlab() renamed to xlab_meta() as xlab() from the R package ggplot2 is used in plot.cidprop()
New function [.pairwise
In help pages, use requireNamespace() for R commands using R packages listed under Suggests
Revise web links
By default, prediction intervals are based on k - 1 instead of k - 2 degrees of freedom (Veroniki et al., 2019, RSM) where k corresponds to the number of studies in the meta-analysis; see help(“meta-package”) for more details on methods to calculate prediction intervals.
Meta-analysis of n-of-1 trials implemented (Senn, 2024, Trials).
Logistic regression with penalised likelihood implemented for meta-analysis of rare events (Evrenoglou et al., 2022, Stat Med).
I2 statistic can be calculated from between-study variance instead of Q statistic (new argument ‘method.I2’).
R functions pairwise() and subset.pairwise() moved from R package netmeta to meta.
R function pairwise() can be used with dose-response data.
Information on colour of labels on left and right side of null effect in forest plots can be stored in meta-analysis object.
In forest plots,
Level of confidence intervals for heterogeneity statistics can be specified by the user (argument ‘level.hetstat’); in previous version of R package meta confidence intervals for tau2 and tau were always 95%-CIs while confidence intervals for I2 and H were based on the value for argument ‘level.ma’.
First argument to R functions metabin(), metacont(), metagen(), and metainc() can be a pairwise() object.
In funnel.meta(), arguments ‘pch’, ‘cex’, and ‘cex.studlab’ can be of same length as the number of studies.
New auxiliary function setvals() to easily define the input for arguments ‘pch’, ‘cex’, ‘col’, ‘bg’, ‘text’, and ‘cex.studlab’ in funnel.meta(); e.g., to use different colours for subgroups.
R package brglm2 added to suggested packages to fit penalised logistic regression for meta-analysis of rare events (Evrenoglou et al., 2022, Stat Med).
Print a warning message if deprecated arguments are used, e.g., ‘comb.fixed’ or ‘fixed’ instead of ‘common’.
The command settings.meta(“meta7”) can be used to get the meta-analysis settings from meta, version 7.0-0.
metabin(), metacont(), metacor(), metacr(), metagen(), metainc(), metamean(), metaprop(), metarate(), update.meta():
metagen():
metabin():
Do not print the start-up message concerning older version of R package meta for readers of ‘Meta-Analysis with R (Use R!)’
funnel.meta():
print.summary.meta():
pairwise():
bubble.metareg():
settings.meta():
Vignettes added
R package metadat added to Depends (to access meta-analysis datasets)
R package robvis added to Suggests (for risk of bias assessment)
New functions rob(), barplot.rob() and traffic_light() for risk of bias assessment (RoB)
New function read.cdir() to import Cochrane data package from Cochrane review of interventions
New function blup.meta() to calculate best linear unbiased predictors (BLUPs)
New functions estimates(), estimates.meta(), and estimates.blup.meta() to extract meta-analysis results
Lower and upper confidence interval limits of individual study results stored as transformed limits for meta-analysis with single proportions or rates (in previous versions of meta, CI limits were back transformed for individual studies and not back transformed for meta-analysis results)
Changes for forest plots:
New general setting “BMJ”, i.e., R command settings.meta(“BMJ”), to print results according to BMJ style and formating checklist, see, for example, BMJ Medicine
R function metabind() can return both common effect and random effects results as well as prediction intervals
Internal functions for (back) transformations made visible / accessible to the user; see help(“meta-transf”)
Within-cluster correlation can be specified for three-level model (by default, rho = 0)
Use approximate formulae for Hedges’ g and Cohen’s d for RevMan 5 settings; see help page of settings.meta()
Argument ‘pscale’ or ‘irscale’ could be used in principle with any effect measure which is useful for user-specified summary measure in metagen()
New R function plot.meta() which calls forest.meta() internally
Do not export the following R functions but rely on their generic functions:
New internal function gh() to determine height of graphics file
New internal function smlab() to determine the label for the summary measure
Use of vcalc() from R package metafor to calculate the variance-covariance matrix in three-level model with within-cluster correlation not equal to 0
funnel.meta(): list element of meta-analysis object can be directly specified in arguments ‘text’, ‘col’ and ‘bg’, e.g., argument ‘text = studlab’ to use study labels instead of plotting symbols
Input to chkchar() can be a numeric vector
settings.meta(): set defaults for arguments ‘forest.tau2,’ ‘forest.tau’, ‘forest.I2’, ‘forest.Q’, ‘forest.pval.Q’, and ‘forest.Rb’ for BMJ, JAMA and RevMan5 layout
In R function metamerge(), user can decide whether to keep or ignore information from second meta-analysis on study weights and heterogeneity statistics
New function metaadd() to add pooled results from external analysis to meta-analysis object
Function update.meta() considers arguments ‘method.mean’ and ‘method.sd’
Variables with group specific information can be merged into a single variable in longarm()
Additional thresholds can be specified to plot vertical lines in forest plots, e.g., to mark large, moderate and small effects
Baujat plot can be used to evaluate influence of studies on random effects estimate
Seed can be specified in meta-analysis functions to calculate reproducible bootstrap prediction intervals
gsub("\x80", "EUR", txt) :
unable to translate ‘<80>’ to a wide string due to a change in the
default settings of R function gsub()full rewrite of function catmeth() to print details on meta-analysis methods
internal functions is.wholenumber() etc. renamed to is_wholenumber() due to new CRAN policy regarding generic functions
metabias():
metagen(): check argument ‘sm’ for known summary measures in lower case
setchar(): new arguments ‘return.NULL’ and ‘nchar.equal’
New branch ‘release’ on GitHub starting with meta, version 6.2-1
Use generic functions metacum() for cumulative meta-analysis, metainf() for leave-one-out meta-analysis and metareg() for meta-regression
New internal function chksuitable() to check for suitable classes
Meta-analysis of Vaccine Efficacy or Vaccine Effectiveness implemented
For the generic inverse variance method,
Methods by McGrath et., (2020) and Cai et., (2021) implemented to approximate means and standard deviations from median and related statistics
R package estmeansd added to suggested packages to provided methods by McGrath et., (2020) and Cai et., (2021)
Print header line in forest plots with JAMA or RevMan5 layout
All meta-analysis functions:
metabin, metagen(), metainc():
metagen(), settings.meta():
forest.meta():
metabin(), metainc(), metaprop() and metarate():
nnt.meta(), nnt.default():
settings.meta():
Print blank space before negative upper confidence interval limit if separator is equal to “-”
New help page meta-sm summarising available summary measures
Help page of nnt() updated
Change maintainer’s email address
New internal functions transf(), cor2z(), p2asin(), logVR2VE() and VE2logVR()
chknumeric():
List element ‘df.Q.b.random’ with degrees of freedom for test of subgroup differences under random effects model is a list instead of a vector if more than one random effects method was used (argument ‘method.random.ci’)
Several changes for meta-analysis using generalised linear mixed or three-level models
Meta-analysis object can contain results of several common effect or random effects methods, e.g., random effects meta-analysis with or without Hartung-Knapp method
Kenward-Roger method implemented to estimate confidence or prediction interval (Partlett & Riley, 2017)
Bootstrap approach implemented to calculate prediction interval (Nagashima et al., 2019)
Rewrite of function metamerge() to merge pooled results of two meta-analyses into a single meta-analysis object
Defaults for appearance of forest plots can be defined for the R session
R package pimeta added to suggested packages in order to calculate bootstrap approach for prediction interval
New argument ‘method.random.ci’ replaces argument ‘hakn’ to select method to calculate confidence interval for random effects estimate
Major update of help pages:
Use term ‘common effect model’ instead of ‘fixed effect model’ in the documentation and argument ‘common’ instead of ‘fixed’ to (not) show results for common effect model
Three-level model implemented in all meta-analysis functions
For continuity corrections, new argument ‘method.incr’ replaces arguments ‘allincr’ and ‘addincr’ for meta-analysis with binary outcome or incidence rates
Exact Poisson confidence limits can be calculated for individual studies in meta-analysis of single rates
Show information on statistical significance and between-study heterogeneity in forest plots of cumulative or leave-one-out meta-analysis
Calculate Cochran’s Q directly in meta for classic inverse variance meta-analysis (instead of taking it from metafor package)
By default, do not print warnings for deprecated arguments; this can be changed with command ‘settings.meta(warn.deprecated = TRUE)’
Use correct standard error for Cox and Snell’s method in smd2or() and or2smd()
Three-level model did not work if variable from dataset was provided as input to argument ‘id’ in metacont()
Argument ‘tau.common = TRUE’ was ignored in subgroup analysis of three-level model in metacont()
Argument ‘level’ was ignored in the calculation of confidence limits for individual studies in metacont() and metamean() if argument ‘method.ci = “t”’
Show correct studies in forest plot with subgroups and missing treatment effects if argument ‘allstudies = FALSE’
Show points in bubble plot of meta-regression with GLMM
For three-level models,
New arguments ‘common’ and ‘cluster’ in functions metabin(), metacont(), metacor(), metagen(), metainc(), metamean(), metaprop() and metarate()
New function subset.longarm() to select subset of a longarm object
New argument ‘method.ci’ in function metarate()
New argument ‘method.ci.rate’ in function settings.meta()
New argument ‘method.incr’ in functions metabin(), metainc(), metaprop() and metarate()
print.summary.meta():
forest.meta():
metarate():
New internal function update_needed() to check whether update of meta object is needed
metabin(), metacont(), metacor(), metagen(), metainc(), metamean(), metaprop() and metarate():
Forest plot for meta-analysis with subgroups:
Prediction intervals in subgroups can be shown independently of prediction interval for overall meta-analysis in printouts and forest plots
Bubble plot shows relative treatment effects on original scale instead of log scale and reference line is shown
Trim and fill, limit meta-analysis and Copas selection model objects can be used in function metabind()
New function longarm() to transform data from pairwise comparisons to long arm-based format
New auxiliary function labels.meta() to create study labels for forest plots in JAMA or Lancet layout
Printing of spaces in confidence intervals can be suppressed
Help page of forest.meta() updated
Use correct standard error to calculate prediction interval if Hartung-Knapp method was used
In forest plots, show correct degrees of freedom for test of effect in subgroups for Hartung-Knapp method
In update.meta(), consider input for arguments ‘pscale’, ‘irscale’ and ‘irunit’ for meta-analysis objects created with metagen()
metagen():
forest.meta():
Internal function formatCI() considers values for ‘lower.blank’ and ‘upper.blank’ in cilayout()
New internal function catch() to catch value for an argument
Meta-analysis of continuous outcomes using Hedges’ g or Cohen’s d as summary measure resulted in inestimable SMDs in individual studies if the total sample size was larger than 343 and argument ‘exact.smd’ was TRUE (issue #42)
Forest plot creation for meta-analysis of single means with subgroups resulted in an error
New internal function ciClopperPearson() to calculate confidence limits and p-value for exact binomial method
Exported list elements changed for internal functions ciAgrestiCoull(), ciSimpleAsymptotic() and ciWilsonScore()
Behaviour of print.meta() and print.summary.meta() switched (to be in line with other print and summary functions in R)
New default settings:
Default settings of meta, version 4 or lower, can be used with command settings.meta(“meta4”) - this does not change the new behaviour of print.meta() and print.summary.meta()
Renamed arguments:
Function gs() can be used to access internal settings
Store internal auxiliary functions in files meta-aux.R to meta-xlab.R
Forest plots of meta-analyses assuming a common between-study heterogeneity variance in subgroups resulted in an error (bug was introduced in meta, version 4.16-0)
For GLMMs, export Wald-type Q statistic for residual heterogeneity instead of missing value
Subgroup analysis for three-level model fully implemented
New default for forest plots to show results of test for subgroup differences in meta-analyses with subgroups
Calculation of weights for three-level random effects model using weights.rma.mv() with argument ‘type = “rowsum”’ from R package metafor
Print study label provided by argument ‘studlab’ for meta-analysis with a single study
Total number of observations and events printed in summaries (if available)
Three-level meta-analysis models can be fitted for generic and continuous outcomes (Van den Noortgate et., 2013) by calling rma.mv() from R package metafor internally
Measures I2 and H for residual heterogeneity are based on Q statistic for residual heterogeneity (instead of taken directly from metafor package)
Additional ad hoc method implemented if confidence interval of Hartung-Knapp method is smaller than classic random effects meta-analysis (Hybrid method 2 in Jackson et al., 2017)
For funnel plot of a diagnostic test accuracy meta-analysis, use effective sample size (Deeks et., 2005) by default on the y-axis
New function metamerge() to merge pooled results of two meta-analyses into a single meta-analysis object
Do not print empty confidence intervals for heterogeneity statistics
metacont(), metagen(), update.meta():
metabind():
All meta-analysis functions:
forest.meta():
metainc():
New arguments ‘text.fixed’, ‘text.random’, ‘text.predict’, ‘text.w.fixed’ and ‘text.w,random’ in meta-analysis functions
settings.meta():
print.meta(), print.summary.meta():
metareg() can be used in loops to provide argument ‘formula’
New auxiliary function JAMAlabels() to create study labels in JAMA layout
Deeks’ linear regression test for funnel plot asymmetry of funnel plots of diagnostic test accuracy studies implemented (Deeks et., 2005)
Effective sample size (Deeks et., 2005) can be used on y-axis of funnel plot
Discard infinite estimates and standard errors from calculation of heterogeneity measures
Diagnostic odds ratio (sm = “DOR”) added as new effect measure in metabin() and metagen()
forest.meta(), forest.metabind():
print.summary.meta(), settings.meta():
metacr():
Help page for tests of funnel plot asymmetry updated
Help pages for metabin() and metainc() updated
Median and related statistics can be used in meta-analysis with continuous outcomes to approximate means and standard deviations (Wan et., 2014; Luo et al., 2018; Shi et al., 2020)
RevMan 5 analysis datasets can be imported directly using the RM5-file
R package xml2 added to Imports (RM5-files are in XML-format)
Confidence intervals for individual studies can be based on quantile of t-distribution (only implemented for mean differences and raw untransformed means at the moment)
For the generic inverse variance method,
read.rm5():
metacr():
metagen(), metacont(), metamean():
metacont():
metamean():
forest():
Datasets renamed from Fleiss93, Fleiss93cont and Olkin95 to Fleiss1993bin, Fleiss1993cont and Olkin1995
More sensible variable names in datasets Fleiss1993bin, Fleiss1993cont and Olkin1995
Previous R function read.rm5() for CSV-files renamed to read.rm5.csv()
New auxiliary functions extract_outcomes(), oct2txt() and read.rm5.rm5() to import RevMan 5 analysis datasets
ci():
metagen():
Internal functions TE.seTE.iqr.range(), TE.seTE.iqr() and TE.seTE.range() renamed to mean.sd.iqr.range(), mean.sd.iqr() and mean.sd.range()
mean.sd.iqr.range():
mean.sd.iqr(), mean.sd.range():
chkchar(), chkcolor(), chklevel(), chknumeric():
Rely on generic functions from R package metafor, e.g., to produce forest or funnel plots (since R version 4.0.0 generic functions from an R package do not consider corresponding functions from another R package which can result in errors if R packages meta and metafor are both loaded)
R function funnel.default() removed from meta due to conflict with metafor
Sample size method for meta-analysis of binary data with the odds ratio as summary measure implemented (Bakbergenuly et al., 2020)
Ad hoc variance correction for Hartung-Knapp method in the case of very homogeneous study results implemented (Knapp and Hartung, 2003; IQWiG, General Methods: Draft of Version 6.0)
Default settings according to recommendations in General Methods of the Institute for Quality and Efficiency in Health Care (IQWIG), Germany
Do not use predict.rma() from metafor package to calculate prediction intervals for generalised linear mixed models
New arguments ‘overall’ and ‘overall.hetstat’ in meta-analysis functions to control printing of overall meta-analysis results (useful to only show subgroup results)
For GLMMs, use Wald-type Q statistic to calculate I2 of residual heterogeneity in meta-analysis with subgroups (instead of likelihood-ratio Q statistic)
For GLMMs with subgroups, conduct the correct test for subgroup differences (bug was introduced in meta, version 4.9-7)
summary.meta():
metabind():
Confidence intervals for the between-study variance tau2 and its square root tau are calculated
Print tau as well as confidence intervals for tau2 and tau in outputs
Square root of between-study variance can be printed in forest plots instead of between-study variance tau2; in addition, the confidence interval for tau2 or tau can be printed
Use R package metafor to estimate between-study variance tau2 for DerSimonian-Laird and Paule-Mandel method (which has been already used for all other methods to estimate tau2)
For Mantel-Haenszel (MH) method, report results as MH method (instead of inverse variance, IV) for meta-analysis of binary outcome with a single study (results are identical for MH and IV method in this situation)
Number of studies printed without digits in forest plots for R objects created with metabind()
P-values can be printed according to JAMA reporting standards
In subgroup analyses, print the group labels instead of levels if the grouping variable is a factor
In funnel plot, print funnel around random effects (instead of fixed effect) estimate if only random effects meta-analysis is conducted; only show funnel if either fixed effect or random effects meta-analysis was conducted
New preferred citation of R package meta: Balduzzi et al. (2019)
print.summary.meta(), forest.meta():
print.summary.meta():
print.meta():
update.meta():
Command ‘settings.meta(“JAMA”)’ will change the settings for arguments ‘zero.pval’ and ‘JAMA.pval’
Help page with description of R package updated
Major update of other help pages:
Function paulemandel() removed as R package metafor is used to estimate the between-study variance
formatPT():
List elements ‘C’ and ‘C.w’ (scaling factor to estimate common between-study variance) removed from meta-analysis objects
Import confint.rma.uni() from metafor to calculate confidence intervals for tau2 and tau
New internal function pasteCI() to print formatted CIs
New internal function is.wholenumber() to check for whole numbers
New functions to calculate the number needed to treat from the results of a meta-analysis
Equivalence limits can be added to forest plots
Font family can be specified in forest plots
Print Wald-type test of heterogeneity for generalised linear mixed models (problem fixed in R package metafor, version 2.1-0)
For the generic inverse variance method, treatment estimates and standard errors of individual studies can be derived from
New functions for the conversion of effect measures:
Harbord test for funnel plot asymmetry implemented for risk ratio as effect measure
Generalised linear mixed model is the new default method for meta-analysis of single proportions using the logit transformation
R packages metafor and lme4 moved from Suggests to Imports
Suppress printing of Wald-type test of heterogeneity for generalised linear mixed models (problem in R function rma.glmm() from R package metafor, version 2.0-0)
Use roxygen2 for development of R package meta
New internal functions TE.seTE.ci(), TE.seTE.iqr(), TE.seTE.iqr.range(), TE.seTE.range(), and seTE.ci.pval() to approximate treatment estimates or standard errors from other information
setchar():
metagen():
Subgroup results consider the exclusion of individual studies (bug fix)
For generalised linear mixed models, between-study variance set to NA if only a single study is considered in meta-analysis
New function metamean() to conduct meta-analysis of single means
New function metabind() to combine meta-analysis objects, e.g. to generate a forest plot with results of several subgroup analyses
Subgroup analysis implemented for generalised linear mixed models (GLMMs) with and without assumption of common between-study variance (arguments ‘byvar’ and ‘tau.common’)
Axis direction can be reversed for x-axis in forest plots
Source code version of meta can be installed without compilation, i.e., without use of Rtools on Windows or ‘Command-line tools for Xcode’ on macOS
Rank test for funnel plot asymmetry uses cor() from R package stats instead of internal C routine (negligibly slower, however, no need for compilation of source installs)
Thousands separator can be used in printouts and forest plots for large numbers
P-values equal to 0 are actually printed as “0” instead of “< 0.0001”
New internal functions:
Renamed internal functions:
Removed R functions:
Deprecated functions: format.NA(), format.p(), p.ci()
Check whether argument ‘sm’ is NULL in meta-analysis functions
subgroup(): extended for GLMMs
formatPT():
bylabel(), catmeth(), formatPT(), formatN(), xlab():
New internal functions is.cor(), is.prop() and is.rate() to check whether summary measure refers to meta-analysis of correlations, proportions, or rates
metabias.default(), radial.default(), trimfill.default():
Similar to RevMan 5, individual studies can be excluded from meta-analysis, however, will be shown in printouts and forest plots
In forest plots, line spacing can be determined by the user
metabin(), metacor(), metacont(), metagen(), metainc(), metaprop(), metarate():
forest.meta():
R function ci() can be used with vectors or matrices of treatment estimates and standard errors and a single value for argument ‘df’, i.e., degrees of freedom (which is used in R package netmeta to calculate prediction intervals for network meta-analysis estimates)
metacum(), metainf():
Calculate confidence interval for I2 in a meta-analysis with two studies if the heterogeneity statistic Q is larger than 2
P-values can be printed in scientific notation
In forest plots, printing of z-values can be disabled and labels for tests can be changed by user
forest.meta():
print.meta() and print.summary.meta():
R command ‘help(meta)’ can be used to show brief overview of R package meta
Substantially decrease number of automatically run examples for forest.meta() as CRAN only allows a run time below 10 seconds for examples provided on a help page
new internal function pvalQ() to calculate p-value from heterogeneity tests
calcH():
hetcalc():
subgroup():
format.p():
forest.meta() and print.summary.meta():
act on NOTE in CRAN checks with R version, 3.4.0, to register and declare native C routine ‘kenscore’
metabin(), metainc():
forest.meta():
new auxiliary R functions used in forest.meta():
hetcalc(), calcH():
updateversion():
Null hypothesis for test of an overall effect can be specified for metacor(), metagen(), metaprop(), and metarate(); for all other meta-analysis functions implicit a null effect of zero is assumed (for relative effect measures, e.g., odds ratio and hazard ratio, the null effect is defined on the log scale)
User can choose whether to print the following heterogeneity quantities: I2, H, Rb (by default, heterogeneity measure Rb is not printed and thus revoking a change in meta, 4.7-0)
In forest plots with subgroups, study weights are summed up to 100 percent within each subgroup if no overall estimates are requested, i.e., argument ‘overall = FALSE’ (like before, by default, weights are not printed if argument ‘overall = FALSE’ and have to be explicitly requested using argument ‘leftcols’ or ‘rightcols’)
Forest plots:
Measure of between-study heterogeneity added:
Default settings of meta-analysis methods specified via gs() instead of extracting elements of list .settings (which makes output of args() easier to read, e.g., args(metabin))
Version of suggested R package metafor must be at least 1.9-9 (due to change in arguments of rma.uni() and rma.glmm())
forest.meta():
metabin(), metacont(), metacor(), metacr(), metacum(), metagen(), metainc(), metainf(), metaprop(), metarate(), trimfill.default(), trimfill.meta():
summary.meta():
print.meta(), print.summary.meta():
metabias.meta(), metabias.default():
New function gs() to get default settings
forest.meta(), metabin(), metacont(), metacor(), metacr(), metagen(), metainc(), metaprop(), metarate(), print.meta(), print.summary.meta():
metareg():
metabin(), metainc(), metaprop(), metarate():
metabin():
metareg():
settings.meta():
Several help pages updated, especially
New function metarate() to conduct meta-analysis of single incidence rates
Peters’ test for funnel plot asymmetry implemented for meta-analysis of single proportions
Meta-analysis of ratio of means added to metacont()
Justification of additional columns in forest plot can be specified individually for each additional column
Justification of additional columns in forest plot can be specified individually for each additional column
Calculation of Freeman-Tukey double arcsine transformation and back transformation slightly changed in meta-analysis of single proportions
By default, do not print a warning if back transformation for metaprop() and metarate() objects results in values below 0 or above 1 (only for proportions); note, respective values are set to 0 or 1
Help page with brief overview of meta package added
Preferred citation of meta package in publications changed; see output of command ‘citation(“meta”)’
forest.meta(), metagen(), print.meta(), print.summary.meta(), summary.meta(), trimfill.default(), trimfill.meta(), update.meta():
settings.meta():
funnel.meta(), funnel.default():
forest.meta():
metacont():
metaprop():
print.summary.meta():
print.meta(), print.summary.meta():
Help pages updated:
New function asin2ir() to back transform Freeman-Tukey transformed incidence rates
backtransf(), catmeth(), metacum(), metainf(), subgroup(), xlab():
metaprop(), asin2p():
subgroup():
New features in forest plots:
New function weights.meta() to calculate absolute and percentage weights in meta-analysis
New argument ‘byseparator’ to define the separator between label and subgroup levels which is printed in meta-analysis summaries and forest plots - considered in all R functions dealing with meta-analysis and subgroups
Argument ‘pscale’ - a scaling factor for printing of single event probabilities - considered in all R functions for single proportions; before this update, argument ‘pscale’ was only available in forest.meta()
New function bylabel() to print subgroup labels
update.meta():
catmeth(), xlab():
catmeth():
metacum(), metainf():
metabin():
metacr():
paulemandel():
settings.meta():
Generalised linear mixed models (GLMMs) implemented by internal call of rma.glmm() from R package metafor by Wolfgang Viechtbauer
R packages lme4, numDeriv, and BiasedUrn added to suggested packages which are required by rma.glmm()
Print layout (especially number of printed digits) slightly modified which impacts output from print.meta(), print.summary.meta(), and forest.meta()
New arguments to change number of digits in printouts and forest plots
New function format.NA() to print other text than “NA” for missing values
metagen():
metabin(), metainc(), metaprop(), summary.meta():
metabin(), summary.meta():
Set defaults for arguments ‘model.glmm’, ‘digits’, ‘digits.se’, ‘digits.zval’, ‘digits.Q’, ‘digits.tau2’, ‘digits.H’, ‘digits.I2’, ‘digits.prop’, ‘digits.weight’, ‘digits.pval’, ‘and digits.pval.Q’
paulemandel():
format.p():
catmeth():
is.installed.package():
Copyright changed (new names for Institute and Medical Center)
metacont():
forest.meta():
forest.meta(), print.meta, print.summary.meta():
settings.meta(), catmeth(), update.meta():
ci(), kentau():
Several help pages updated to reflect changes in metacont() and RevMan 5 reference
Title of R package changed
metacont():
update.meta():
summary.meta():
settings.meta():
forest.meta():
metagen():
paulemandel():
chklevel():
catmeth():
Help pages updated for metacont() and update.meta()
This update has been declared as major revision as R code to conduct subgroup analyses has been moved from summary.meta() and forest.meta() to metabin(), metacont(), metacor(), metagen(), metainc(), and metaprop(). Accordingly, an R object generated with these functions contains all results from subgroup analyses.
In the case of subgroups, the overall treatment effect in fixed effect and random effects meta-analysis ignores subgroup membership. See Borenstein et al. (2011), Introduction to Meta-Analysis, Wiley, Chapter 19, “Obtaining an overall effect in the presence of subgroups, Option 3.
Furthermore, several checks of function arguments have been implemented in version 4.0-0 of meta.
Function addvar() removed from R package meta as functionality is provided by forest.meta()
forest.meta():
bubble.metareg():
New internal R functions:
format.p(), format.tau(), catmeth(), print.summary.meta():
print.meta(), print.summary.meta():
print.summary.meta():
Several help pages updated
New functions:
metareg():
update.meta():
print.meta():
New internal function is.installed.package() replaces is.installed.metafor()
Help pages datasets amlodipine and cisapride:
Help pages merged:
New R function settings.meta() to define and print default settings for meta-analyses in R package meta
metagen():
metacont():
metabin(), metacont(), metacor(), metacr(), metagen(), metainc(), metaprop():
metareg():
Several help pages updated
metabin(), metacont(), metacor(), metagen(), metainc(), metaprop():
metareg():
update.meta():
trimfill.default(), trimfill.meta():
metagen():
summary.meta():
forest.meta():
forest.meta(), summary.meta():
catmeth():
print.meta(), print.summary.meta():
New internally used functions isquared() and calcH()
Some help pages updated
New R function metainc() for meta-analysis of incidence rates
Continuity correction:
forest.meta(), funnel.default(), funnel.meta(), print.meta(), print.summary.meta(), update.meta(), catmeth(), xlab():
metaprop():
metabin():
catmeth():
summary.meta():
trimfill.meta(), trimfill.default():
New datasets smoking and lungcancer as examples for metainc()
This update has been declared as major revision as the user interface changed by dropping some arguments: - print.meta(), forest.meta(), summary.meta(): ‘level’, ‘level.prediction’ - print.meta(), forest.meta(), metainf(), metacum(): ‘level.comb’ - in forest.meta(), summary.meta(): ‘byvar’
This functionality is now provided by update.meta().
New function update.meta() to update an existing meta-analysis object created with metabin(), metacont(), metagen(), metaprop(), or metacor()
New function cilayout() to change layout of confidence intervals
Deprecated function plot.meta() removed
metabin(), metacont(), metagen(), metaprop(), metacor():
metabin(), metacont(), metagen(), metaprop(), metacor(), summary.meta():
metareg():
trimfill.meta():
trimfill.default():
metacr():
metaprop():
forest.meta():
print.summary.meta():
New function format.tau() to print “0” instead of “< 0.0001” if tau2 is zero
p.ci():
Several help pages updated
R package meta linked to R package metafor to provide additional statistical methods, e.g. meta-regression and other estimates for tau2 (REML, …)
New functions:
metabin(), metacont(), metagen():
metabin(), metacont(), metacor(), metagen(), metaprop():
metabin():
metacum(), metainf():
metaprop():
asin2p():
print.metabias():
print.summary.meta():
metacr():
read.rm5():
summary.meta():
forest.meta():
funnel.default(), funnel.meta():
metabias.default(), metabias.meta():
trimfill.default(), trimfill.meta():
New datasets: amlodipine, cisapride
File FLEISS93.MTV moved from directory data to directory extdata
Several help pages updated
Some new help pages added
Version jump to 1.5-0 as several changes have been implemented
New functions:
forest.meta():
metaprop():
funnel(), funnel.meta(), labbe(), labbe.meta():
trimfill(), trimfill.meta():
summary.meta():
forest.meta(), metacum(), metainf(), print.meta(), print.summary.meta(), summary.meta():
plot.meta():
New list element ‘version’ with information on version number of meta package used to create an object; applies only to object creating functions, e.g. metabin() and metabias()
Several help pages updated
Use file NEWS instead of ChangeLog to document changes
L’Abbe plot implemented: labbe(), labbe.default(), labbe.metabin()
Generic method for funnel plots: funnel(), funnel.default(), funnel.meta()
funnel.meta(), funnel.default():
forest():
metabin(), metacont(), metagen():
metacr():
First major version released on CRAN (no ChangeLog available)
Older versions (without ChangeLog):
meta, version 0.9-19 (2009-04-09)
meta, version 0.9-18 (2009-03-03)
meta, version 0.9-17 (2009-01-28)
meta, version 0.9-15 (2008-12-08)
meta, version 0.8-2 (2007-02-13)
meta, version 0.81 (2006-11-29)
meta, version 0.8 (2006-11-24)
First CRAN release (2006-02-08)
meta, version 0.5-0 (2005-02-23)