I added an example to the analysis examples section showing how to reproduce the results from one of the illustrative datasets used in the article by DerSimonian and Kacker (2007), and since I am sure there is a desperate need in the world for yet even more ways of estimating the amount of heterogeneity in a random-effects model meta-analysis, I threw in a whole bunch of extra estimators.
New version of the metafor package is out (version 1.9-5). Adds a bit of functionality and flexibility, corrects a few minor bugs, and includes some improvements to the
rma.mv() function. Full changelog can be found here.
One thing I am quite excited about is that the
rma.mv() function now makes use of the Cholesky decomposition in the optimization when there is a
random = ~ inner | outer formula and
struct="UN". This is numerically more stable than the old approach that avoided non-positive definite solutions by forcing the log-likelihood to be
-Inf in those cases (which creates sharp discontinuities in the likelihood surface). The old behavior can be restored with
control = list(cholesky=FALSE), but I doubt that this would be needed.
One other thing:
rma.mv() now requires the
inner variable in an
~ inner | outer formula to be a factor or character variable (except when
struct="HAR"). This could potentially break some existing code, which of course is a no-no. But
rma.mv() has treated the
inner variable as a factor all along anyway and in the future, I am considering to add functionality that would allow for non-factor
inner variables, which would allow the addition of random slopes to the model.
Added an illustration to the tips and notes section on how to compare estimates from two independent meta-analyses or subgroups of studies.
I added another example to the analysis examples section. This one shows how to fit a three-level meta-analytic model, as described by Konstantopoulos (2011).
When used with the default settings, the
rma.mh() function in metafor can provide results that differ from those obtained with other meta-analytic software, such as the
metan function in Stata, the Review Manager (RevMan) from the Cochrane Collaboration, or Comprehensive Meta-Analysis (CMA). By default, metafor does not apply any adjustments to the cell counts in studies with zero cases in either group when applying the Mantel-Haenszel method, while other software may do this automatically. For more details, take a look at the comparison of the Mantel-Haenszel method in different software and what settings to use to make metafor provide the exact same results as other software. Since this question has come a few times, I have also added this to the FAQ.
I added another illustration to the tips and notes section, this time on models with multiple factors and their interaction. I suggest reading this together with the illustration on how to test factors and linear combinations of parameters in (mixed-effects) meta-regression models.
Under the tips and notes section, there is now a new item, showing how to carry out bootstrapping with meta-analytic models.
I just added a new item to the analysis examples section, based on my 2007 article on confidence intervals for the amount of heterogeneity in random-effects models: Viechtbauer, W. (2007). Confidence intervals for the amount of heterogeneity in meta-analysis. Statistics in Medicine, 26(1), 37-52. Code is provided for all of the CIs that were obtained for the illustrative example in the paper (including the method by Biggerstaff and Tweedie, the profile likelihood CIs, the Wald-type CIs, the method by Sidik and Jonkman, and the parametric and non-parametric boostrap CIs).
Quite excited to release a new version of the metafor package (see the full changelog here). Aside from some minor improvements and bug fixes, the most important addition is the generalized Q-statistic estimator for the amount of (residual) heterogeneity (i.e., $\tau^2$) in random- and mixed-effects models. This is a generalization of the DerSimonian and Laird (DL) and the Hedges (HE) estimators and requires specification of user-defined weights (with the DL estimator corresponding to inverse sampling variance weights and the HE estimator to unit weights). When using this estimator, one can also obtain corresponding confidence intervals for $\tau^2$ based on the exact distributional properties of the estimator (based on Dan Jackson's excellent work).
Added an illustration to the tips and notes section that shows how to test factors and linear combinations of parameters in (mixed-effects) meta-regression models.
Added an illustration to the tips and notes section that shows how the results from a mixed-effects model for longitudinal (growth curve) data can be approximated with a two-stage procedure. The latter approach makes use of the
rma.mv() function, since essentially the two-stage approach is a (multivariate) meta-analysis of the estimated model coefficients.
I added a page to the website with a (probably incomplete) list of people that have in some shape or form contributed to the development of the package. This was long overdue. My apologies for any omissions!
I was just looking at the website of the lavaan package (a very nice R package for latent variable modeling) and noticed that it mentioned that the lavaan paper published in the Journal of Statistical Software (JSS) had been downloaded over 20,000 times. I then got curious to see how often the metafor paper (also published in JSS) had been downloaded (I did not even notice before that the JSS website shows download counts). It's up to just over 40,000 downloads! That's very nice to see (given all the work I put into that paper and the package in general). And it's actually my second most highly cited paper (see the list on Google Scholar). To me, this is actually the most satisfying aspect of creating an R package: When you see that other people are using it and apparently find it useful.
A new version of the metafor package (version 1.9-3) is now available via CRAN. This is a pretty extensive update (see the full changelog here), but most notable are the performance enhancements to the
rma.mv() function (for multilevel, multivariate, and network meta-analyses) and the possibility to specify arbitrary user-defined weights when fitting models with
Started a proper news section on the package website.