Major changes
- 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:
- forest plot can be directly saved to a file using common graphics device drivers (height of file is determined automatically)
- BMJ layout implemented (layout = “BMJ”)
- details on meta-analysis methods can be shown in plot
- risk of bias assessment automatically added for meta-analyses with RoB assessment
- point estimates can be plotted as circles or diamonds instead of squares
- default settings for columns on left or right side of forest plot can be defined in settings.meta()
- common effect and random effects confidence intervals and prediction intervals are truncated if lower / upper limit is outside the limits of the x-axis
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
User-visible changes
- metabin(), metacont(), metacor(), metainc(), metamean(), metaprop(), metarate(), update.meta():
- new argument ‘rho’ to specify within-cluster correlation in three-level model
- print.meta():
- show group sample sizes in printouts
- print confidence intervals based on t- and normal distribution for metacont() or metamean() objects with a single study and argument ‘method.ci = “t”’
- new argument ‘print.Q’ to suppress printing of heterogeneity statistic Q and test of heterogeneity
- default for argument ‘details.methods’ can be defined using settings.meta()
- do not print degrees of freedom for Hartung-Knapp or Kenward-Rogers intervals if argument
- gs():
- first argument can be a character vector instead of a character string to get the default setting of several arguments (which would be returned as a list)
- new argument ‘unname’ to return named arguments (if unname = FALSE)
- metamerge():
- can be used with object created with copas() or limitmeta() from R package metasens as only input (which adds the respective results to the standard meta-analysis object)
- arguments ‘label1’ and ‘label2’ can be used to provide defaults to amend labels for common effect or random effects model, prediction intervals and subgroups
- new arguments ‘label1.common’, ‘label2.common’, ‘label1.random’, ‘label2.random’, ‘label1.predict’, ‘label2.predict’, ‘label1.subgroup’, and ‘label2.subgroup’
- metaadd():
- argument ‘data’ can be a meta-analysis object created with R package meta
- new arguments ‘method.common’, ‘method.random’, ‘method.tau’, ‘method.random.ci’, and ‘method.predict’
- metabind():
- new arguments ‘common’, ‘random’ and ‘prediction’ replacing argument ‘pooled’
- forest.meta():
- new arguments ‘file’, ‘width’, ‘rows.gr’, ‘func.gr’, ‘args.gr’, and ‘dev.off’ to directly store a forest plot in a file
- new arguments ‘rob’, ‘rob.col’, ‘rob.symbols’, ‘rob.attach’, ‘rob.xpos’, ‘rob.legend’, ‘fs.rob’, ‘fs.rob.symbols’, ‘ff.rob’, ‘ff.rob.symbols’, ‘colgap.rob’ and ‘just.rob’ for risk of bias assessment
- new arguments ‘details’, ‘fs.details’ and ‘ff.details’ to add details on meta-analytical methods
- point estimates can be plotted as circles instead of squares or diamonds (arguments ‘type.study’, ‘type.common’, ‘type.random’, ‘type.subgroup’, ‘type.subgroup.common’, ‘type.subgroup.random’)
- new arguments ‘col.circle’ and ‘col.circle.lines’ to define the colour of circles
- new argument ‘digits.n’ and ‘digits.event’ to specify the number of significant digits for sample sizes and number of events
- justification of results for effect + confidence interval can be specified by argument ‘just’ if argument ‘layout = “RevMan5”’
- settings.meta():
- new argument ‘overall.hetstat’ to specify whether to show information on between-study heterogeneity
- new argument ‘width’ to specify width of graphics device
- new arguments ‘print.tau2’, ‘print.tau2.ci’, ‘print.tau’ and ‘print.tau.ci’ to specify whether to show (confidence intervals for) tau^2 or tau in printouts
- new arguments ‘leftcols’, ‘rightcols’, ‘leftlabs’, ‘rightlabs’, ‘label.e.attach’ and ‘label.c.attach’ to changes defaults for corresponding arguments in forest.meta()
- bubble.meta():
- new arguments ‘pscale’ and ‘irscale’ added
- metaprop(), metarate():
- list elements ‘lower’ and ‘upper’ contain the transformed lower and upper confidence interval limits for individual studies
- R functions for transformation:
- transf(), cor2z(), p2asin(), p2logit(), VE2logVR()
- R functions for back transformation:
- backtransf(), asin2ir(), asin2p(), logit2p(), logVR2VE(), z2cor()
- labels.meta():
- R function is not exported
Bug fixes
- funnel.meta():
- automatically calculated limits on x-axis were to narrow for some settings
- metamean():
- argument ‘null.effect’ was ignored to calculate the test statistic and p-value for individual studies (list elements ‘statistic’ and ‘pval’)
- metabin():
- use continuity correction if sm = “VE”
- metareg():
- error if input to argument ‘formula’ was the name of an R function
- print.summary.meta():
- print correct backtransformed subgroup results for metabind objects with metaprop objects with Freeman-Tukey transformation as input
Internal changes
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
Major changes
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
User-visible changes
- metamerge():
- new arguments ‘common1’, ‘random1’, ‘prediction1’, ‘common2’, ‘random2’, ‘prediction2’ to specify whether to keep common effect results, random effects results or prediction interval from first or second meta-analysis
- new arguments ‘keep’, ‘keep.Q’, ‘keep.I2’ and ‘keep.w’ to determine whether additional information from second meta-analysis should be kept
- new arguments ‘common’, ‘random’, ‘prediction’, ‘overall’ and ‘overall.hetstat’ to specify which results to print
- new arguments ‘hetlabel1’, ‘hetlabel2’, ‘text.common1’, ‘text.common2’, ‘text.random1’, ‘text.random2’, ‘text.predict1’ and ‘text.predict2’ to label results from first or second meta-analysis
- longarm():
- new arguments ‘id1’ and ‘id2’ to specify last character(s) of variable names with group specific information
Bug fixes
- metabias():
- do not conduct test for funnel plot asymmetry for three-level model (the test did not consider the cluster structure)
- forest.meta():
- header line was concealed by equivalence region
- error if argument ‘resid.hetstat = TRUE’ was used for subgroup meta-analysis without common between-study variance estimate in subgroups (argument ‘tau.common = FALSE’ in meta-analysis functions)
- read.rm5():
- fix bug for error message “In gsub(”80“,”EUR“, txt) : unable to translate ‘<80>’ to a wide string” due to change in default settings in R function gsub()
User-visible changes
- metabin(), metacont(), metacor(), metacr(), metainc(), metamean(), metaprop(), metarate(), update.meta():
- new arguments ‘seed.predict’ and ‘seed.predict.subgroup’
- print an error message if bootstrap prediction interval is requested for three-level model
- trimfill.default():
- new argument ‘seed.predict’
- baujat.meta():
- forest.meta():
- arguments ‘lower.equi’ and ‘upper.equi’ can be numeric vectors
- new arguments ‘fill.lower.equi’ and ‘fill.upper.equi’ to specify fill colour(s) for lower or upper limits
- print.metabias():
- do not print the intercept and its standard error (nuisance parameter)
Internal changes
Bug fixes
- forest.meta():
- correct order of cluster variable for three-level meta-analysis with subgroups or use of argument ‘sortvar’
- metabin(), metacont(), metacor(), metainc(), metamean(), metaprop(), metarate():
- recognise argument ‘subset’ for three-level meta-analysis
- Ad hoc variance correction for Hartung-Knapp method was not used for argument ‘adhoc.hakn = “IQWiG6”’ (bug was introduced in meta, version 6.0-0)
User-visible changes
- metacr():
- new argument ‘Q.Cochrane’
- metareg():
- using the regression formula as first unnamed argument will result in an error not a warning
Internal changes
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
Major changes
- New function trimfill.rm5() to conduct trim-and-fill method for all or selected meta-analyses of a Cochrane review
User-visible changes
- nnt.meta(), print.nnt.meta():
Internal changes
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
Major changes
Meta-analysis of Vaccine Efficacy or Vaccine Effectiveness implemented
- For the generic inverse variance method,
- untransformed values can be provided for treatment estimates and confidence limits, see argument ‘transf’
- original confidence limits for individual studies kept if arguments ‘lower’ and ‘upper’ are not missing
- standard error set to missing if lower and upper confidence limits are identical (resulted in an error)
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
Bug fixes
- forest.meta():
- no error for subgroup meta-analysis conducted with metarate() using argument ‘n’ to specify the sample size
- same square sizes for a meta-analysis with or without subgroups
- no error for Revman5 and JAMA layout in meta-analyses with more than one random effects method
- metarate():
- calculate number of observations in subgroups if argument ‘n’ is provided
- metabind(), forest.metabind():
- use correct study / method labels if no subgroup results are present
- settings.meta():
- argument ‘addrows.below.overall’ not ‘addrow.below.overall’
- metagen():
- calculate correct prediction interval limits for three-level models
- number of studies in meta-analysis equal to number of non-missing estimates and standard errors (only number of non-missing standard errors was considered)
User-visible changes
- All meta-analysis functions:
- print prediction interval(s) if argument ‘method.predict’ is not missing
- metabin, metagen(), metainc():
- argument ‘sm = “VE”’ can be used for meta-analysis of vaccine efficacy or vaccine effectiveness
- metagen(), settings.meta():
- forest.meta():
- new argument ‘header.line’ to add header line
- new argument ‘digits.TE’ to specify number of digits for transformed treatment estimates (list element ‘TE’)
- use more informative column labels for ‘TE’ and ‘seTE’
- metabin(), metainc(), metaprop() and metarate():
- for GLMMs, stop with error if argument ‘adhoc.hakn.ci’ or ‘adhoc.hakn.pi’ is unequal to ""
- nnt.meta(), nnt.default():
- new argument ‘small.values’ to specify whether small treatment effects indicate a beneficial or harmful effect
- settings.meta():
- new argument ‘digits.TE.forest’ to set default for argument ‘digits.TE’ in forest.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
Internal changes
New internal functions transf(), cor2z(), p2asin(), logVR2VE() and VE2logVR()
- chknumeric():
- new argument ‘integer’ to check for integer values
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
Major changes
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:
- help page for meta-package revised; content with details in meta-analysis functions moved to this help page
- new help page meta-object describing content of meta-analysis functions; corresponding content moved from individual help pages
Bug fixes
- forest.meta():
- do not print label for subgroups with no information to print, e.g., if argument ‘study.results = FALSE’, for subgroups with only one or no study contributing to pooled estimate in the subgroup
- do not show empty row before label on x-axis (argument ‘xlab’) if argument ‘label.left’ or ‘label.right’ is provided for meta-analysis without reference value (argument ‘ref’), e.g., meta-analysis of single means or proportions
- metareg():
- use Paule-Mandel estimator if used in meta-analysis (instead of REML estimator)
User-visible changes
- metabin(), metacont(), metacor(), metagen(), metainc(), metamean(), metaprop() and metarate():
- argument ‘hakn’ replaced by ‘method.random.ci’
- argument ‘adhoc.hakn’ replaced by ‘adhoc.hakn.ci’
- new arguments ‘method.predict’ and ‘adhoc.hakn.pi’
- settings.meta():
- several new arguments added to define defaults for forest plots; see printout of command settings.meta(print = TRUE)
- forest.meta():
- argument ‘col.by’ has been renamed to ‘col.subgroup’,
- argument ‘bysort’ has been renamed to ‘sort.subgroup’
- trimfill.meta():
- arguments ‘level’, ‘level.ma’, ‘method.random.ci’, ‘adhoc.hakn’, ‘method.tau’, ‘method.tau.ci’, ‘level.predict’, and ‘method.predict’ removed
Major changes
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)’
Bug fixes
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
User-visible changes
- For three-level models,
- argument ‘id’ has been renamed to ‘cluster’
- cluster variable is shown in forest plots
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():
- for a single study and metabin() with method = “MH”, sm = “RR” and RR.Cochrane = FALSE, print results using a continuity correction for sample sizes of 1x incr (individual study) and 2x incr (meta-analysis of single study)
Internal changes
Major changes
- Forest plot for meta-analysis with subgroups:
- more flexible printing of subgroup results
- by default, do not show subgroup results (pooled estimates and information on heterogeneity) for subgroups consisting of a single study
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
Bug fixes
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()
User-visible changes
- forest.meta():
- new argument ‘subgroup.hetstat’
- arguments ‘subgroup’, ‘subgroup.hetstat’, ‘prediction.subgroup’, ‘test.effect.subgroup’, ‘test.effect.subgroup.fixed’ and ‘test.effect.subgroup.random’ can be a logical vector of same length as number of subgroups
- arguments ‘lab.e’, ‘lab.c’, ‘lab.e.attach.to.col’ and ‘lab.c.attach.to.col’ renamed to ‘label.e’, ‘label.c’, ‘label.e.attach’ and ‘label.c.attach’
- forest.meta(), metabin(), metacont(), metacor(), metacr(), metagen(), metainc(), metamean(), metaprop(), metarate(), print.meta(), update.meta():
- new argument ‘prediction.subgroup’
- metamerge():
- first argument can be of class ‘limitmeta’ or ‘copas’
- bubble.metareg():
- new argument ‘backtransf’ to (not) back transform relative treatment effects on y-axis
- new arguments ‘ref’, ‘col.ref’, ‘lty.ref’ and ‘lwd.ref’ for reference line
- settings.meta():
- arguments ‘print’, ‘reset’ and ‘setting’ can be used like any other setting; for example, it is possible to fully reset the settings and switch to the RevMan 5 settings
- R commands ‘settings.meta(“print”)’ and ‘settings.meta()’ produce the same printout
- new global setting ‘prediction.subgroup’ for prediction intervals in subgroups
- new global settings ‘CIlower.blank’ and ‘CIupper.blank’
- cilayout():
- new arguments ‘lower.blank’ and ‘upper.blank’ to suppress printing of spaces in confidence intervals
- additional checks for length of arguments
Internal changes
Major changes
- For meta-analysis of single proportions,
- export p-value of exact binomial test for individual studies if Clopper-Pearson method (method.ci = “CP”) is used to calculate confidence intervals for individual studies
- do not export p-value for individual studies if argument ‘method.ci’ is not equal to “CP” or “NAsm” (normal approximation based on summary measure)
Bug fixes
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 (default)
Forest plot creation for meta-analysis of single means with subgroups resulted in an error
Internal changes
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()
Major changes
- By default, use exact formulae in estimation of the standardised mean difference (Hedges’ g, Cohen’s d) and its standard error (White & Thomas, 2005)
Bug fixes
- Use of metagen() with argument ‘id’ (three-level model) does not result in an error if all estimates come from a single study
Internal changes
- Fix errors due to extended checks of arguments equal to NULL in R package metafor, version 3.1 or above
Major changes
- For backward compatibility, use Q statistic based on Mantel-Haenszel estimate (argument ‘Q.Cochrane’) by default to calculate DerSimonian-Laird estimator of the between-study variance
Bug fixes
- For small sample sizes, use correct entry from Table 2 in Wan et. (2014) to approximate standard deviation from median and related statistics
Major changes
Behaviour of print.meta() and print.summary.meta() switched (to be in line with other print and summary functions in R)
- New default settings:
- Restricted maximum likelihood (REML) instead of DerSimonian-Laird estimator used as default to estimate between-study heterogeneity (argument ‘method.tau’)
- Do not use Q statistic based on Mantel-Haenszel estimate to calculate DerSimonian-Laird estimator of the between-study variance (argument ‘Q.Cochrane’)
- Print ‘Common effect model’ instead of ‘Fixed effect model’
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:
- ‘fixed’ instead of ‘comb.fixed’
- ‘random’ instead of ‘comb.random’
- ‘level.ma’ instead of ‘level.comb’
- ‘subgroup’ instead of ‘byvar’
- ‘subgroup.name’ instead of ‘bylab’
- ‘print.subgroup.name’ instead of ‘print.byvar’
- ‘sep.subgroup’ instead of ‘byseparator’
- ‘nchar.subgroup’ instead of ‘bylab.nchar’
Internal changes
Bug fixes
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
Bug fixes
- metagen():
- set random effects weights equal to zero for estimates with standard errors equal to NA (to fix error bubble.metareg)
- metareg():
- for three-level model, use ‘test = “t”’ instead of ‘test = “knha”’ in internal call of rma.mv()
User-visible changes
- summary.meta():
- print tau2 and tau for subgroups with single study if argument ‘tau.common = TRUE’
- bubble.metareg():
- show regression lines for a single categorical covariate
Major changes
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)
Bug fixes
- metagen():
- treatment estimates for three-level models with subgroups were not based on common between-study variance despite argument ‘tau.common = TRUE’
- metareg():
- use rma.mv() from R package metafor for three-level models instead of rma.uni()
User-visible changes
- metabin(), metacont(), metacor(), metacr(), metagen(), metagen(), metainc(), metamean(), metaprop(), metarate():
- new argument ‘test.subgroup’ to print results of test for subgroup differences
- print.meta():
- for three-level models, column with grouping information added to study details
- metagen():
- default for estimation of between-study variance has changed for three-level models with subgroups, i.e., tau2 is allowed to be different in subgroups by default
Internal changes
- metagen():
- new variable ‘.idx’ with running index in meta-analysis dataset (list element ‘data’)
- new logical list element ‘three.level’ indicating whether three-level model was used
Bug fixes
- For argument ‘adhoc.hakn = “ci”’, directly compare width of confidence intervals of Hartung-Knapp method and classic random effects meta-analysis
Major changes
- Calculate correct upper limit for confidence intervals of I2 and H2 in very homogeneous meta-analyses (i.e., if Q < k - 1)
Bug fixes
- forest.meta():
- correct order of p-values for homogeneity tests within subgroups if argument ‘bysort = TRUE’
- calcH():
- set H = 1 in calculation of confidence interval for H if H < 1 (i.e., if Q < k - 1)
- metabias():
- bug fix for linear regression tests using metafor, version 2.5-86
- metabind():
- bug fix for a single meta-analysis object
Internal changes
- metabias.bias():
- argument ‘…’ passed on to rma.uni()
- metagen():
- set list element ‘df.hakn’ to NA instead of NULL if condition met for argument ‘adhoc.hakn = “ci”’
Major changes
- Prediction intervals for subgroups implemented
Bug fixes
- metacont():
- use correct variance formula for Glass’ delta
- metainc():
- update command resulted in an error Arguments ‘event.e’ and ‘n.e’ must have the same length for meta-analysis with subgroups (due to list elements ‘n.e.w’ and ‘n.c.w’ which were interpreted as ‘n.e’ and ‘n.c’ containing missing values instead of being NULL)
- print.meta():
- use of argument ‘details = TRUE’ resulted in an error in meta-analyses with duplicated study labels
- Consider argument ‘adhoc.hakn’ to calculate confidence intervals in random effects subgroup meta-analyses
User-visible changes
- print.meta():
- column with information on subgroups added to details if argument ‘details = TRUE’
- forest.meta():
- new argument ‘text.predict.w’ to label the prediction interval in subgroups
- arguments ‘text.fixed.w’ and ‘text.random.w’ checked for correct length
- Ad hoc variance correction for Hartung-Knapp method not available for GLMMs
Internal changes
- metacont():
- get rid of warnings ‘Unknown or uninitialised column’ if argument ‘subset’ is used
- subgroup():
- calculate prediction intervals for subgroups
Major changes
- Tests of funnel plot asymmetry:
- New dataset Pagliaro1992 for meta-analysis on prevention of first bleeding in cirrhosis (Pagliaro et al., 1992)
Bug fixes
- update.meta():
- do not switch to three-level model if method.tau = “ML”
User-visible changes
- metabias():
- use name of first author to select test for funnel plot asymmetry instead of “rank”, “linreg”, “mm”, “count”, and “score” (can be abbreviated; old names are still recognised)
- print.metabias():
- new arguments ‘digits.stat’, ‘digits.se’, ‘digits.pval’, ‘scientific.pval’, ‘big.mark’, ‘zero.pval’, ‘JAMA.pval’
Internal changes
- linregcore():
- complete rewrite using rma.uni() and regtest() from R package metafor
Bug fixes
- drapery():
- use correct limits on y-axis for argument ‘type = “zvalue”’
User-visible changes
- funnel.meta():
- inverse of square root of sample size can be plotted on y-axis (argument ‘yaxis = “invsqrtsize”’)
- forest.meta():
- consider input for argument ‘hetstat’ to print heterogeneity statistics for overall results (see argument ‘overall.hetstat’)
- metabin(), metacont(), metacor(), metagen(), metagen(), metainc(), metamean(), metaprop(), metarate():
- studies with missing values for subgroup variable (argument ‘byvar’) can be excluded from meta-analysis using argument ‘subset’
Internal changes
- funnel.meta():
- try to derive sample sizes from list elements ‘n.e’ or ‘n.c’ if argument ‘yaxis = “size”’
Bug fixes
- For argument ‘adhoc.hakn = “ci”’, use correct query to determine whether confidence interval of Hartung-Knapp method is smaller than classic random effects meta-analysis (Hybrid method 2 in Jackson et al., 2017)
Major changes
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
Bug fixes
- metabin():
- Mantel-Haenszel method of risk differences did not use continuity correction in case of studies with a zero cell count (argument ‘MH.exact = FALSE’)
- metabin(), metainc(), metaprop(), metarate():
- for GLMMs, confidence limits for classic random effects meta-analysis were calculated instead of confidence limits for Hartung-Knapp if argument ‘hakn = TRUE’
- metabin(), metainc(), metaprop(), metarate():
- works for GLMMs with zero events or number of events equal to number of patients in all studies
- forest.meta():
- print results for test of subgroup effect in correct order if argument ‘bysort = TRUE’
- read.rm5():
- list elements ‘method’ and ‘sm’ had been encoded as a factor instead of character under R-versions below 4.0 which resulted in an error using metacr()
User-visible changes
Do not print empty confidence intervals for heterogeneity statistics
- metacont(), metagen(), update.meta():
- new argument ‘id’ to specify which estimates belong to the same study (or laboratory) in order to use three-level model
- metabind():
- argument ‘…’ can be a single list of meta-analysis objects
- meta-analyses can use different methods, e.g., different estimators of the between-study variance
- All meta-analysis functions:
- argument ‘adhoc.hakn = “iqwig6”’ instead of ‘adhoc.hakn = “ci”’ uses the ad hoc method for Hartung-Knapp method described in General Methods 6.0 (IQWiG, 2020)
- argument ‘adhoc.hakn = “ci”’ uses the ad hoc method described in Jackson et al. (2017)
- forest.meta():
- column heading “Mean” instead of “MLN” for meta-analysis object created with metamean() with arguments ‘sm = “MLN”’ and ‘backtransf = TRUE’
- study labels specified by argument ‘studlab’ tried to catch from meta-analysis object
- do not print statistic for residual heterogeneity if argument ‘tau.common = FALSE’ was used to conduct subgroup meta-analysis
- metainc():
- square root transformed incidence rate difference added as new summary measure (sm = “IRSD”)
New arguments ‘text.fixed’, ‘text.random’, ‘text.predict’, ‘text.w.fixed’ and ‘text.w,random’ in meta-analysis functions
- settings.meta():
- new general setting “geneexpr” to print scientific p-values and not calculate confidence interval for between-study heterogeneity variance tau2
- argument ‘method.tau.ci’ can be specified as a global setting
- text for fixed effect and random effects model as well as prediction interval can be specified (arguments ‘text.fixed’, ‘text.random’, ‘text.predict’, ‘text.w.fixed’, ‘text.w.randon’)
- print.meta(), print.summary.meta():
- do not print information on continuity correction for exact Mantel-Haenszel method with single study
metareg() can be used in loops to provide argument ‘formula’
New auxiliary function JAMAlabels() to create study labels in JAMA layout
Internal changes
- Calculate measures of residual heterogeneity in hetcalc()
Bug fixes
- metacr():
- set summary measure to “OR” for Peto odds ratio
Major changes
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()
User-visible changes
Major changes
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,
- methods by Luo et al. (2018) implemented to estimate mean from sample size, median and other statistics
- method by Shi et al. (2020) implemented to estimate the standard deviation from sample size, median, interquartile range and range
Bug fixes
- forest.meta():
- show all studies with estimable treatment effects if argument ‘allstudies = FALSE’
- metabind():
- works with meta-analysis objects created with metacor()
- calculate correct p-value for heterogeneity test if input are subgroup analyses of the same dataset
- calculate correct p-value for within-subgroup heterogeneity test if input are subgroup analyses of the same dataset
- metacum():
- works with Hartung-Knapp method
- metagen():
- list element ‘seTE’ contained standard deviation instead of standard error for method by Wan et. (2014) to estimate mean and its standard error from median and other statistics
User-visible changes
- read.rm5():
- direct import of RM5-file possible
- new argument ‘debug’ for debug messages while importing RM5-files directly
- metacr():
- overall results not shown if this was specified in the Cochrane review (only applies to imported RM5-files)
- metagen(), metacont(), metamean():
- new argument ‘method.mean’ to choose method to estimate mean from sample size, median and other statistics
- new argument ‘method.sd’ to choose method to estimate standard deviation from sample size, median, interquartile range and range
- new argument ‘method.ci’ to choose method for confidence intervals of individual studies (only applies to mean differences and raw untransformed means at the moment)
- metacont():
- new arguments to estimate mean and standard deviation from median and related statistics: ‘median.e’, ‘q1.e’, ‘q3.e’, ‘min.e’, ‘max.e’, ‘median.c’, ‘q1.c’, ‘q3.c’, ‘min.c’, ‘max.c’, ‘method.mean’, ‘method.sd’, ‘approx.mean.e’, ‘approx.mean.c’, ‘approx.sd.e’, ‘approx.sd.c’
- metamean():
- new arguments to estimate mean and standard deviation from median and related statistics: ‘median’, ‘q1’, ‘q3’, ‘min’, ‘max’, ‘method.mean’, ‘method.sd’, ‘approx.mean’, ‘approx.sd’
- forest():
- by default, show number of participants in forest plot if this information is available for meta-analysis objects created with metagen()
- automatically format p-values for individual studies if added to forest plot using argument ‘leftcols’ or ‘rightcols’
Datasets renamed from Fleiss93, Fleiss93cont and Olkin95 to Fleiss1993bin, Fleiss1993cont and Olkin1995
More sensible variable names in datasets Fleiss1993bin, Fleiss1993cont and Olkin1995
Internal changes
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():
- list element ‘z’ renamed to ‘statistic’ as calculations can also be based on the t-distribution; list element ‘z’ is still part of the output for backward compatibility, however, could be removed in a future update
- metagen():
- list elements ‘zval’, ‘zval.fixed’ and ‘zval.random’ renamed to ‘statistic’, ‘statistic.fixed’ and ‘statistic.random’; list elements ‘zval’, ‘zval.fixed’ and ‘zval.random’ are still part of the output for backward compatibility, however, could be removed in a future update
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():
- new arguments ‘method.mean’ and ‘method.sd’
- mean.sd.iqr(), mean.sd.range():
- new argument ‘method.mean’
- chkchar(), chkcolor(), chklevel(), chknumeric():
- argument ‘single’ renamed to ‘length’ (which can be used to test for a specific vector length instead whether it is a single value) (argument ‘single’ is still available for backward compatibility, however, will be removed in a future update)
Major changes
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
Major changes
User-visible changes
- drapery():
- study IDs or study labels can be printed at the top of the drapery plot to identify individual studies
- more flexible plots, e.g., colours can be specified for individual studies based on p-value of treatment effect
- possible value for argument ‘type’ renamed from “cvalue” to “zvalue” as drapery plots show test statistics, not critical values
- funnel.meta(), funnel.default():
- argument ‘log’ is considered for relative summary measures, e.g., odds or risk ratio
- metaprop():
- can be used with non-integer number of events and sample sizes
- metabias.meta(), metabias.default():
- third component of list element ‘estimate’ renamed from “slope” to “intercept” for linear regression tests
- settings.meta():
- new possible general settings: “iqwig5” and “iqwig6”, respectively
- Use Markdown for NEWS
Major changes
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)
Bug fixes
User-visible changes
- forest.meta():
- possible to print results for test of an overall effect or subgroup differences even if meta-analysis results are not shown
- new defaults for arguments ‘overall’ and ‘overall.hetstat’ (which are now considered from meta-analysis objects)
- print.summary.meta():
- for meta-analysis with subgroups, print information on Q and I^2 with fixed effect results and information on tau and tau^2 with random effects results (previously, information on Q, I^2, tau, and tau^2 was reported twice)
Internal changes
- do not calculate confidence limits for tau2 and tau in intermediate calculations of other quantities (i.e., use argument ‘method.tau.ci = ""’)
Major changes
- New function drapery() to generate a drapery plot which is based on p-value curves
Bug fixes
- funnel.meta():
- print contours in contour-enhanced funnel plots at correct position for relative effect measures (bug was introduced in meta, version 4.9-8)
User-visible changes
- update.meta():
- do not print a warning concerning argument ‘Q.Cochrane’ if argument ‘sm = “ASD”’ for meta-analysis objects created with metabin()
- print.summary.meta():
- do not print z- and p-values if test for an overall effect was not conducted; see argument ‘null.effect’ in metamean(), metaprop(), and metarate()
Bug fixes
- forest.meta():
- printing an additional column on the right side of the forest plot does not result in an error (bug was introduced in meta, version 4.9-8)
User-visible changes
- labbe():
- new argument ‘pos.studlab’
- argument checks implemented
- baujat(), bubble():
- argument ‘pos’ renamed to ‘pos.studlab’
- argument checks implemented
Major changes
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)
User-visible changes
Internal changes
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
Major changes
- Subgroup analysis using argument ‘byvar’ possible for generalised linear mixed models (GLMMs)
Bug fixes
- metaprop():
- no error if argument ‘tau.common’ is TRUE for GLMM
- metabin(), metainc(), metarate():
- consider argument ‘control’ in subgroup analysis
User-visible changes
- Major update of help pages:
- metabin(), metagen(), metainc(), metaprop(), metarate()
Major changes
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)
Bug fixes
- forest.meta():
- (always) print correct length for reference line
- (always) print label on x-axis at the correct vertical position
- (always) print graph labels on the left and right side of the forest plot at the correct vertical position
- no error if additional numeric variable is added to the right side of the forest plot (argument ‘rightcols’)
- summary.meta():
- consider argument ‘bylab’
- metaprop():
- allow values 0 and 1 for argument ‘null.effect’
User-visible changes
- forest.meta():
- new arguments ‘lower.equi’, ‘upper.equi’, ‘lty.equi’, ‘col.e’ and ‘fill.equi’ to add equivalence limits
- new argument ‘fontfamily’ to specify the font family
- forest.metabind():
- information on heterogeneity printed for each meta-analysis
Internal changes
- ciAgrestiCoull():
- set lower confidence limit to 0 for negative values
- set upper confidence limit to 1 for values above 1
- subgroup meta-analyses return new list element ‘pval.Q.w’
Major changes
- For the generic inverse variance method, treatment estimates and standard errors of individual studies can be derived from
- p-value or confidence limits
- sample size, median, interquartile range and / or range (Wan et al. (2014), BMC Med Res Meth, 14, 135)
- New functions for the conversion of effect measures:
- smd2or() - from standardised mean difference to log odds ratio
- or2smd() - from log odds ratio to standardised mean difference
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
User-visible changes
- metagen():
- new arguments ‘pval’, ‘df’, ‘lower’, ‘upper’, ‘level.ci’, ‘median’, ‘q1’, ‘q3’, ‘min’, ‘max’, ‘approx.TE’, ‘approx.seTE’ to approximate treatment estimates and / or standard errors from other information
- forest.meta():
- printing of leading zeros in p-values can be suppressed (new argument ‘zero.pval’)
- rounding of values for additional numerical columns possible (new arguments ‘digits.addcols’, ‘digits.addcols.left’, and ‘digits.addcols.right’)
- argument ‘big.mark’ is considered for additional columns
- new arguments ‘type.subgroup.fixed’, ‘type.subgroup.random’, and ‘lab.NA.weight’
- settings.meta(), gs():
- argument names can be abbreviated
- Major update of help pages of metagen() and metaprop()
Bug fixes
- metacum(), metainf():
- consider argument ‘method’ for meta-analysis objects created with metaprop() or metarate()
- forest.meta():
- argument ‘studlab’ can be used with objects created with metacum() or metainf()
- subgroup():
- return subgroup sample sizes for objects created with metagen()
Internal changes
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():
- new argument ‘stop.at.error’
- metagen():
- list element ‘data’ contains the dataset of the meta-analysis object (i.e., list element ‘data’) instead of the whole meta-analysis object
Major changes
- Information on residual heterogeneity in meta-analyses with subgroups shown in printouts and forest plots
User-visible changes
- forest.meta():
- new arguments ‘resid.hetstat’ and ‘resid.hetlab’ to control printing of information on residual heterogeneity in meta-analyses with subgroups
Bug fixes
- forest.meta():
- works in meta-analyses with subgroups if argument ‘allstudies = FALSE’
Major changes
- New argument ‘control’ in meta-analysis functions which is passed on to R function rma.uni() or rma.glmm() from R package metafor to control the iterative process to estimate the between-study variance tau^2
User-visible changes
- metabin(), metacont(), metacor(), metagen(), metainc(), metamean(), metaprop(), metarate(), update.meta():
- new argument ‘control’ (see major changes)
- forest.meta():
- new argument ‘calcwidth.subgroup’
Bug fixes
- bubble.metareg():
- ignore missing values in covariate to calculate limits on x-axis
- works if dataset used to create meta-analysis object is a tibble instead of a data frame
Internal changes
- metabind():
- argument ‘tau.common’ only considered for subgroup analyses
- hetcalc():
- argument ‘control’ passed on to R function rma.uni() from R package metafor
- metacum(), metainf(), subgroup():
- argument ‘control’ from meta-analysis objects considered
Major changes
- All p-values of Q statistics are list elements of meta-analysis objects
Bug fixes
- metareg():
- consider argument ‘intercept = FALSE’ if argument ‘formula’ has been provided
Internal changes
- New internal function replaceNULL()
Major changes
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
Bug fixes
- metamean():
- use of argument ‘byvar’ for subgroup analyses possible
- metacor(), metamean(), metaprop(), metarate():
- use as input to metabind() possible
- Internal function subgroup():
- consider argument ‘exclude’ in subgroup analyses
- Internal function bylevs():
- drop unused levels if subgroup variable is a factor variable
User-visible changes
- print.summary.meta():
- print information on Generalised Linear Mixed Model (GLMM) for metarate() objects
- print information on increments added to calculate confidence intervals for individual studies (for metarate() with GLMM)
- funnel.meta():
- new arguments ‘ref.triangle’, ‘lty.ref’, ‘lwd.ref’, ‘col.ref’, and ‘lty.ref.triangle’ to add reference value (null effect) and corresponding confidence intervals to the funnel plot
- metabin():
- new argument ‘pscale’ to change printout of risk differences
- metainc():
- new arguments ‘irscale’ and ‘irunit’ to change printout of incidence rate differences
- forest.meta(), print.meta(), print.summary.meta(), update.meta():
- consider arguments ‘pscale’, ‘irscale’, and ‘irunit’ for meta-analysis objects created with metabin() and metainc()
- print.meta():
Internal changes
- metaprop():
- for random effects model, rma.glmm() from package metafor is called internally with argument ‘method = “FE”’ if only a single study is available
- metareg():
- for generalised linear mixed models, fallback to fixed effect model if number of studies is too small for random effects meta-regression
- asin2ir():
- back transformation could result in (very small) negative zero values due to imprecisions (-1e-19); these values are set to zero now
- subgroup():
- code for metamean() added
- chkchar():
- new argument ‘nchar’ to test the length of character string(s)
- New internal function is.untransformed() to check for effect measures without (back) transformation
Major changes
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”
User-visible changes
- forest.meta(), print.meta(), print.summary.meta():
- new argument ‘big.mark’ to specify character printed as thousands separator, e.g., big.mark = “,” will result in printing of “1,000” instead of “1000”
- forest.meta():
- sensible forest plot generated if first value in argument ‘xlim’ is larger than second value, e.g. xlim = c(10, -10)
- separator between label and levels of grouping variable (argument ‘byseparator’) is considered from meta-analysis object
- for relative summary measures, e.g., odds ratio and risk ratio, labels on x-axis are not rounded to two digits (which resulted in the value 0 for a tick-mark at 0.001)
- bug fix: lines for treatment effect in fixed effect and random effects model start in center of diamond if argument ‘hetstat = FALSE’
- bug fix: argument ‘type.study’ will be sorted according to arguments ‘sortvar’
- metaprop():
- arguments ‘byvar’ and ‘tau.common’ can be used for GLMMs
- Help page with overview of R functions in R package meta updated
Internal changes
- New internal functions:
- is.log.effect() to check for treatment effects combined on log scale
- is.mean() to check whether summary measure refers to meta-analysis of single means
- Renamed internal functions:
- formatCI() instead of p.ci()
- formatN() instead of format.NA()
- formatPT() instead of format.p()
- Removed R functions:
- format.tau() as functionality is now provided by formatPT()
- C program kenscore.c as cor() from R package stats is used instead to calculate Kendall’s tau
Deprecated functions: format.NA(), format.p(), p.ci()
Check whether argument ‘sm’ is NULL in meta-analysis functions
subgroup(): extended for GLMMs
- formatPT():
- zero p-values are printed as “0” instead of “< 0.001”
- NaNs are handled like NAs
- bylabel(), catmeth(), formatPT(), formatN(), xlab():
- new argument ‘big.mark’ (see above)
User-visible changes
- forest.meta():
- new arguments ‘col.fixed’ and ‘col.random’ to change colour of fixed effect and random effects lines
Bug fixes
- bubble.metareg():
- works if covariate in metareg() is not part of dataset used to generate meta-analysis object
- forest.meta():
- lines for treatment effect in fixed effect and random effects model always start in center of diamond
- metacum(), metainf():
- argument ‘model.glmm’ considered for metabin() and metainc() objects
- print.summary.meta():
- print transformed null effect for meta-analysis of single correlations, proportions, or rates if argument ‘backtransf = FALSE’, i.e., for metacor(), metaprop(), and metarate() objects
- trimfill.meta():
- argument ‘null.effect’ is considered to calculate p-value for fixed effect and random effects model for metacor(), metaprop(), and metarate() objects
Internal changes
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():
- call metagen() internally to create meta-analysis object
- call metabias.meta(), radial.meta(), or trimfill.meta() internally to conduct analysis
Major changes
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
User-visible changes
- metabin(), metacor(), metacont(), metagen(), metainc(), metaprop(), metarate():
- new argument ‘exclude’ to exclude studies from meta-analysis
- forest.meta():
- new argument ‘spacing’ to determine line spacing
- bug fix for for meta-analysis with standardized mean difference (sm = “SMD”) and argument ‘layout = “RevMan5”’
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():
- argument ‘null.effect’ considered internally for objects generated with metacor(), metagen(), metaprop() and metarate()
Internal changes
- baujat.meta(), metabias.meta(), metacum(), metainf(), forest.meta(), funnel.meta(), metareg(), print.meta(), radial.meta(), trimfill.meta(), update.meta():
- changes to deal with excluded studies
Major changes
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
User-visible changes
- forest.meta():
- new argument ‘print.zval’ to print (default) or not print z-value for test of treatment effect
- new argument ‘print.Q.subgroup’ to print (default) or not print Chi-squared statistic for test of subgroup differences
- bug fix: print first line above second line if argument ‘xlab’ consists of two lines (bug was introduced in meta, version 4.8-0)
- labels of additional columns are printed in correct line if label consists of two lines
- new argument ‘scientific.pval’ to print p-values in scientific notation, e.g., 1.2345e-01 instead of 0.12345
- arguments ‘label.test.overall.fixed’, ‘label.test.overall.random’, ‘label.test.subgroup.fixed’, ‘label.test.subgroup.random’, ‘label.test.effect.subgroup.fixed’, ‘label.test.effect.subgroup.random’ work as expected
- new argument ‘text.subgroup.nohet’ to enable the user to change the text “not applicable” in the line with heterogeneity statistics for a subgroup with less than two studies contributing to the meta-analysis
- forest plot without any study contributing to meta-analysis can be generated without an error, e.g., meta-analysis with binary outcome, sm=“OR”, and all event numbers equal to zero
- print.meta() and print.summary.meta():
- new argument ‘scientific.pval’ to print p-values in scientific notation, e.g., “1.2345e-01” instead of “0.12345”
- new arguments ‘print.pval’ and ‘print.pval.Q’ to specify number of significant digits for p-values
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
Internal changes
User-visible changes
- metacum(), metainf():
- bug fix for meta-analysis objects without continuity correction, i.e., metacont(), metacor(), metagen() (bug was introduced in meta, version 4.8-0)
- bug fix for metarate() objects due to improper use of metaprop() internally
Major changes
- Continuity correction can be specified for each individual study in meta-analysis with proportions or incidence rates
User-visible changes
- metabin(), metainc(), metaprop(), metarate():
- argument ‘incr’ can be of same length as number of studies in meta-analysis
- metaprop():
- bug fix in studies with missing information for events or sample size and argument ‘method.ci = “CP”’
- bug fix to calculate test for an overall effect
- forest.meta():
- bug fix to print summary label (argument ‘smlab’) above forest plot if argument ‘fontsize’ is unequal to 12
- by default, label on x-axis and text on top of forest plot are printed in center of forest plot (arguments ‘xlab.pos’, ‘smlab.pos’)
- print.summary.meta():
- print number of studies for fixed effect meta-analysis using Mantel-Haenszel method if different from number of studies in random effects model (only if summary measure is “RD” or “IRD” and at least one study has zero events)
- metainc():
- bug fix to consider argument ‘incr’ for incidence rate difference
Internal changes
Major changes
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: I^2, 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 explicitely requested using argument ‘leftcols’ or ‘rightcols’)
User-visible changes
- forest.meta():
- print line with heterogeneity statistics directly below individual study results if pooled effects are not shown in forest plot (overall = FALSE)
- print right and left labels (arguments ‘label.left’, ‘label.right’) in correct line if arguments ‘overall = FALSE’ and ‘addrow = FALSE’
- bug fix: do not stop with an error if ‘comb.fixed = FALSE’, ‘comb.random = FALSE’, and ‘overall.hetstat = TRUE’
- ci(), metacor(), metagen(), metaprop(), metarate():
- new argument ‘null.effect’ to specify null hypothesis for test of an overall effect, e.g., null.effect = 0.5 in metaprop() to test whether the overall proportion is equal to 0.5
- metagen():
- Hartung-Knapp method only used for at least two studies in meta-analysis
- print.meta():
- print covariate with subgroup information for each study, if subgroup analysis is conducted (argument ‘byvar’)
- print.summary.meta():
- new arguments ‘print.I2’, ‘print.H’ and ‘print.Rb’ to specify heterogeneity measures shown in output
- new arguments ‘text.tau2’, ‘text.I2’ and ‘text.Rb’ to change text printed to identify respective heterogeneity measure
- only print information on double zero studies if argument ‘allstudies = TRUE’
- print results for (empty) subgroup in meta-analysis with two studies and one subgroup with missing treatment estimate
- settings.meta():
- new arguments ‘print.I2’, ‘print.H’, ‘print.Rb’, ‘text.tau2’, ‘text.I2’ and ‘text.Rb’ to modify printing of heterogeneity measures
Internal changes
- summary.meta():
- bug fix renaming list element ‘ircale’ renamed to ‘irscale’
- list element ‘within’ removed which has not been used since meta, version 1.1-4
Major changes
- Forest plots:
- forest plots with RevMan 5 and JAMA layout
- use of mathematical symbols for I^2, tau^2, etc.
- individual study results can be omitted from forest plot (especially useful to only print subgroup results)
- labels can be printed at top of forest plot
- 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())
User-visible changes
Internal changes
- metabin(), metainc(), metaprop(), metarate(), metareg():
- use argument ‘test’ instead of ‘knha’ and ‘tdist’ for calls of rma.uni() and rma.glmm(); change in R package metafor, version 1.9-9
- subgroup():
- new measure Rb of between-study heterogeneity implemented
- is.installed.package():
- new check of version number of R package
- use requireNamespace() instead of installed.packages()
- format.p():
- for small p-values, print “p < 0.01” or “p < 0.001” instead of “p < 0.0001” if digits.pval is 2 or 3, respectively
- new argument ‘zero’ to print “.001” instead of “0.001”, etc
- meta-internal():
- set defaults for arguments ‘smrate’ and ‘layout’
Major changes
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
User-visible changes
Internal changes
Major changes
- New features in forest plots:
- printing of columns on left side of forest plot can be omitted
- total person time can be printed
- text for fixed effect and random effects model can be omitted from calculation of width for study labels
- plot type for confidence intervals (square or diamond) can be specified for each study as well as fixed effect and random effects estimate
- printing of test for treatment effect in subgroups possible
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()
User-visible changes
- forest.meta():
- argument ‘ref’ considered for metaprop() objects
- argument ‘leftcols = FALSE’ omits printing of columns on left side of forest plot
- new argument ‘pooled.times’ to print total person time
- new argument ‘calcwidth.pooled’ to include or exclude text from pooled estimates to determine width of study labels
- new argument names (old names can still be used at the moment, however, will result in an informative warning message):
- ‘col.i’ -> ‘col.study’
- ‘col.i.inside.square’ -> ‘col.inside’
- ‘col.diamond.fixed.lines’ -> ‘col.diamond.lines.fixed’
- ‘col.diamond.random.lines’ -> ‘col.diamond.lines.random’
- new arguments:
- ‘type.study’, ‘type.fixed’, ‘type.random’ to use squares or diamonds to plot treatment effects and confidence intervals
- ‘col.inside.fixed’, ‘col.inside.random’ with information on colour to print confidence interval inside square
- ‘test.effect.subgroup’, ‘test.effect.subgroup.fixed’, ‘test.effect.subgroup.random’, ‘label.test.effect.subgroup.fixed’, ‘label.test.effect.subgroup.random’, ‘fs.test.effect.subgroup’, ‘ff.test.effect.subgroup’ to print results for test of treatment effect in subgroups
- bug fix to get correct length for reference line and lines for fixed effect and random effects estimate if argument ‘test.overall = TRUE’
- bug fix to consider arguments ‘lab.e.attach.to.col’ and ‘lab.c.attach.to.col’ for metagen() objects
- metabin(), metacont(), metacor(), metagen(), metainc(), metaprop(), forest.meta(), print.summary.meta(), summary.meta(), update.meta(), settings.meta():
- new argument ‘byseparator’
- metagen(), metaprop(), print.meta(), print.summary.meta(), summary.meta(), trimfill.meta(), trimfill.default(), update.meta():
- labbe.metabin(), labbe.default():
- transformed event probabilites can be plotted, e.g., log odds event probabilities for odds ratio as summary measure
- line for null effect added by default; see arguments ‘nulleffect’, ‘lwd.nulleffect’, ‘col.nulleffect’
- metabin(), metainc(), metaprop():
- use predict.rma() from metafor package to calculate prediction interval for GLMM method
- print note for GLMM method that continuity correction is only used to calculate individual study results
- Help pages updated:
- labbe.metabin(), labbe.default(), forest.meta(), metabin(), metacont(), metacor(), metagen(), metainc(), metaprop(), print.meta(), print.summary.meta(), summary.meta(), trimfill.meta(), trimfill.default(), update.meta()
Internal changes
User-visible changes
- metareg(), update.meta():
- bug fix for error if used with metaprop() object and argument ‘method = “GLMM”’
Major changes
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
User-visible changes
- metabin(), metainc(), metaprop():
- extension for meta-analysis based on GLMM; see argument ‘method’ and ‘model.glmm’ (not used in metaprop())
- new argument ‘…’ to provide additional arguments to rma.glmm()
- some arguments can be used for other meta-analysis methods than inverse variance method: ‘method.tau’, ‘hakn’, ‘tau.common’, ‘TE.tau, ’tau.preset’
- metabin():
- do not print warning that inverse variance instead of Mantel-Haenszel method is used for analysis of a single study
- print warning if continuity correction (arguments ‘incr’, ‘allincr’, ‘addincr’, ‘allstudies’) is used with arcsine difference, Peto method, or GLMM
- check whether R package BiasedUrn is installed for conditional hypergeometric-normal GLMM (method = “GLMM”, model.glmm = “CM.EL”)
- forest.meta():
- extension to plot meta-analysis based on GLMM
- argument ‘labels’ can be used instead of argument ‘label’ to change labels on x-axis
- funnel.meta():
- print default labels on y-axis with capital first letter
- metareg() and update.meta():
- extension for meta-analysis based on GLMM
- print.meta():
- new arguments to control printing: ‘digits.se’, ‘digits.zval’, ‘digits.Q’, ‘digits.tau2’, ‘digits.H’, ‘digits.I2’, ‘digits.prop’, ‘digits.weight’
- argument ‘…’ passed on to internal call of print.summary.meta()
- print.summary.meta():
- new arguments to control printing: ‘digits.zval’, ‘digits.Q’, ‘digits.tau2’, ‘digits.H’, ‘digits.I2’
- print “–” for missing z-value instead of “NA”
- only print confidence interval for H and I2 if lower and upper limits are not NA
- print Wald-type and Likelihood-Ratio heterogeneity test for GLMMs
- settings.meta():
- new arguments: ‘model.glmm’, ‘digits’, ‘digits.se’, ‘digits.zval’, ‘digits.Q’, ‘digits.tau2’, ‘digits.H’, ‘digits.I2’, ‘digits.prop’, ‘digits.weight’, ‘digits.pval’, ‘digits.pval.Q’
- check whether R package metafor is installed for specific values of argument ‘method.tau’
- check whether R packages required for GLMMs are available (if method = “GLMM”): metafor, lme4, numDeriv
- Help pages updated: metabin(), metainc(), metaprop(), metareg(), forest(), print.meta(), print.summary.meta(), settings.meta(), update.meta()
Internal changes
New function format.NA() to print other text than “NA” for missing values
- metagen():
- only call paulemandel() if heterogeneity statistic Q is larger equal than number of studies minus 1 (otherwise between-study heterogeneity tau2 is set equal to 0)
- metabin(), metainc(), metaprop(), summary.meta():
- new list elements ‘model.glmm’, ‘.glmm.fixed’, ‘.glmm.random’, ‘version.metafor’
- metabin(), summary.meta():
- new list element ‘doublezeros’ for odds ratio or risk ratio as summary measure
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():
- more sensible warning if maximum number of iterations is reached
- maximum number of iterations increased from 25 to 100
- format.p():
- catmeth():
- print information for GLMMs
- print information whether studies with double zeros are included in meta-analysis
- is.installed.package():
- new arguments for more flexible error and warning messages: ‘func’, ‘argument’, ‘value’, ‘chksettings’
- metacont():
- bug fix to calculate correct treatment estimates for individual studies for Glass’s delta
- metaprop():
- print correct error message if number of events is larger than number of observations
- forest.meta():
- new arguments ‘digits.se’, ‘digits.tau2’, ‘digits.pval’, ‘digits.pval.Q’, ‘digits.Q’, ‘digits.I2’ to control printing of standard errors, p-values, tau2 and heterogeneity statistics
- new arguments ‘test.overall’ and ‘test.subgroup’ controlling whether information on test for overall effect and heterogeneity should be printed
- Internal function paulemandel():
- bug fix to give studies with missing treatment effect and standard error zero weight in random effects meta-analysis
- do not stop estimation algorithm if estimated tau2 is negative
- settings.meta():
- bug fix for error if used with an unassigned argument
- format.p(), format.tau():
- new argument ‘digits’ to round p-values and tau2 values
- chkchar(), chkclass(), chklength(), chklevel(), chklogical(), chkmiss(), chknull(), chknumeric(), setchar():
- new argument ‘name’ to change name of checked argument in printout
- Help page of forest.meta() updated
- metabin(), metainc(), and metaprop():
- allow missing values in numbers of events or patients (corresponding studies get zero weight in meta-analysis)
- forest.meta():
- print information on test for overall effect (arguments ‘test.overall.fixed’ and ‘test.overall.random’)
- print information on test for subgroup differences in meta-analysis with subgroups (arguments ‘test.subgroup.fixed’ and ‘test.subgroup.random’)
- new argument ‘layout’ to change layout of forest plot
- argument ‘lab.NA’ considered for all columns in forest plot, e.g., numbers of events and patients for metabin()
- new argument ‘lab.NA.effect’ to label NAs in individual treatment estimates and confidence intervals
- bug fix for error if random effects estimate is missing
- metareg():
- additional arguments implemented (‘hakn’, ‘level.comb’, ‘intercept’)
- argument ‘…’ is no longer ignored but passed on to rma.uni(), e.g., to control the iterative estimation process
- bug fix to conduct fixed effect meta-regression (argument ‘method.tau = “FE”’)
- metabin():
- use inverse variance instead of Mantel-Haenszel method if only a single study has a non-missing treatment estimate or standard error
- settings.meta():
- code added for new arguments in forest.meta() to print information on tests
- Help pages of metareg() and forest.meta() and link to RevMan webpage updated
- metabin():
- bug fix for error in printing of results for Mantel-Haenszel or Peto method if any study has zero events in both groups
- metabin():
- bug fix for error if Peto method is used
- argument ‘sm = “ASD”’ for arcsine difference instead of ‘sm = “AS”’ (abbreviations ‘sm = “AS”’ and ‘sm = “A”’ can still be used)
- metabin(), metacont(), metacor(), metagen(), metainc(), and metaprop():
- weights ‘w.random.w’ are calculated from random effects meta-analysis ignoring subgroup membership; internal function subgroup() changed accordingly
- argument ‘tau.common = TRUE’ if argument ‘tau.preset’ is not NULL in subgroup analyses
- forest.meta():
- bug fix for meta-analyses with subgroups if additional columns were provided in argument ‘leftcols’ or ‘rightcols’
Major revision
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.
Details
- forest.meta(), funnel.default(), funnel.meta(), metabin(), metacor, metacr(), metagen(), metainc(), metaprop(), print.meta(), print.summary.meta, summary.meta(), trimfill.default(), trimfill.meta():
- new argument ‘backtransf’ indicating whether effect measures should be back transformed
- print.meta(), print.summary.meta():
- argument ‘logscale’ replaced by ‘backtransf’
- print.summary.meta(), forest.meta():
- print prediction interval for Freeman-Tukey double arcsine transformation (sm = “PFT”)
- forest.meta():
- consider prediction interval to calculate limits on x-axis if argument ‘prediction = TRUE’
- bubble.metareg():
- new argument ‘regline’ indicating whether regression line should be added to plot
- settings.meta():
- new argument ‘print’ to print listing of all settings as function call without arguments does not print settings any longer
- list with previous settings can be provided as sole input
- New functions:
- backtransf() to control back transformation of effect measures
- is.relative.effect() to check for relative effect measures
- File DESCRIPTION:
- R package grid defined as Imports instead of Depends
- Help pages updated to reflect changes in version 3.8-0
- forest.meta():
- bug fix to correctly sort lower and upper confidence interval limits if argument ‘sortvar’ is used (bug was introduced in meta, version 3.7-0)
- argument ‘sortvar’ works without reference to meta-analysis object, e.g., command forest(meta1, sortvar = TE) can be used instead of forest(meta1, sortvar = m1$TE)
- Help page of forest.meta():
- examples using argument ‘sortvar’ added
- metaprop():
- new argument ‘method.ci’ to implement various methods to calculate confidence intervals for individual studies (default: Clopper-Pearson method which is also called ‘exact’ binomial method)
- list elements ‘zval.fixed’, ‘pval.fixed’, ‘zval.random’ and ‘pval.random’ set to NA
- New internal functions:
- ciWilsonScore() used in metaprop()
- ciAgrestiCoull() used in metaprop()
- ciSimpleAsymptotic() used in metaprop()
- estimate.missing() used in trimfill.meta() and trimfill.default()
- metacont():
- new argument ‘pooledvar’ to conduct meta-analysis of mean differences based on pooled variance for individual studies
- update.meta():
- function can be used to upgrade R objects created with older versions of meta, i.e. all versions between 0.5 and 3.6-0
- extended to objects of the following classes:
- trimfill()
- metacum()
- metainf()
- new arguments:
- ‘method.ci’ for metaprop() objects
- ‘pooledvar’ for metacont() objects
- ‘left’, ‘ma.fixed’, ‘type’ and ‘n.iter.max’ for trimfill() objects
- new list element ‘call.object’ with call used to generate meta-analysis object
- as.data.frame.meta(), baujat.meta(), forest.meta(), funnel.meta(), labbe.metabin(), metacum(), metainf(), print.meta(), summary.meta, trimfill.meta():
- call update.meta() to update meta-analysis objects created with meta, version < 3.7
- metabin(), metacont(), metacor(), metagen(), metainc(), metaprop(), trimfill.default(), trimfill.meta():
- new list elements ‘lower’, ‘upper’, ‘zval’ and ‘pval’ with confidence limits, z- and p-values for individual studies
- print.meta(), print.summary.meta():
- print information on method used for confidence intervals of individual studies
- metacum(), metainf():
- add code for metainc() objects
- new list element ‘call’ with function call
- consider argument ‘pooledvar’ for metacont() objects
- metabin(), metacont(), metacor(), metagen(), metainc(), metaprop():
- study labels will only be converted to characters for factor variables
- Help pages
- updated to reflect changes in version 3.7-0
- argument ‘tau.preset’ correctly described as the square-root of the between-study variance
- metabin():
- inverse variance method used instead of Mantel-Haenszel method if argument ‘tau.common = TRUE’
- metareg():
- tilde sign not necessary in argument ‘formula’ to make this function more user friendly
- forest.meta():
- print common tau2 for subgroups if argument ‘tau.common = TRUE’ in meta-analysis object
- metagen():
- arguments ‘n.e’ and ‘n.c’ can be part of the dataset provided in argument ‘data’
- DerSimonian-Laird method used instead of Paule-Mandel method if argument ‘tau.common = TRUE’
- metacor(), metainc(), and metaprop():
- store value of arguments ‘title’, ‘complab’, and ‘outclab’ in meta-analysis object
- Some help pages (slightly) updated
- forest.meta():
- bug fix to show correct confidence limits for individual studies if argument ‘level’ is not equal to the default 0.95. (bug was introduced in meta, version 3.0-0)
- forest.meta():
- bug fix for error in meta-analyses with subgroups using any but metaprop() (bug was introduced in meta, version 3.1-1)
- forest.meta():
- bug fix to show random effects estimate in metaprop() objects with subgroups using argument ‘sm = “PFT”’
Major revision
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().
Details
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():
- code cleaning for new R function update.meta()
- metabin(), metacont(), metagen(), metaprop(), metacor(), summary.meta():
- new list components:
- ‘data’ with original data used in function call
- ‘subset’ with information on subset used in meta-analysis
- metareg():
- argument ‘data’ renamed to ‘x’
- first two arguments interchanged (which is now in line with other R functions from R package meta)
- information on grouping variable (list element ‘byvar’) is utilised if argument ‘formula’ is missing
- any column from original dataset (list element ‘data’) can be used in meta-regression
- trimfill.meta():
- new defaults for arguments ‘comb.fixed’ and ‘comb.random’ (by default only random effects estimate calculated)
- arguments ‘sm’ and ‘studlab’ removed
- new list elements (depending on class of meta-analysis object used in function call):
- ‘event.e’, ‘event.c’, ‘event’ with number of events
- ‘n.e’, ‘n.c’, ‘n’ with number of observations
- ‘mean.e’, ‘mean.c’, ‘sd.e’, ‘sd.c’ with means and standard deviations
- ‘cor’ with correlation
- ‘class.x’ with class of meta-analysis object used in function call
- trimfill.default():
- only calculate random effects estimate by default
- metacr():
- new list elements ‘event.e’, ‘n.e’, ‘event.c’ and ‘n.c’ for Peto O-E method
- metaprop():
- new list element ‘incr.event’
- forest.meta():
- bug fix for error if (i) the effect measure is equal to RR, OR, or HR and (ii) argument ‘label’ is not a logical value
- print.summary.meta():
- print “0” instead of “< 0.0001” if between-study heterogeneity is zero
New function format.tau() to print “0” instead of “< 0.0001” if tau2 is zero
- p.ci():
- new arguments ‘bracket.left’, ‘separator’ and ‘bracket.right’ for more flexible confidence interval layouts
Several help pages updated
- forest.meta():
- new argument ‘just.studlab’ to change justification of study labels
- print.meta():
- print correct information on method to calculate approximate confidence interval for metaprop() with a single study
- trimfill.meta():
- new list elements ‘title’, ‘complab’, ‘outclab’, ‘label.e’, ‘label.c’, ‘label.left’ and ‘label.right’
- metacr():
- new arguments ‘prediction’ and ‘level.predict’ for prediction interval for a new study
- new argument ‘tau.common’ for common tau2 across subgroups
- new arguments ‘level’ and ‘level.comb’ for confidence interval of single studies or meta-analysis
- trimfill.meta(), trimfill.default():
- new arguments ‘prediction’ and ‘level.predict’
- forest.meta():
- heterogeneity statistics are only shown if results for fixed effect or random effects model are plotted
- metagen(), metabin(), metacont(), metaprop(), metacor():
- list elements ‘comb.fixed’, ‘comb.random’, and ‘prediction’ are set to FALSE for a single study
- print.meta(), print.summary.meta():
- new argument ‘logscale’ to print results for summary measures “RR”, “OR”, “HR”, or “PLN” on logarithmic scale
- Several help pages updated
- metaprop():
- bug fix for error in forest.meta() (bug was introduced in meta, version 2.4-0)
- new list elements ‘incr’, ‘allincr’ and ‘addincr’ added (bug was introduced in meta, version 1.5-0)
- print.meta():
- new arguments ‘prediction’ and ‘level.predict’ to print prediction interval for a new study
- forest.meta(), print.summary.meta():
- only print warnings in internal call of asin2p() if result for fixed effect, random effects model or prediction interval are printed
- asin2p():
- new argument ‘warn’ to only print warnings for meta-analysis results
- Example to generate forest plot added to help pages of metabin(), metacont(), metacor(), metacr(), metagen(), metaprop()
- metagen(), metabin(), metacont(), metaprop(), metacor():
- new arguments ‘prediction’ and ‘level.predict’ (prediction interval for a new study)
- new argument ‘tau.common’ (common tau2 across subgroups)
- help pages updated accordingly
- metaprop():
- new default summary measure (sm = “PLOGIT”)
- deprecated argument ‘freeman.tukey’ removed
- summary.meta():
- new arguments ‘prediction’ and ‘level.predict’
- list element ‘tau.common’ from meta-analysis object considered
- correct values for list elements ‘incr’, ‘allincr’, and ‘addincr’ used in calculations for metaprop() objects
- forest.meta():
- new arguments for prediction interval: ‘prediction’, ‘level.predict’, ‘text.predict’, ‘col.predict’, ‘col.predict.lines’, ‘fs.predict’, ‘fs.predict.labels’, ‘ff.predict’, ’ff.predict.labels"
- correct values for list elements ‘incr’, ‘allincr’, and ‘addincr’ used in calculations for metaprop() objects
- information on confidence limit printed for pooled estimates if CI level is different from CI level for individual studies
- print.summary.meta():
- new argument ‘prediction’
- new list element ‘tau.common’
- catmeth():
- print information on use of common tau2 across subgroups
- forest.meta():
- results for fixed effect and random effects models only (re)calculated for meta-analysis objects created with meta, version < 2
- metabin():
- bug fix for error if argument ‘sm = “RR”’ and ‘allstudies = TRUE’ in meta-analysis with zero events in both groups
- forest.meta():
- new argument ‘lab.NA’ to label missing values (in older version of R package meta the fixed label ‘NA’ was used)
- arguments ‘colgap.forest.left’ and ‘colgap.forest.right’ considered instead of only ‘colgap.forest’
- labbe.metabin(), labbe.default():
- bug fix for error if any event probability is equal to NA
- format.p():
- bug fix for error if first argument contains any NAs
- metabin():
- studies with all events in both groups will be included in meta-analysis by default (in older meta versions these studies were only included if argument ‘allstudies = TRUE’)
- standard error is positive for studies with all events in both groups (see Hartung & Knapp (2001), Stat Med, equation (18))
- forest.meta():
- values provided by argument ‘xlim’ will be used as x-axis label for relative effect measures like risk ratio or odds ratio
- default values for arguments ‘smlab.pos’ and ‘xlab.pos’ changed to always fall within plotting range
- forest.meta(), metacum(), metainf(), print.meta():
- correct back transformation of Freeman-Tukey Double arcsine transformation for metacum() and metainf() objects
- asin2p():
- values outside the admissible range are set to the boundary values [0, 1]; a warning is printed in this casea
- Help pages:
- new argument ‘n.harmonic.mean’ documented for metacum() and metainf()
- forest.meta():
- bug fix for metacum() or metainf() object with Freeman-Tukey double arcsine transformation (error message: ‘Error in if (col\(range[1] <= TE.fixed & TE.fixed <= col\)range[2]) …’)
- forest.meta(), metacum(), metainf(), summary.meta():
- bug fix for error if argument ‘method.tau’ is different from the default (error message: ’Error in sqrt(W) %*% X : non-conformable arguments’)
- forest.meta():
- argument ‘byvar’ uses corresponding list element from meta-analysis object as default
- summary.meta():
- list element ‘k0’ added to trim-and-fill object
- print.summary.meta():
- print number of added studies for trim-and-fill method
- trimfill.meta(), trimfill.default():
- new arguments ‘hakn’ and ‘method.tau’
- metacum(), metainf():
- add class “trimfill” for trim-and-fill objects
- catmeth(), print.meta(), print.summary.meta():
- print information on trim-and-fill method
- metabias.meta(), funnel.meta():
- print error message if used with metacum() or metainf() object
- funnel.meta():
- use different plot symbols (argument ‘pch’) for trimfill() object
- .onLoad():
- version nummer of meta is printed when library is loaded
- Help pages:
- arguments ‘hakn’ and ‘method.tau’ documented in trimfill.meta() and trimfill.default()
- changed default for argument ‘pch’ in funnel.meta() documented
- metaprop():
- variance estimate for log- and logit-transformation is based on Pettigrew et al. (1986)
- Reference Pettigrew et al. (1986) added to help pages for metabin() and metaprop()
- metaprop():
- warning is printed if any sample size is smaller than 10 for Freeman-Tukey double arcsine transformation
- metabin(), metacont(), metacor(), metagen(), metaprop():
- arguments ‘subset’ and ‘byvar’ can be of different length
Major revision
R package meta linked to R package metafor to provide additional statistical methods, e.g. meta-regression and other estimates for tau2 (REML, …)
Details
- New functions:
- metareg() meta-regression
- metabias() generic method for metabias()
- metabias.default() generic method for metabias()
- metabias.meta() generic method for metabias()
- metabias.rm5() generic method for metabias()
- print.rm5() generic method for rm5-object
- print.summary.rm5() generic method for rm5-object
- summary.rm5() generic method for rm5-object
- catmeth() internal function
- crtitle() internal function
- hypergeometric() internal function
- is.installed.metafor() internal function
- kentau() internal function
- linregcore() internal function
- p2logit() internal function
- metabin(), metacont(), metagen():
- new arguments ‘label.left’ and ‘label.right’ to add label on left or right side of forest plot
- metabin(), metacont(), metacor(), metagen(), metaprop():
- new arguments:
- ‘hakn’ (Hartung-Knapp method)
- ‘method.tau’ (estimation method for tau2)
- ‘tau.preset’ (fixed value for tau)
- ‘TE.tau’ (pre-specified treatment effect to estimate tau)
- ‘method.bias’ (test for funnel plot asymmetry used in metabias)
- ‘warn’ (print warning messages)
- new list elements in meta-analysis object:
- ‘se.tau2’ with standard error of tau2
- ‘hakn’ for Hartung-Knapp method
- ‘method.tau’ with information on estimation method for tau2
- ‘tau.preset’ for fixed tau value
- ‘TE.tau’ for pre-specified treatment effect to estimate tau
- ‘method.bias’ for test of funnel plot asymmetry used in metabias()
- argument ‘warn = FALSE’ suppresses additional warning messages
- metabin():
- studies are excluded from meta-analysis if (event.e > n.e | event.c > n.c) or (n.e <= 0 | n.c <= 0) or (event.e < 0 | event.c < 0)
- metacum(), metainf():
- return NULL if function is used with a single study
- arguments ‘hakn’, ‘method.tau’, ‘tau.preset’, ‘method.bias’, ‘label.left’, ‘label.right’ are considered from meta-analysis object
- argument ‘level’ removed
- metaprop():
- correct variance 1 / (n + 0.5) instead of 1 / (n + 1) is used for the Freeman-Tukey double arcsine transformation (argument ‘sm = “PFT”’)
- asin2p():
- completely rewritten as back transformation of Freeman-Tukey transformed proportions was inaccurate
- back transformation of Freeman-Tukey proportions according to Miller (1978) - see help page of metaprop()
- print.metabias():
- print a warning if number of studies is too small to conduct a test for funnel plot asymmetry
- print.summary.meta():
- new argument ‘bylab.nchar’
- print test for subgroup differences for both fixed effect and random effects model
- invisible(NULL) returned for metacum() and metainf() objects
- metacr():
- new arguments:
- ‘sm’ (summary measure)
- ‘method’ (pooling method)
- ‘comb.fixed’ (fixed effect model)
- ‘comb.random’ (random effects model)
- ‘swap.events’ (only for binary data)
- ‘method.tau’ (estimation method for between-study variance)
- ‘hakn’ (Hartung-Knapp adjustment)
- ‘title’ (Title of Cochrane review)
- ‘complab’ (Comparison label)
- ‘outclab’ (Outcome label)
- ‘warn’ (print warning messages)
- removed argument:
- ‘smother’ (summary measure)
- return NULL if no data is available for selection of arguments ‘comp.no’ and ‘outcome.no’
- read.rm5():
- changed substantially for reading of RevMan 5.1 files
- summary.meta():
- arguments ‘hakn’, ‘method.tau’, ‘tau.preset’, ‘method.bias’ are considered from meta-analysis object
- argument ‘warn = FALSE’ suppresses additional warning messages
- forest.meta():
- treatment effect and 95% confidence interval is printed in the correct order for objects of class “metaprop” if argument ‘sort’ or ‘order’ is used
- symmetric forest plot by default (argument xlim = “s”)
- new arguments:
- ‘smlab’, ‘smlab.pos’, ‘fs.smlab’, ‘fflab’ for label of summary measure at top of figure
- ‘label.right’, ‘label.left’, ‘fs.lr’, ‘ff.lr’ for label on right and left side below the x-axis
- ‘overall.hetstat’ to show heterogeneity information for overall effect
- funnel.default(), funnel.meta():
- arguments ‘col.fixed’ and ‘col.random’ are recognised
- metabias.default(), metabias.meta():
- new argument ‘k.min’ to only conduct test for funnel plot asymmetry if number of studies in meta-analysis is larger or equal to ‘k.min’
- new argument ‘…’ (ignored at the moment)
- trimfill.default(), trimfill.meta():
- return ‘invisible(NULL)’ if number of studies is smaller than 3
New datasets: amlodipine, cisapride
File FLEISS93.MTV moved from directory data to directory extdata
Several help pages updated
Some new help pages added
- forest.meta():
- number of events is printed in the correct order for objects of class “metaprop” if argument ‘sort’ or ‘order’ is used
- transformed proportions are printed for individual studies in column ‘TE’ if metagen() is used with argument ‘sm’ equal to either “PLN”, “PLOGIT”, “PAS”, or “PFT”
- as.data.frame.meta():
- function works for meta-analyses with six studies which previously resulted in an error message ‘Error: evaluation nested too deeply: infinite recursion …’
- new argument ‘…’
- addvar():
- option stringsAsFactors = FALSE added to internal call of as.data.frame.meta()
- additional checks for existence of columns ‘by.x’ and ‘by.y’
- additional checks for situations with duplicate entries for columns ‘by.x’ and ‘by.y’ added
- print.meta():
- back transformed proportions are printed for individual studies if metagen() is used with argument ‘sm’ equal to either “PLN”, “PLOGIT”, “PAS”, or “PFT”
- Examples in help pages (slightly) updated:
- read.mtv(), read.rm5(), metacr()
- forest.meta():
- for subgroup analyses (i.e. groups defined by argument ‘byvar’), result for both fixed effect and random effects model are printed (in older versions of the meta package only results for either fixed effect or random effects model could be printed)
- new arguments ‘text.fixed.w’ and ‘text.random.w’ to specify label for estimates within subgroups
- new arguments to change colour of several parts of the plot: ‘col.i.inside.square’, ‘col.square’, ‘col.square.lines’, ‘col.diamond’, ‘col.diamond.fixed’, ‘col.diamond.random’, ‘col.diamond.lines’, ‘col.diamond.fixed.lines’, ‘col.diamond.random.lines’
- new arguments to print information on heterogeneity measures: ‘print.I2’, ‘print.tau2’, ‘print.Q’, ‘print.pval.Q’, ‘hetstat’, ‘hetlab’
- new arguments to change fontsize and fontface of several parts of the plot: ‘fs.heading’, ‘fs.fixed’, ‘fs.random’, ‘fs.study’, ‘fs.fixed.labels’, ‘fs.random.labels’, ‘fs.study.labels’, ‘fs.hetstat’, ‘fs.axis’, ‘fs.xlab’, ‘ff.heading’, ‘ff.fixed’, ‘ff.random’, ‘ff.study’, ‘ff.fixed.labels’, ‘ff.random.labels’, ‘ff.study.labels’, ‘ff.hetstat’, ‘ff.axis’, ‘ff.xlab’
- new arguments to change gap between columns: ‘colgap.left’, ‘colgap.right=colgap’, ‘colgap.forest’, ‘colgap.forest.left’, ‘colgap.forest.right’
- new argument ‘just’ to change justification of text for additional columns
- new argument ‘addspace’ to print a blank line at top and bottom of study results
- argument ‘squaresize’ supersedes argument ‘boxsize’
- new argument ‘new’ indicating whether a new figure should be printed in an existing graphics window (internally, grid.newpage() is used if argument ‘new = TRUE’)
- no line is printed for the fixed effect or random effects model if argument ‘lty.fixed = NULL’ or ‘lty.random = NULL’
- symmetric forest plots can be produced by setting argument ‘xlim = “s”’
- print.summary.meta():
- for subgroup analyses (i.e. groups defined by argument ‘byvar’), result for test of heterogeneity printed separately for fixed effect and random effects model
- metabin(), summary.meta(), print.summary.meta():
- new argument ‘print.CMH’ indicating whether Cochran-Mantel-Haenszel test for overall effect should be printed (default ‘print.CMH = FALSE’)
- Help pages updated:
- forest.meta(), metabin(), print.summary.meta(), summary.meta()
Version jump to 1.5-0 as several changes have been implemented
- New functions:
- metacor() meta-analysis of correlations
- forest() generic method for forest plots
- forest.meta() generic method for forest plots
- radial() generic method for radial plots
- radial.default() generic method for radial plots
- radial.meta() generic method for radial plots
- asin2p() internal function
- logit2p() internal function
- xlab() internal function
- z2cor() internal function
- forest.meta():
- new arguments ‘pooled.totals’ and ‘pooled.events’ to specify whether total number of observations and events should be displayed in the plot
- new argument ‘pscale’ to rescale proportions for objects of class “metaprop”
- arguments ‘label’ and ‘xlim’ are recognised for other effect measures than RR, OR, and HR
- arguments ‘rightlabs’ and ‘leftlabs’ accept NAs for columns using default labels
- significant digits are printed uniformly
- correct sum of percentage weight is printed for random effects model in forest plots with subgroups
- x limits (min,max) of the plot are defined by the width of confidence intervals instead of (0,1) for objects of class “metaprop”
- metaprop():
- implementation of additional transformations: log transformation, logit transformation, raw, i.e. untransformed, proportions
- new argument ‘sm’ to choose summary measure (i.e. transformation)
- use of argument ‘freeman.tukey’ is deprecated (replaced by argument ‘sm’)
- funnel(), funnel.meta(), labbe(), labbe.meta():
- trimfill(), trimfill.meta():
- summary.meta():
- new list elements ‘H.w’, ‘I2.w’, ‘Q.b.fixed’ and ‘Q.b.random’ for heterogeneity statistics within subgroups
- forest.meta(), metacum(), metainf(), print.meta(), print.summary.meta(), summary.meta():
- extension for meta-analysis of correlations
- plot.meta():
- print warning that function was replaced by forest.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
- summary.meta(), print.summary.meta():
- test for subgroup differences is not calculated and printed for meta-analyses using the Mantel-Haenszel method for binary data
- metabin(), metacont(), metagen(), metaprop():
- sensible default value is used for argument ‘bylab’ if argument ‘byvar’ is not missing
- forest():
- additional columns are printed in the correct order if argument ‘sort’ or ‘order’ is used
- forest():
- new argument ‘digits’ specifying minimal number of significant digits for treatment estimate and its confidence interval
- summary.meta():
- results for subgroups (if byvar != NULL) are calculated for both fixed effect and random effects model:
- list ‘within’ no longer returned by summary.meta()
- lists ‘within.fixed’ and ‘within.random’ returned by summary.meta()
- variable name of subgroups is printed correctly
- check whether input is an object of class “summary.meta”
- print.summary.meta():
- a warning is printed if both ‘comb.fixed’ and ‘comb.random’ are TRUE and results for subgroups are supposed to be printed
- Help pages of print.summary.meta() and forest() updated:
- detailed information on printing and plotting of subgroup results if both comb.fixed and comb.random are TRUE
- Help page of metagen() updated:
- new example with meta-analysis of survival data
- Generic method for trim-and-fill method: trimfill(), trimfill.default(), trimfill.meta()
L’Abbe plot implemented: labbe(), labbe.default(), labbe.metabin()
Generic method for funnel plots: funnel(), funnel.default(), funnel.meta()
- funnel.meta(), funnel.default():
- contour-enhanced funnel plots can be produced (new arguments ‘contour.levels’, ‘col.contour’, ‘ref’)
- study labels can be printed on funnel plot (new arguments ‘studlab’, ‘cex.studlab’)
- line type, width and colour can be changed for fixed effect treatment effect (new arguments ‘lty.fixed’, ‘lwd.fixed’, ‘col.fixed’)
- random effects treatment effect can be plotted (new arguments ‘comb.random’, ‘lty.random’, ‘lwd.random’, ‘col.random’)
- new default values for some arguments:
- ‘pch = 21’ (previously: ‘pch = 1’)
- ‘comb.fixed = x$comb.fixed’
- background colour of points in funnel plot can be changed (new argument ‘bg’)
- forest():
- new default values for arguments ‘lab.e’ and ‘lab.c’:
- x\(label.e and x\)label.c (if these values are NULL the old default values “Experimental” and “Control” are used)
- metabin(), metacont(), metagen():
- arguments ‘label.e’ and ‘label.c’ added
- metacr():
- use arguments ‘label.e’ and ‘label.c’ in calls to metabin(), metacont(), metagen()