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.6-0 (2024-03-28)
- the
steps
argument 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, argumentylim
can 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 viaolim
are 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 thesteps
argument do not contain any observed p-values (instead a warning is issued and model fitting proceeds, but may fail)- added
decreasing
argument 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
pval
toselmodel()
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
weighted
fromfsn()
(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 anrma
object 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
tabfig
to the variousforest()
functions, for easily setting theannosym
argument to an appropriate vector for exactly aligning numbers (when using a matching font) - added (for now undocumented)
vccon
argument torma.mv()
for setting equality constraints on variance/correlation components replace
argument 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 aquote
argument, which is set toFALSE
by default - for measures
"PCOR"
,"ZPCOR"
,"SPCOR"
, and"ZSPCOR"
, argumentmi
inescalc()
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 aconstarea
argument (for the option to draw the polygons with a constant area)plot.rma.uni.selmodel()
gains ashade
argument (for shading the confidence interval region)plot.permutest.rma.uni()
gains alegend
argumentvcalc()
gains asparse
argumentaggregate.escalc
gainsvar.names
argument- made the
legend
argument more flexible infunnel()
- made the
append
argument 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
xlab
in the variousforest()
functions (for adding labels at the ends of the x-axis limits) - better default choices for
xlim
in the variousforest()
functions; also, argumentilab.xpos
is now optional when using theilab
argument - added
shade
andcolshade
arguments to the variousforest()
functions - the various
forest()
functions no longer enforce thatxlim
must be at least as wide asalim
- added
link
argument 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
level
argument - 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
numDeriv
moved fromSuggests
toDepends
model.matrix.rma()
gainsasdf
argument- corrected bug in
vcalc()
(values forobs
andtype
were taken directly as indices instead of using them as identifiers) - improved efficiency of
vif()
whensim=TRUE
by 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 toInf
instead 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
ZPCOR
is 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 ofZCOR
is calculated with1/(ni-3)
) - as with
measure="SMD"
, one can now also use argumentsdi
andti
to specify d-values and t-test statistics for measuresRPB
,RBIS
,D2ORN
, andD2ORL
inescalc()
- for measures
COR
,UCOR
, andZCOR
, can now use argumentti
to 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
ri
for 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 theV
argument) - optimizers
Rcgmin
andRvmmin
are 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()
gainslab
argumentvif()
was completely refactored and gainsreestimate
,sim
, andparallel
arguments; 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
btt
inanova.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
nloptr
andconstrOptim.nl
(the latter from thealabama
package) are now available inrma.uni()
for location-scale models when using an identity link - added measure
SMD1H
toescalc()
- for
measure="SMD"
,escalc()
now also allows the user to specify d-values and t-test statistics via argumentsdi
andti
, respectively aggregate.escalc()
gainsaddk
argument- added (experimental!) support for measures
"RR"
,"RD"
,"PLN"
, and"PR"
torma.glmm()
(but using these measures will often lead to estimation problems) replmiss()
gainsdata
argumentcumul()
functions also store data, so that argumentsilab
,col
,pch
, andpsize
in theforest.cumul.rma()
function can look for variables therein- fixed issue with rendering Rmarkdown documents with
metafor
output due to the use of a zero-width space
Version 3.4-0 (2022-04-21)
- added
misc-models
,misc-recs
, andmisc-options
help pages - added
as.data.frame.confint.rma()
andas.data.frame.list.confint.rma
methods permutest()
can now also do permutation tests for location-scale models; it also always returns the permutation distributions; hence, argumentretpermdist
was 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, adata
argument could be added - added
vcalc()
andblsplit()
functions robust()
gainsclubSandwich
argument; if set toTRUE
, the methods from theclubSandwich
package (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 gainsrhs
argument; it also now has arefit
argument (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
rho
andphi
inrma.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()
gainscvvc
argument (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 theri
argument) - added measure
"REH"
toescalc()
for computing the (log transformed) relative excess heterozygosity (to assess deviations from the Hardy-Weinberg equilibrium) aggregate.escalc()
gainscheckpd
argument andstruct="CS+CAR"
rma.glmm()
now has entire array of optimizers available formodel="CM.EL"
andmeasure="OR"
; switched the default fromoptim()
with methodBFGS
tonlminb()
for consistency withrma.mv()
,rma.uni()
, andselmodel.rma.uni()
rma.glmm()
gainscoding
andcor
arguments 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 correspondingV
matrix; can also specify variable names (instead of indices) for argumentsx
andy
- renamed argument
nearPD
tonearpd
inmatreg()
(butnearPD
continues to work) plot.profile.rma()
gainsrefline
argument- added
addpoly.rma.predict()
method addpoly.default()
andaddpoly.rma()
gainlty
andannosym
arguments; if unspecified, argumentsannotate
,digits
,width
,transf
,atransf
,targs
,efac
,fonts
,cex
, andannosym
are now automatically set equal to the same values that were used when creating the forest plot- documented
textpos
androwadj
arguments for the variousforest
functions and moved thetop
andannosym
arguments to 'additional arguments' - fixed that
level
argument 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
, andBBoptim
as 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
data
argument; 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
Version 3.0-2 (2021-06-02)
- the
metafor
package now makes use of themathjaxr
package to nicely render equations shown in the HTML help pages rma()
can now also fit location-scale models- added
selmodel()
for fitting a wide variety of selection models (and added the correspondingplot.rma.uni.selmodel()
function for drawing the estimated selection function) rma.mv()
gainsdfs
argument and now provides an often better way for calculating the (denominator) degrees of freedom for approximate t- and F-tests whendfs="contain"
- added
tes()
function for the test of excess significance - added
regplot()
function for drawing scatter plots / bubble plots based on meta-regression models - added
rcalc()
for calculating the variance-covariance matrix of correlation coefficients andmatreg()
for fitting regression models based on correlation/covariance matrices - added convenience functions
dfround()
andvec2mat()
- added
aggregate.escalc()
function to aggregate multiple effect sizes or outcomes within studies/clusters regtest()
now shows the 'limit estimate' of the (average) true effect when usingsei
,vi
,ninv
, orsqrtninv
as predictors (and the model does not contain any other moderators)vif()
gainsbtt
argument and can now also compute generalized variance inflation factors; a properprint.vif.rma()
function was also addedanova.rma()
argumentL
renamed toX
(the former still works, but is no longer documented)- argument
order
incumul()
should now just be a variable, not the order of the variable, to be used for ordering the studies and must be of the same length as the original dataset that was used in the model fitting - similarly, vector arguments in various plotting functions such as
forest.rma()
must now be of the same length as the original dataset that was used in the model fitting (any subsetting and removal ofNAs
is automatically applied) - the various
leave1out()
andcumul()
functions now provide I^2 and H^2 also for fixed-effects models; accordingly,plot.cumul.rma()
now also works with such models - fixed
level
not getting passed down to the variouscumul()
functions plot.cumul.rma()
argumentaddgrid
renamed togrid
(the former still works, but is no longer documented)forest.default()
,forest.rma()
, andlabbe()
gainplim
argument and now provide more flexibility in terms of the scaling of the pointsforest.rma()
gainscolout
argument (to adjust the color of the observed effect sizes or outcomes)- in the various
forest()
functions, the right header is now suppressed whenannotate=FALSE
andheader=TRUE
funnel.default()
andfunnel.rma()
gainlabel
andoffset
argumentsfunnel.default()
andfunnel.rma()
gainlty
argument; the reference line is now drawn by default as a dotted line (like the line for the pseudo confidence region)- the
forest
andfunnel
arguments ofreporter.rma.uni()
can now also be logicals to suppress the drawing of these plots - added
weighted
argument tofsn()
(for Orwin's method) - added some more transformation functions
bldiag()
now properly handles ?x0 or 0x? matrices- p-values are still given to 2 digits even when
digits=1
summary.escalc()
also provides the p-values (of the Wald-type tests); but when using thetransf
argument, the sampling variances, standard errors, test statistics, and p-values are no longer shownrma.uni()
no longer constrains a fixed tau^2 value to 0 when k=1- slight speedup in functions that repeatedly fit
rma.uni()
models by skipping the computation of the pseudo R^2 statistic - started using the
pbapply
package for showing progress bars, also when using parallel processing - to avoid potential confusion, all references to 'credibility intervals' have been removed from the documentation; these intervals are now exclusively referred to as 'prediction intervals'; in the output, the bounds are therefore indicated now as
pi.lb
andpi.ub
(instead ofcr.lb
andcr.ub
); the corresponding argument names were changed inaddpoly.default()
; argumentaddcred
was changed toaddpred
inaddpoly.rma()
andforest.rma()
; however, code using the old arguments names should continue to work - one can now use
weights(..., type="rowsum")
for intercept-onlyrma.mv
models (to obtain 'row-sum weights') simulate.rma()
gainsolim
argument; renamed theclim
argument insummary.escalc()
and the variousforest()
functions toolim
for consistency (the oldclim
argument should continue to work)- show nicer network graphs for
dat.hasselblad1998
anddat.senn2013
in the help files - added 23 datasets (
dat.anand1999
,dat.assink2016
,dat.baskerville2012
,dat.bornmann2007
,dat.cannon2006
,dat.cohen1981
,dat.craft2003
,dat.crede2010
,dat.dagostino1998
,dat.damico2009
,dat.dorn2007
,dat.hahn2001
,dat.kalaian1996
,dat.kearon1998
,dat.knapp2017
,dat.landenberger2005
,dat.lau1992
,dat.lim2014
,dat.lopez2019
,dat.maire2019
,dat.moura2021
,dat.obrien2003
,dat.vanhowe1999
,dat.viechtbauer2021
) - the package now runs a version check on startup in interactive sessions; setting the environment variable
METAFOR_VERSION_CHECK
toFALSE
disables this - refactored various functions (for cleaner/simpler code)
- improved the documentation a bit
Older Versions
Older updates are archived here.
updates.txt ยท Last modified: 2024/03/29 09:58 by Wolfgang Viechtbauer