The metafor Package

A Meta-Analysis Package for R

User Tools

Site Tools


updates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
updates [2023/03/20 08:27] Wolfgang Viechtbauerupdates [2024/03/29 09:55] Wolfgang Viechtbauer
Line 2: Line 2:
  
 On this page, you can find a description of the (recent) updates to the metafor package. Older updates are archived [[updates_old|here]]. On this page, you can find a description of the (recent) updates to the metafor package. Older updates are archived [[updates_old|here]].
 +
 +==== Version 4.4-0 (2023-09-27) ====
 +
 +  * added ''getmfopt()'' and ''setmfopt()'' functions for getting and setting package options and made some of the options more flexible
 +  * removed argument ''weighted'' from ''fsn()'' (whether weighted or unweighted averages are used in Orwin's method is now simply determined by whether sampling variances are specified or not); added ''type="General"'' to ''fsn()'' 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 an ''rma'' object to the ''fsn()'' 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 various ''forest()'' functions, for easily setting the ''annosym'' argument to an appropriate vector for exactly aligning numbers (when using a matching font)
 +  * added (for now undocumented) ''vccon'' argument to ''rma.mv()'' for setting equality constraints on variance/correlation components
 +  * ''replace'' argument in ''conv.2x2()'', ''conv.delta()'', ''conv.fivenum()'', and ''conv.wald()'' can now also be a logical
 +  * added ''summary.matreg()'' and ''print.summary.matreg()'' methods for including additional statistics in the output ($R^2$ and the omnibus test) and added ''coef.matreg()'' and ''vcov.matreg()'' extractor functions
 +  * formatting functions ''fmtp()'', ''fmtx()'', and ''fmtt()'' gain a ''quote'' argument, which is set to ''FALSE'' by default
 +  * for measures ''"PCOR"'', ''"ZPCOR"'', ''"SPCOR"'', and ''"ZSPCOR"'', argument ''mi'' in ''escalc()'' 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"'' to ''escalc()''
 +  * ''addpoly.default()'' and ''addpoly.rma.predict()'' gain a ''constarea'' argument (for the option to draw the polygons with a constant area)
 +  * ''plot.rma.uni.selmodel()'' gains a ''shade'' argument (for shading the confidence interval region)
 +  * ''plot.permutest.rma.uni()'' gains a ''legend'' argument
 +  * ''vcalc()'' gains a ''sparse'' argument
 +  * ''aggregate.escalc'' gains ''var.names'' argument
 +  * made the ''legend'' argument more flexible in ''funnel()''
 +  * made the ''append'' argument more flexible in ''to.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 various ''forest()'' functions (for adding labels at the ends of the x-axis limits)
 +  * better default choices for ''xlim'' in the various ''forest()'' functions; also, argument ''ilab.xpos'' is now optional when using the ''ilab'' argument
 +  * added ''shade'' and ''colshade'' arguments to the various ''forest()'' functions
 +  * the various ''forest()'' functions no longer enforce that ''xlim'' must be at least as wide as ''alim''
 +  * added ''link'' argument to ''rma.glmm()''
 +  * ''rma.glmm()'' with ''measure="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 arguments ''di'', ''ti'', and ''pi''
 +  * 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) ==== ==== Version 4.0-0 (2023-03-19) ====
Line 119: Line 159:
   * refactored various functions (for cleaner/simpler code)   * refactored various functions (for cleaner/simpler code)
   * improved the documentation a bit   * improved the documentation a bit
- 
-==== Version 2.4-0 (2020-03-19) ==== 
- 
-  * version jump to 2.4-0 for CRAN release (from now on, even minor numbers for CRAN releases, odd numbers for development versions) 
-  * the various ''forest()'' functions gain ''header'' argument 
-  * ''escalc()'' gains ''include'' argument 
-  * setting ''verbose=3'' in model fitting functions sets ''options(warn=1)'' 
-  * ''forest.rma()'' and ''forest.default()'' now throw informative errors when misusing ''order'' and ''subset'' arguments 
-  * fixed failing tests due to the ''stringsAsFactors=FALSE'' change in the upcoming version of R 
-  * ''print.infl.rma.uni()'' gains ''infonly'' argument, to only show the influential studies 
-  * removed ''MASS'' from ''Suggests'' (no longer needed) 
-  * argument ''btt'' can now also take a string to grep for 
-  * added ''optimParallel'' as possible optimizer in ''rma.mv()'' 
-  * added (for now undocumented) option to fit models in ''rma.glmm()'' via the ''GLMMadaptive'' package (instead of ''lme4''); to try this, use: ''control=list(package="GLMMadaptive")'' 
-  * started to use numbering scheme for 'devel' version (the number after the dash indicates the devel version) 
-  * added ''contrmat()'' function (for creating a matrix that indicates which groups have been compared against each other in each row of a dataset) 
-  * added ''to.wide()'' function (for restructuring long format datasets into the wide format needed for contrast-based analyses) 
-  * ''I^2'' and ''H^2'' are also shown in output for fixed-effects models 
-  * argument ''grid'' in ''baujat()'' can now also be a color name 
-  * added (for now undocumented) ''time'' argument to more functions that are computationally expensive 
-  * added (for now undocumented) ''textpos'' argument to the various forest functions 
-  * added a new dataset (''dat.graves2010'') 
-  * added more tests 
- 
-==== Version 2.1-0 (2019-05-13) ==== 
- 
-  * added ''formula()'' method for objects of class ''rma'' 
-  * ''llplot()'' now also allows for ''measure="GEN"''; also, the documentation and y-axis label have been corrected to indicate that the function plots likelihoods (not log likelihoods) 
-  * ''confint.rma.mv()'' now returns an object of class ''list.confint.rma'' when obtaining CIs for all variance and correlation components of the model; added corresponding ''print.list.confint.rma()'' function 
-  * moved ''tol'' argument in ''permutest()'' to ''control'' and renamed the argument to ''comptol'' 
-  * added ''PMM'' and ''GENQM'' estimators in rma.uni() 
-  * added ''vif()'' function to get variance inflation factors 
-  * added ''.glmulti'' object for making the interaction with glmulti easier 
-  * added ''reporter()'' and ''reporter.rma.uni()'' for dynamically generating analysis reports for objects of class ''rma.uni'' 
-  * output is now styled/colored when ''crayon'' package is loaded (this only works on a 'proper' terminal with color support; also works in RStudio) 
-  * overhauled ''plot.gosh.rma()''; when ''out'' is specified, it now shows two distributions, one for the values when the outlier is included and one for the values when for outlier is excluded; dropped the ''hcol''argument and added ''border'' argument 
-  * refactored ''influence.rma.uni()'' to be more consistent internally with other functions; ''print.infl.rma.uni()'' and ''plot.infl.rma.uni()'' adjusted accordingly; functions ''cooks.distance.rma.uni()'', ''dfbetas.rma.uni()'', and ''rstudent.rma.uni()'' now call ''influence.rma.uni()'' for the computations 
-  * ''rstudent.rma.uni()'' now computes the SE of the deleted residuals in such a way that it will yield identical results to a mean shift outlier model even when that model is fitted with ''test="knha"'' 
-  * ''rstandard.rma.uni()'' gains ''type'' argument, and can now also compute conditional residuals (it still computes marginal residuals by default) 
-  * ''cooks.distance.rma.mv()'' gains ''cluster'' argument, so that the Cook's distances can be computed for groups of estimates 
-  * ''cooks.distance.rma.mv()'' gains ''parallel'', ''ncpus'', and ''cl'' arguments and can now make use of parallel processing 
-  * ''cooks.distance.rma.mv()'' should be faster by using the estimates from the full model as starting values when fitting the models with the ith study/cluster deleted from the dataset 
-  * ''cooks.distance.rma.mv()'' gains ''reestimate'' argument; when set to ''FALSE'', variance/correlation components are not reestimated 
-  * ''rstandard.rma.mv()'' gains ''cluster'' argument for computing cluster-level multivariate standardized residuals 
-  * added ''rstudent.rma.mv()'' and ''dfbetas.rma.mv()'' 
-  * smarter matching of elements in ''newmods'' (when using a named vector) in ''predict()'' that also works for models with interactions (thanks to Nicole Erler for pointing out the problem) 
-  * ''rma.uni()'' and ''rma.mv()'' no longer issue (obvious) warnings when user constrains ''vi'' or ''V'' to 0 (i.e., ''vi=0'' or ''V=0'', respectively) 
-  * ''rma.mv()'' does more intelligent filtering based on ''NAs'' in ''V'' matrix 
-  * ''rma.mv()'' now ensures strict symmetry of any (var-cov or correlation) matrices specified via the ''R'' argument 
-  * fixed ''rma.mv()'' so checks on ''R'' argument run as intended; also fixed an issue when multiple formulas with slashes are specified via ''random'' (thanks to Andrew Loignon for pointing out the problem) 
-  * suppressed showing calls on some warnings/errors in ''rma.mv()'' 
-  * ''rma.mv()'' now allows for a continuous-time autoregressive random effects structure (''struct="CAR"'') and various spatial correlation structures (''struct="SPEXP"'', ''"SPGAU"'', ''"SPLIN"'', ''"SPRAT"'', and ''"SPSPH"'') 
-  * ''rma.mv()'' now allows for ''struct="GEN"'' which models correlated random effects for any number of predictors, including continuous ones (i.e., this allows for 'random slopes') 
-  * in the various ''forest()'' functions, when ''options(na.action="na.pass")'' or ''options(na.action="na.exclude")'' and an annotation contains ''NA'', this is now shown as a blank (instead of ''NA [NA, NA]'') 
-  * the various ''forest()'' and ''addpoly()'' functions gain a ''fonts'' argument 
-  * the various ''forest()'' functions gain a ''top'' argument 
-  * the various ''forest()'' functions now show correct point sizes when the weights of the studies are exactly the same 
-  * ''forest.cumul.rma()'' gains a ''col'' argument 
-  * ''funnel.default()'' and ''funnel.rma()'' can now take vectors as input for the ''col'' and ''bg'' arguments (and also for ''pch''); both functions also gain a ''legend'' argument 
-  * ''addpoly()'' functions can now also show prediction interval bounds 
-  * removed 'formula interface' from ''escalc()''; until this actually adds some kind of extra functionality, this just makes ''escalc()'' more confusing to use 
-  * ''escalc()'' can now compute the coefficient of variation ratio and the variability ratio for pre-post or matched designs (''"CVRC"'', ''"VRC"'') 
-  * ''escalc()'' does a bit more housekeeping 
-  * added (currently undocumented) arguments ''onlyo1'', ''addyi'', and ''addvi'' to ''escalc()'' that allow for more flexibility when computing certain bias corrections and when computing sampling variances for measures that make use of the ''add'' and ''to'' arguments 
-  * ''escalc()'' now sets ''add=0'' for measures where the use of such a bias correction makes little sense; this applies to the following measures: ''"AS"'', ''"PHI"'', ''"RTET"'', ''"IRSD"'', ''"PAS"'', ''"PFT"'', ''"IRS"'', and ''"IRFT"''; one can still force the use of the bias correction by explicitly setting the ''add'' argument to some non-zero value 
-  * added ''clim'' argument to ''summary.escalc()'' 
-  * added ''ilim'' argument to ''trimfill()'' 
-  * ''labbe()'' gains ''lty'' argument 
-  * ''labbe()'' now (invisibly) returns a data frame with the coordinates of the points that were drawn (which may be useful for manual labeling of points in the plot) 
-  * added a print method for ''profile.rma'' objects 
-  * ''profile.rma.mv()'' now check whether any of the profiled log-likelihood values is larger than the log-likelihood of the fitted model (using numerical tolerance given by ''lltol'') and issues a warning if so 
-  * ''profile.rma.uni()'', ''profile.rma.mv()'', and ''plot.profile.rma()'' gain ''cline'' argument; ''plot.profile.rma()'' gains ''xlim'', ''ylab'', and ''main'' arguments 
-  * fixed an issue with ''robust.rma.mv()'' when the model was fitted with ''sparse=TRUE'' (thanks to Roger Martineau for noting the problem) 
-  * various method functions (''fitted()'', ''resid()'', ''predict()'', etc.) behave in a more consistent manner when model omitted studies with missings 
-  * ''predict.rma()'' gains ''vcov'' argument; when set to ''TRUE'', the variance-covariance matrix of the predicted values is also returned 
-  * ''vcov.rma()'' can now also return the variance-covariance matrix of the fitted values (''type="fitted"'') and the residuals (''type="resid"'') 
-  * added ''`$<-`'' and ''as.matrix()'' methods for ''list.rma'' objects 
-  * fixed error in ''simulate.rma()'' that would generate too many samples for ''rma.mv'' models 
-  * added undocumented argument ''time'' to all model fitting functions; if set to ''TRUE'', the model fitting time is printed 
-  * added more tests (also for parallel operations); also, all tests updated to use proper tolerances instead of rounding 
-  * reorganized the documentation a bit 
- 
-==== Version 2.0-0 (2017-06-22) ==== 
- 
-  * added ''simulate()'' method for ''rma'' objects; added ''MASS'' to ''Suggests'' (since simulating for ''rma.mv'' objects requires ''mvrnorm()'' from ''MASS'') 
-  * ''cooks.distance.rma.mv()'' now works properly even when there are missing values in the data 
-  * ''residuals()'' gains ''type'' argument and can compute Pearson residuals 
-  * the ''newmods'' argument in ''predict()'' can now be a named vector or a matrix/data frame with column names that get properly matched up with the variables in the model 
-  * added ''ranef.rma.mv()'' for extracting the BLUPs of the random effects for ''rma.mv'' models 
-  * all functions that repeatedly refit models now have the option to show a progress bar 
-  * added ''ranktest.default()'', so user can now pass the outcomes and corresponding sampling variances directly to the function 
-  * added ''regtest.default()'', so user can now pass the outcomes and corresponding sampling variances directly to the function 
-  * ''funnel.default()'' gains ''subset'' argument 
-  * ''funnel.default()'' and ''funnel.rma()'' gain ''col'' and ''bg'' arguments 
-  * ''plot.profile.rma()'' gains ''ylab'' argument 
-  * more consistent handling of ''robust.rma'' objects 
-  * added a print method for ''rma.gosh'' objects 
-  * the (log) relative risk is now called the (log) risk ratio in all help files, plots, code, and comments 
-  * ''escalc()'' can now compute outcome measures based on paired binary data (''"MPRR"'', ''"MPOR"'', ''"MPRD"'', ''"MPORC"'', and ''"MPPETO"'') 
-  * ''escalc()'' can now compute (semi-)partial correlation coefficients (''"PCOR"'', ''"ZPCOR"'', ''"SPCOR"'') 
-  * ''escalc()'' can now compute measures of variability for single groups (''"CVLN"'', ''"SDLN"'') and for the difference in variability between two groups (''"CVR"'', ''"VR"''); also the log transformed mean (''"MNLN"'') has been added for consistency 
-  * ''escalc()'' can now compute the sampling variance for ''measure="PHI"'' for studies using stratified sampling (''vtpye="ST"'') 
-  * the ''`[`'' method for ''escalc'' objects now properly handles the ''ni'' and ''slab'' attributes and does a better job of cleaning out superfluous variable name information 
-  * added ''rbind()'' method for ''escalc'' objects 
-  * added ''as.data.frame()'' method for ''list.rma'' objects 
-  * added a new dataset (''dat.pagliaro1992'') for another illustration of a network meta-analysis 
-  * added a new dataset (''dat.laopaiboon2015'') on the effectiveness of azithromycin for treating lower respiratory tract infections 
-  * ''rma.uni()'' and ''rma.mv()'' now check if the ratio of the largest to smallest sampling variance is very large; results may not be stable then (and very large ratios typically indicate wrongly coded data) 
-  *  model fitting functions now check if extra/superfluous arguments are specified via ''...'' and issues are warning if so 
-  * instead of defining own generic ''ranef()'', import ''ranef()'' from ''nlme'' 
-  * improved output formatting 
-  * added more tests (but disabled a few tests on CRAN to avoid some issues when R is compiled with ''%%--%%disable-long-double'') 
-  * some general code cleanup 
-  * renamed ''diagram_metafor.pdf'' vignette to just ''diagram.pdf'' 
-  * minor updates in the documentation 
  
 ==== Older Versions ==== ==== Older Versions ====
updates.txt · Last modified: 2024/03/29 09:58 by Wolfgang Viechtbauer