rma.uni(yi, vi, sei, ai, bi, ci, di, n1i, n2i, m1i, m2i, sd1i, sd2i,
xi, mi, ri, ni, mods=NULL, data, intercept=TRUE, slab=NULL,
subset=NULL, measure="GEN", add=1/2, to="only0", vtype="LS",
method="REML", weighted=TRUE, level=95, digits=4, btt=NULL,
tau2=NULL, knha=FALSE, control=list())
rma(yi, vi, sei, ai, bi, ci, di, n1i, n2i, m1i, m2i, sd1i, sd2i,
xi, mi, ri, ni, mods=NULL, data, intercept=TRUE, slab=NULL,
subset=NULL, measure="GEN", add=1/2, to="only0", vtype="LS",
method="REML", weighted=TRUE, level=95, digits=4, btt=NULL,
tau2=NULL, knha=FALSE, control=list())
escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.escalc
function for more details.TRUE
).measure="GEN"
(default), the observed effect sizes or outcomes and corresponding sampling variances (or standard errors) should be supplied to the function via the escalc
function.escalc
function.escalc
function.method="FE"
. Random/mixed-effects models are fitted by setting meth
NULL
FALSE
). See c("rma.uni","rma")
. The object is a list containing the following components:0
when method="FE"
.NA
otherwise).length(yi)
unless subset
was used or if there are missing data).NA
otherwise).NA
otherwise).print.rma.uni
function. If you also want the fit statistics, use summary.rma
(or use the fitstats.rma
function to extract them). Full versus reduced model comparisons in terms of fit statistics and likelihoods can be obtained with anova.rma.uni
. Permutation tests for the model coefficient(s) can be obtained with permutest.rma.uni
.
Predicted/fitted values can be obtained with predict.rma
and fitted.rma
. For best linear unbiased predictions, see blup.rma.uni
.
The residuals.rma
, rstandard.rma.uni
, and rstudent.rma.uni
functions extract raw and standardized residuals. Additional case diagnostics (e.g., to determine influential studies) can be obtained with the influence.rma.uni
function. For models without moderators, leave-one-out diagnostics can also be obtained with leave1out.rma.uni
.
A confidence interval for the amount of (residual) heterogeneity in the random/mixed-effects model can be obtained with confint.rma.uni
.
Forest, funnel, and radial plots (the latter only for models without moderators) are drawn with forest.rma
, funnel.rma
, and radial.rma
. The qqnorm.rma.uni
function provides a normal QQ plot of the standardized residuals. One can also just call plot.rma.uni
on the fitted model object to obtain various plots at once.
Tests for publication bias (or more accurately, for funnel plot asymmetry) can be obtained with ranktest.rma
and regtest.rma
. For models without moderators, the trimfill.rma.uni
method can be used to carry out a trim and fill analysis.
For models without moderators, a cumulative meta-analysis (i.e., adding one obervation at a time) can be obtained with cumul.rma.uni
.
Other assessor functions include coef.rma
, vcov.rma
, logLik.rma
, deviance.rma
, AIC.rma
, BIC.rma
, hatvalues.rma.uni
, and weights.rma.uni
.yi
argument and the corresponding sampling variances via the vi
argument (or supply the standard errors, the square root of the sampling variances, via the sei
argument). When specifying the data in this way, one must set measure="GEN"
(which is the default).
Alternatively, the function can automatically calculate the values of a chosen effect size or outcome measure (and the corresponding sampling variances) when supplied with the needed data. The escalc
function describes which measures are currently implemented and what data/arguments should then be specified. The measure
argument should then be set to the desired measure.
Specifying the Model
Assuming the observed outcomes and corresponding sampling variances are supplied via yi
and vi
, the fixed-effects model is fitted with rma(yi, vi, method="FE")
. The random-effects model is fitted with the same code but setting method
to one of the various estimators for the amount of heterogeneity:
method="HS"
= Hunter-Schmidt estimatormethod="HE"
= Hedges estimatormethod="DL"
= DerSimonian-Laird estimatormethod="SJ"
= Sidik-Jonkman estimatormethod="ML"
= maximum-likelihood estimatormethod="REML"
= restricted maximum-likelihood estimatormethod="EB"
= empirical Bayes estimator.mods
argument. A single moderator can be given as a (row or column) vector of length $k$ specifying the values of the moderator. Multiple moderators are specified by giving an appropriate design matrix with $k$ rows and $p'$ columns (e.g., using mods = cbind(mod1, mod2, mod3)
, where mod1
, mod2
, and mod3
correspond to the names of the variables for the three moderator variables). The intercept is included in the model by default unless intercept=FALSE
.
Alternatively, one can use the model formula
syntax to specify the model. In this case, the mods
argument should be set equal to a one-sided formula of the form ~ model
(e.g., ~ mod1 + mod2 + mod3
). Interactions, polynomial terms, and factors can be easily added to the model in this manner. When specifying a model formula via the mods
argument, the intercept
argument is ignored. Instead, the inclusion/exclusion of the intercept term is controlled by the specified formula (e.g., ~ mod1 + mod2 + mod3 - 1
would exclude the intercept term).
In this case, the model formula determines whether an intercept is included in the model or not. A fixed-effects with moderators model is then fitted by setting method="FE"
, while a mixed-effects model is fitted by specifying one of the estimators for the amount of (residual) heterogeneity given earlier.
Omnibus Test of Parameters
For models including moderators, an omnibus test of all the model coefficients is conducted that excludes the intercept (the first coefficient) if it is included in the model. If no intercept is included in the model, then the omnibus test includes all of the coefficients in the model including the first. Alternatively, one can manually specify the indices of the coefficients to test via the btt
argument. For example, use btt=c(3,4)
to only include the third and fourth coefficient from the model in the test (if an intercept is included in the model, then it corresponds to the first coefficient in the model).
Categorical Moderators
Categorical moderator variables can be included in the model in the same way that appropriately (dummy) coded categorical independent variables can be included in linear models. You can either do the dummy coding manually or use a model formula together with the factor
function to let Rhandle the coding automatically. An example to illustrate these different approaches is provided below.
Knapp & Hartung Adjustment
By default, the test statistics of the individual coefficients in the model (and the corresponding confidence intervals) are based on the normal distribution, while the omnibus test is based on a chi-square distribution with $m$ degrees of freedom ($m$ being the number of coefficients tested). The Knapp and Hartung (2003) method (knha=TRUE
) is an adjustment to the standard errors of the estimated coefficients, which helps to account for the uncertainty in the estimate of the amount of (residual) heterogeneity and leads to different reference distributions. Individual coefficients and confidence intervals are then based on the t-distribution with $k-p$ degrees of freedom, while the omnibus test statistic then uses an F-distribution with $m$ and $k-p$ degrees of freedom ($p$ being the total number of model coefficients including the intercept if it is present). The Knapp and Hartung (2003) adjustment is only meant to be used in the context of random- or mixed-effects models.### load BCG vaccine data
data(dat.bcg)
### calculate log relative risks and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg,
data=dat.bcg, append=TRUE)
### random-effects model
rma(yi, vi, data=dat, method="REML")
### mixed-effects model with two moderators (absolute latitude and publication year)
rma(yi, vi, mods=cbind(ablat, year), data=dat, method="REML")
### using a model formula to specify the same model
rma(yi, vi, mods=~ablat+year, data=dat, method="REML")
### supplying the raw data directly to the function
rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, mods=cbind(ablat, year),
data=dat, measure="RR", method="REML")
### dummy coding of the allocation factor
alloc.random <- ifelse(dat$alloc == "random", 1, 0)
alloc.alternate <- ifelse(dat$alloc == "alternate", 1, 0)
alloc.systematic <- ifelse(dat$alloc == "systematic", 1, 0)
### test the allocation factor (in the presence of the other moderators)
### note: "alternate" is the reference level of the allocation factor
### note: the intercept is the first coefficient, so btt=c(2,3)
rma(yi, vi, mods=cbind(alloc.random, alloc.systematic, year, ablat),
data=dat, method="REML", btt=c(2,3))
### using a model formula to specify the same model
rma(yi, vi, mods=~factor(alloc)+year+ablat, data=dat, method="REML", btt=c(2,3))
Run the code above in your browser using DataLab