updates
Table of Contents
Package Updates
On this page, you can find a description of the (recent) updates to the metafor package. Older updates are archived here.
Version 4.8-0 (2025-01-28)
- some general changes to the various
forest()functions: argumentheaderis nowTRUEby default, the y-axis is now created withyaxs="i", and the y-axis limits have been tweaked slightly in accordance forest.rma()and the variousaddpoly()functions now provides multiple styles for drawing the prediction interval via thepredstyleargumentforest.rma()andaddpoly.rma()now write out the default label (instead of an abbreviation) for the model results; as before, the label can be changed via themlabargument- added an
ilab.labargument to the variousforest()functions for adding header labels to the plot for the additional study information columns - all plot functions that create multi-panel plots now behave in a consistent manner, setting
par(mfrow)automatically when no plotting device is open or when the number of panels in an open plotting device is too small for the number of panels to be plotted; all multi-panel plots also setpar(mfrow)=c(1L,1L)upon exit; argumentlayouthas been deprecated fromplot.permutest.rma.uni(),plot.vif.rma(), andplot.infl.rma.uni() - the
predict.rma()andpredict.rma.ls()functions now also accept a matrix as input that includes a column for the intercept term (in which case theinterceptargument is ignored and the first column of the matrix controls whether the intercept term is included in calculating the predicted value(s)) - added extractor function
se()for extracting standard errors from model objects - added function
pairmat()to construct a matrix of pairwise contrasts - added function
deltamethod()to apply the (multivariate) delta method to a set of estimates anova()andpredict()gain anadjustargument for adjusting p-values / interval bounds for multiple testing- fixed
predict()ignoring thelevelargument forrobust.rmaobjects obtained withclubSandwich=TRUE print.anova.rma()andprint.list.anova.rma()now also print significance stars for some tests (unlessgetOption("show.signif.stars")isFALSE)- added a
collapseargument to the variouscumul()functions (to specify whether studies with the same value of theordervariable should be added simultaneously) - the various
leave1out()functions gain aclusterargument rma.mv()now counts the number of levels of a random effect more appropriately; this may trigger more often the check that the number of levels is equal to 1, in which case the corresponding variance component is automatically fixed to 0; this check can be omitted withcontrol=list(check.k.gtr.1=FALSE)- made optimizers
RcgminandRvmminavailable again via theoptimxpackage - when unspecified, argument
shadeinfunnel()now automatically uses a color gradient for the regions when multiplelevelvalues are specified - added
lim,ci,pi,legend, andfliparguments tolabbe() fsn(..., type="General")now computes the final estimates after rounding the fail-safe N value (not before)permutest.rma.uni()gains abttargument andpermutest.rma.ls()gainsbttandattargumentsselmodel()gains asubsetargument (to specify a subset of studies to which the selection function should apply); for the beta selection model, one can now also specify twostepsvalues to fit a truncated beta selection modelnobs()now just returns the number of estimates, not the effective number of observations- some tweaks were made to
vcalc()to speed up the calculations (by James Pustejovsky) - added measures
"PRZ","CLES","AUC","CLESN","AUCN","CLESCN","AUCCN","R2F", and"ZR2F"toescalc() escalc()gains aflipargumentescalc()gains acorrectargument (to specify whether a bias correction should be applied)- added transformation function
transf.dtoovl()(for transforming standardized mean differences to overlapping coefficient values) andtransf.dtocliffd()(for transforming standardized mean differences to Cliff's delta values) qqnorm.rma.uni()now shades the pseudo confidence region; allqqnorm()functions gain agridargument- better handling of
outlist="minimal" - added more tests
Version 4.6-0 (2024-03-28)
- the
stepsargument in the variousprofile()functions can now also be a numeric vector to specify for which parameter values the likelihood should be evaluated - a few minor fixes to the dynamic theming of plots based on the foreground and background colors of the plotting device
- slightly improved flexibility for setting package options
- new measures added to
escalc():"SMN"for the single-group standardized mean / single-group standardized mean difference,"SMCRP"for the standardized mean change using raw score standardization with pooled standard deviations, and"SMCRPH"for the standardized mean change using raw score standardization with pooled standard deviations and heteroscedastic population variances at the two measurement occasions - calculation of the sampling variances for measures
"SMDH","SMD1H", and"SMCRH"was slightly adjusted for consistency - in
plot.gosh.rma(), can also sethet="tau"(to plot the square root of tau^2 as the measure of heterogeneity) - in the various
forest()functions, argumentylimcan now only be a single value to specify the lower bound (while the upper bound is still set automatically) - in
forest()andregplot(), observation limits set viaolimare now properly applied to all elements - various internal improvements to
selmodel() selmodel()no longer stops with an error when one or more intervals defined by thestepsargument do not contain any observed p-values (instead a warning is issued and model fitting proceeds, but may fail)- added
decreasingargument toselmodel()for enforcing that the delta estimates must be a monotonically decreasing function of the p-values in the step function model - added the undocumented argument
pvaltoselmodel()for passing p-values directly to the function (doing this is highly experimental) - some internal refactoring of the code
- improved the documentation a bit
Version 4.4-0 (2023-09-27)
- added
getmfopt()andsetmfopt()functions for getting and setting package options and made some of the options more flexible - removed argument
weightedfromfsn()(whether weighted or unweighted averages are used in Orwin's method is now simply determined by whether sampling variances are specified or not); addedtype="General"tofsn()as a generalization of the Orwin and Rosenberg methods (that allows for a fail-safe N calculation based on a random-effects model); can now pass anrmaobject to thefsn()function - further improved the theming of all plots based on the foreground and background colors; within RStudio, plot colors can also be automatically chosen based on the theme (with
setmfopt(theme="auto")) - added additional/optional argument
tabfigto the variousforest()functions, for easily setting theannosymargument to an appropriate vector for exactly aligning numbers (when using a matching font) - added (for now undocumented)
vcconargument torma.mv()for setting equality constraints on variance/correlation components replaceargument inconv.2x2(),conv.delta(),conv.fivenum(), andconv.wald()can now also be a logical- added
summary.matreg()andprint.summary.matreg()methods for including additional statistics in the output ($R^2$ and the omnibus test) and addedcoef.matreg()andvcov.matreg()extractor functions - formatting functions
fmtp(),fmtx(), andfmtt()gain aquoteargument, which is set toFALSEby default - for measures
"PCOR","ZPCOR","SPCOR", and"ZSPCOR", argumentmiinescalc()now refers to the total number of predictors in the regression models (i.e., also counting the focal predictor of interest) - added measures
"R2"and "ZR2"toescalc() addpoly.default()andaddpoly.rma.predict()gain aconstareaargument (for the option to draw the polygons with a constant area)plot.rma.uni.selmodel()gains ashadeargument (for shading the confidence interval region)plot.permutest.rma.uni()gains alegendargumentvcalc()gains asparseargumentaggregate.escalcgainsvar.namesargument- made the
legendargument more flexible infunnel() - made the
appendargument more flexible into.long() - added a few more transformation functions
- small bug fixes
- added automated visual comparison tests of plots
- improved the documentation a bit
Version 4.2-0 (2023-05-08)
- improved the various plotting functions so they respect
par("fg"); as a result, one can now create plots with a dark background and light plotting colors - also allow two or three values for
xlabin the variousforest()functions (for adding labels at the ends of the x-axis limits) - better default choices for
xlimin the variousforest()functions; also, argumentilab.xposis now optional when using theilabargument - added
shadeandcolshadearguments to the variousforest()functions - the various
forest()functions no longer enforce thatxlimmust be at least as wide asalim - added
linkargument torma.glmm() rma.glmm()withmeasure="OR", model="CM.EL", method="ML"now treats tau^2 values below 1e-04 effectively as zero before computing the standard errors of the fixed effects; this helps to avoid numerical problems in approximating the Hessian; similarly,selmodel()now treats tau^2 values below 1e-04 or min(vi/10) effectively as zero before computing the standard errors- for measure
SMCC, can now specify d-values, t-test statistics, and p-values via argumentsdi,ti, andpi - functions that issue a warning when omitting studies due to NAs now indicate how many were omitted
- properly documented the
levelargument - added a few more transformation functions
- small bug fixes
- improved the documentation a bit
Version 4.0-0 (2023-03-19)
- added
conv.2x2()function for reconstructing the cell frequencies in 2x2 tables based on other summary statistics - added
conv.wald()function for converting Wald-type confidence intervals and test statistics to sampling variances - added
conv.fivenum()function for estimating means and standard deviations from five-number summary values - added
conv.delta()function for transforming observed effect sizes or outcomes and their sampling variances using the delta method - added
emmprep()function to create a reference grid for use with theemmeans()function from the package of the same name - exposed formatter functions
fmtp(),fmtx(), andfmtt() - package
numDerivmoved fromSuggeststoDepends model.matrix.rma()gainsasdfargument- corrected bug in
vcalc()(values forobsandtypewere taken directly as indices instead of using them as identifiers) - improved efficiency of
vif()whensim=TRUEby reshuffling only the data needed in the model matrix; due to some edge cases, the simulation approach cannot be used when some redundant predictors were dropped from the original model; and when redundancies occur after reshuffling the data, the simulated (G)VIF value(s) are now set toInfinstead ofNA selmodel()gainstype='trunc' andtype='truncest' models (the latter should be considered experimental)- added
exact="i"option inpermutest()(to just return the number of iterations required for an exact permutation test) escalc()now provides more informative error messages when not specifying all required arguments to compute a particular measure- added measures
"ZPHI","ZTET","ZPB","ZBIS", and"ZSPCOR"toescalc()(but note that Fisher's r-to-z transformation is not a variance-stabilizing transformation for these measures) - the variance of measure
ZPCORis now calculated with1/(ni-mi-3)(instead of1/(ni-mi-1)), which provides a better approximation in small samples (and analogous to how the variance ofZCORis calculated with1/(ni-3)) - as with
measure="SMD", one can now also use argumentsdiandtito specify d-values and t-test statistics for measuresRPB,RBIS,D2ORN, andD2ORLinescalc() - for measures
COR,UCOR, andZCOR, can now use argumenttito specify t-test statistics inescalc() - can also specify (two-sided) p-values (of the respective t-tests) for these measures (and for measures
PCOR,ZPCOR,SPCOR, andZSPCOR) via argumentpi(the sign of the p-value is taken to be the sign of the measure) - can also specify (semi-)partial correlations directly via argument
rifor measuresPCOR,ZPCOR,SPCOR, andZSPCOR - when passing a correlation marix to
rcalc(), it now orders the elements (columnwise) based on the lower triangular part of the matrix, not the upper one (which is more consistent with whatmatreg()expects as input when using theVargument) - optimizers
RcgminandRvmminare now available inrma.uni(),rma.mv(),rma.glmm(), andselmodel() - improved the documentation a bit
Version 3.8-1 (2022-08-26)
funnel.default(),funnel.rma(), andregplot.rma()gainslabargumentvif()was completely refactored and gainsreestimate,sim, andparallelarguments; addedas.data.frame.vif.rma()andplot.vif.rma()methodsplot.permutest.rma.uni()function sets the y-axis limits automatically and in a smarter way when also drawing the reference/null distribution and the density estimate- added possibility to specify a list for
bttinanova.rma(); addedprint.list.anova.rma()to print the resulting object - added
as.data.frame.anova.rma()andas.data.frame.list.anova.rma()methods - documented the possibility to use an identity link (with
link="identity") inrma.uni()when fitting location-scale models (although this will often lead to estimation problems); addedsolnp()as an additional optimizer for this case - optimizers
nloptrandconstrOptim.nl(the latter from thealabamapackage) are now available inrma.uni()for location-scale models when using an identity link - added measure
SMD1Htoescalc() - for
measure="SMD",escalc()now also allows the user to specify d-values and t-test statistics via argumentsdiandti, respectively aggregate.escalc()gainsaddkargument- added (experimental!) support for measures
"RR","RD","PLN", and"PR"torma.glmm()(but using these measures will often lead to estimation problems) replmiss()gainsdataargumentcumul()functions also store data, so that argumentsilab,col,pch, andpsizein theforest.cumul.rma()function can look for variables therein- fixed issue with rendering Rmarkdown documents with
metaforoutput due to the use of a zero-width space
Version 3.4-0 (2022-04-21)
- added
misc-models,misc-recs, andmisc-optionshelp pages - added
as.data.frame.confint.rma()andas.data.frame.list.confint.rmamethods permutest()can now also do permutation tests for location-scale models; it also always returns the permutation distributions; hence, argumentretpermdistwas removed- added
plot.permutest.rma.uni()function to plot the permutation distributions - simplified
regtest(),ranktest(), andtes()to single functions instead of using generics and methods; this way, adataargument could be added - added
vcalc()andblsplit()functions robust()gainsclubSandwichargument; if set toTRUE, the methods from theclubSandwichpackage (https://cran.r-project.org/package=clubSandwich) are used to obtain the cluster-robust results;anova.rma()andpredict.rma()updated to work appropriately in this case- results from
robust()are no longer printed withprint.robust.rma()but with the print methodsprint.rma.uni()andprint.rma.mv() anova.rma()now gives a warning when running LRTs not based on ML/REML estimation and gainsrhsargument; it also now has arefitargument (to refit REML fits with ML in case the fixed effects of the models differ)- setting
dfs="contain"inrma.mv()automatically setstest="t"for convenience - elements of
rhoandphiinrma.mv()are now based on the lower triangular part of the respective correlation matrix (instead of the upper triangular part) for consistency with other functions; note that this is in principle a backwards incompatible change, although this should only be a concern in very special circumstances rma.mv()gainscvvcargument (for calculating the var-cov matrix of the variance/correlation/covariance components)- added measure
"MPORM"toescalc()for computing marginal log odds ratios based on marginal 2x2 tables directly (which requires specification of the correlation coefficients in the paired tables for the calculation of the sampling variances via theriargument) - added measure
"REH"toescalc()for computing the (log transformed) relative excess heterozygosity (to assess deviations from the Hardy-Weinberg equilibrium) aggregate.escalc()gainscheckpdargument andstruct="CS+CAR"rma.glmm()now has entire array of optimizers available formodel="CM.EL"andmeasure="OR"; switched the default fromoptim()with methodBFGStonlminb()for consistency withrma.mv(),rma.uni(), andselmodel.rma.uni()rma.glmm()gainscodingandcorarguments and hence more flexibility how the group variable should be coded in the random effects structure and whether the random study effects should be allowed to be correlated with the random group effectsrma.uni()now also provides R^2 for fixed-effects modelsmatreg()can now also analyze a covariance matrix with a correspondingVmatrix; can also specify variable names (instead of indices) for argumentsxandy- renamed argument
nearPDtonearpdinmatreg()(butnearPDcontinues to work) plot.profile.rma()gainsreflineargument- added
addpoly.rma.predict()method addpoly.default()andaddpoly.rma()gainltyandannosymarguments; if unspecified, argumentsannotate,digits,width,transf,atransf,targs,efac,fonts,cex, andannosymare now automatically set equal to the same values that were used when creating the forest plot- documented
textposandrowadjarguments for the variousforestfunctions and moved thetopandannosymarguments to 'additional arguments' - fixed that
levelargument inaddpoly.rma()did not affect the CI width points.regplot()function now also redraws the labels (if there were any to begin with)- added
lbfgsb3c,subplex, andBBoptimas possible optimizer inrma.mv(),rma.glmm(),rma.uni(), andselmodel.rma.uni() - the object returned by model fitting functions now includes the data frame specified via the
dataargument; various method functions now automatically look for specified variables within this data frame first - datasets moved to the `metadat` package (https://cran.r-project.org/package=metadat)
- improved the documentation a bit
Older Versions
Older updates are archived here.
updates.txt ยท Last modified: by Wolfgang Viechtbauer