Learn R Programming

metafor (version 0.5-0)

rma.uni: Meta-Analysis via the General Linear (Mixed-Effects) Model

Description

Function to fit the meta-analytic fixed- and random-effects models with or without moderators via the general linear (mixed-effects) model. See the documentation of the metafor-package for more details on these models.

Usage

rma.uni(yi, vi, sei, ai, bi, ci, di, n1i, n2i, m1i, m2i, sd1i, sd2i, 
        xi, mi, ri, ni, mods=NULL, data=NULL, 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=NULL, 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())

Arguments

yi
vector of length $k$ with the observed effects sizes or outcomes. See Details.
vi
vector of length $k$ with the corresponding sampling variances. See Details.
sei
vector of length $k$ with the corresponding standard errors. See Details.
ai
see below and the documentation of the escalc function for more details.
bi
see below and the documentation of the escalc function for more details.
ci
see below and the documentation of the escalc function for more details.
di
see below and the documentation of the escalc function for more details.
n1i
see below and the documentation of the escalc function for more details.
n2i
see below and the documentation of the escalc function for more details.
m1i
see below and the documentation of the escalc function for more details.
m2i
see below and the documentation of the escalc function for more details.
sd1i
see below and the documentation of the escalc function for more details.
sd2i
see below and the documentation of the escalc function for more details.
xi
see below and the documentation of the escalc function for more details.
mi
see below and the documentation of the escalc function for more details.
ri
see below and the documentation of the escalc function for more details.
ni
see below and the documentation of the escalc function for more details.
mods
an optional argument to include one or more moderators in the model. A single moderator can be given as a vector of length $k$ specifying the values of the moderator. Multiple moderators are specified by giving a matrix with $k$ rows and $p'$ columns.
data
an optional data frame containing the variables given to the arguments above.
intercept
logical, indicating whether an intercept term should be added to the model (default is TRUE).
slab
an optional vector with unique labels for the $k$ studies.
subset
an optional vector indicating the subset of studies that should be used for the analysis. This can be a logical vector of length $k$ or a numeric vector indicating the indices of the observations to include.
measure
a character string indicating the type of data supplied to the function. When measure="GEN" (default), the observed effect sizes or outcomes and corresponding sampling variances (or standard errors) should be supplied to the function via the
add
see the documentation of the escalc function.
to
see the documentation of the escalc function.
vtype
see the documentation of the escalc function.
method
a character string specifying whether a fixed- or a random/mixed-effects model should be fitted. A fixed-effects model (with or without moderators) is fitted when using method="FE". Random/mixed-effects models are fitted by setting meth
weighted
logical indicating whether weighted (default) or unweighted least squares should be used to fit the model.
level
a numerical value between 0 and 100 specifying the confidence interval level (default is 95).
digits
an integer specifying the number of decimal places to which the printed results should be rounded (default is 4).
btt
an optional vector of indices specifying which coefficients to include in the omnibus test of moderators. See Details.
tau2
an optional numerical value to specify the amount of (residual) heterogeneity in a random- or mixed-effects model (instead of estimating it). Useful for sensitivity analyses (e.g., for plotting results as a function of $\tau^2$).
knha
logical specifying whether the method by Knapp and Hartung (2003) should be used for adjusting test statistics and confidence intervals (default is FALSE). See Details.
control
optional list of control values for the iterative estimation algorithms. Defaults to an empty list, which means that default values are defined inside the function. See Note.

Value

  • An object of class c("rma.uni", "rma"). The object is a list containing the following components:
  • bestimated coefficients of the model.
  • sestandard errors of the coefficients.
  • zvaltest statistics of the coefficients.
  • pvalp-values for the test statistics.
  • ci.lblower bound of the confidence intervals for the coefficients.
  • ci.ubupper bound of the confidence intervals for the coefficients.
  • vbvariance-covariance matrix of the estimated coefficients.
  • tau2estimated amount of (residual) heterogeneity. Always 0 when method="FE".
  • se.tau2estimated standard error of the estimated amount of (residual) heterogeneity when using ML or REML estimation (NA otherwise).
  • knumber of outcomes included in the model fitting (equal to length(yi) unless subset was used or if there are missing data).
  • pnumber of coefficients in the model (including the intercept).
  • mnumber of coefficients included in the omnibus test of coefficients.
  • QEtest statistic for the test of (residual) heterogeneity.
  • QEpp-value for the test of (residual) heterogeneity.
  • QMtest statistic for the omnibus test of coefficients.
  • QMpp-value for the omnibus test of coefficients.
  • I2value of $I^2$ (only for the random-effects model; NA otherwise).
  • int.onlylogical that indicates whether the model only includes an intercept.
  • yi, vi, Xthe vector of outcomes, the corresponding sampling variances, and the design matrix of the model.
  • fit.statsa list with the log likelihood, deviance, AIC, and BIC values under the unrestricted and restricted likelihood.
  • ...some additional elements/values.
  • The results of the fitted model are neatly formated and printed with the print.rma.uni function. If you also want the fit statistics, use summary.rma (or use the fitstats.rma function to extract them). Predicted/fitted values can be obtained with predict.rma.uni 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. A confidence interval for the amount of (residual) heterogeneity in the random/mixed-effects model can be obtained with cint.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. Other assessor functions include coef.rma, vcov.rma, logLik.rma, and hatvalues.rma.uni.

Details

Specifying the Data The function can be used in conjunction with any of the usual effect size or outcome measures used in meta-analyses (e.g., log odds ratios, log risk ratios, risk differences, mean differences, standardized mean differences, raw correlation coefficients, correlation coefficients transformed with Fisher's r-to-z transformation, and so on). Simply supply the observed outcomes via the yi argument and the corresponding sampling variances via the vi argument (or supply the standard errors, the square root of sampling variances, via the sei argument). Alternatively, the function can automatically calculate many effect size or outcome measures 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:
  • "HS"= Hunter-Schmidt estimator
  • "HE"= Hedges estimator
  • "DL"= DerSimonian-Laird estimator
  • "SJ"= Sidik-Jonkman estimator
  • "ML"= maximum-likelihood estimator
  • "REML"= restricted maximum-likelihood estimator
  • "EB"= empirical Bayes estimator.
One or more moderators can be included in these models via the 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 a matrix with $k$ rows and $p'$ columns (e.g., using mods = cbind(mod1, mod2, mod3), where mod1, mod2, mod3 correspond to the names of the variables for the three moderator variables). 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. The intercept is automatically included in the model, unless intercept=FALSE is used. Omnibus Test of Parameters In models with more than one independent variable, an omnibus test of all the regression coefficients is conducted that excludes the intercept (the first coefficient) if the option intercept=TRUE is used (which is the default). If intercept=FALSE, then the omnibus test includes all of the coefficients in the model. Alternatively, one can 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. 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 have to do the dummy coding yourself or use the model.matrix function to do the coding for you. An example is shown 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 ($p$ being the total number of coefficients in the model), while the omnibus test statistic then uses an F-distribution with $m$ and $k-p$ degrees of freedom. The Knapp and Hartung (2003) method is only meant to be used in the context of random- or mixed-effects models.

References

DerSimonian, R. & Laird, N. (1986) Meta-analysis in clinical trials. Controlled Clinical Trials, 7, 177--188. Harville, D. A. (1977) Maximum likelihood approaches to variance component estimation and to related problems. Journal of the American Statistical Association, 72, 320--338. Hedges, L. V. (1983) A random effects model for effect sizes. Psychological Bulletin, 93, 388--395. Hedges, L. V. & Olkin, I. (1985) Statistical methods for meta-analysis. San Diego, CA: Academic Press. Hunter, J. E. & Schmidt, F. L. (1990). Methods of meta-analysis: Correcting error and bias in research findings. Newbury Park, CA: Sage. Jennrich, R. I. & Sampson, P. F. (1976) Newton-Raphson and related algorithms for maximum likelihood variance component estimation. Technometrics, 18, 11--17. Knapp, G. & Hartung, J. (2003) Improved tests for a random effects meta-regression with a single covariate. Statistics in Medicine, 22, 2693--2710. Morris, C. N. (1983) Parametric Empirical Bayes inference: Theory and applications (with discussion). Journal of the American Statistical Association, 78, 47--65. Raudenbush, S. W. (1994) Random effects models. In H. C. Cooper & L. V. Hedges (Eds.), The handbook of research synthesis (pp. 301--321). New York: Russell Sage Foundation. Sidik, K. & Jonkman, J. N. (2005a) A note on variance estimation in random effects meta-regression. Journal of Biopharmaceutical Statistics, 15, 823--838. Sidik, K. & Jonkman, J. N. (2005b) Simple heterogeneity variance estimation for meta-analysis. Journal of the Royal Statistical Society, Series C, 54, 367--384. Viechtbauer, W. (2005) Bias and efficiency of meta-analytic variance estimators in the random-effects model. Journal of Educational and Behavioral Statistics, 30, 261--293.

Examples

Run this code
### load BCG vaccine data
data(dat.bcg)

### calculate log risk rates and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
dat.bcg$yi <- dat$yi
dat.bcg$vi <- dat$vi

### mixed-effects model with two moderators (absolute latitude and publication year)
rma(yi, vi, mods=cbind(ablat, year), data=dat.bcg, 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.bcg, measure="RR", method="REML")

### dummy coding of the allocation factor
alloc.random     <- ifelse(dat.bcg$alloc == "random",     1, 0)
alloc.alternate  <- ifelse(dat.bcg$alloc == "alternate",  1, 0)
alloc.systematic <- ifelse(dat.bcg$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.bcg, method="REML", btt=c(2,3))

### use model.matrix() to code the factor and set up the design matrix
### careful: X already includes the intercept, so need to use intercept=FALSE
X <- model.matrix(~ factor(alloc) + year + ablat, data=dat.bcg)
rma(yi, vi, mods=X, intercept=FALSE, data=dat.bcg, method="REML", btt=c(2,3))

Run the code above in your browser using DataLab