[R-meta] multivariate or mixed model approach

Viechtbauer Wolfgang (SP) wolfgang.viechtbauer at maastrichtuniversity.nl
Tue Aug 8 19:00:04 CEST 2017


Dear Juan,

As far as I am concerned, both approaches are fine. But simply picking the approach that yields the smaller SE for the average slope is not. Just choose one a priori and go with it (although a bit too late for that now).

One thing with both approaches is that they assume that the error variance is the same across studies. That may not be true. If you don't want to make that assumption, then you would want to set 'pool=FALSE' for lmList() (assuming that this is what you used in the two-stage approach). lmer() does not allow you to fit a model with different error variances across studies, but lme() (from nlme) can, using lme(..., weights=varIdent(form = ~ 1 | study)'.

And yes, your code for the 'moderator analysis' looks fine.

Best,
Wolfgang

-- 
Wolfgang Viechtbauer, Ph.D., Statistician | Department of Psychiatry and    
Neuropsychology | Maastricht University | P.O. Box 616 (VIJV1) | 6200 MD    
Maastricht, The Netherlands | +31 (43) 388-4170 | http://www.wvbauer.com    

-----Original Message-----
From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces at r-project.org] On Behalf Of Juan Pablo Edwards Molina
Sent: Tuesday, August 08, 2017 15:59
To: r-sig-meta-analysis at r-project.org
Subject: [R-meta] multivariate or mixed model approach

Dear list,

I need to estimate the intercept and slope of two variables relationship
(across 38 studies), let's say: y ~ x.

Based on this tutorial (
http://www.metafor-project.org/doku.php/tips:two_stage_analysis#mixed-effects_model_approach
)

I don't know which of the two possible approaches is most suitable:

- Two-stage ultivariate approach: Estimating (est) at first stage each
study terms (intercept-slope), var-cov  matrix (V) and then

mv1 <- rma.mv(est, V, mods = ~ term -1, random = ~ term | study,
               struct="UN", data=df1, method="ML")

with this output:

> print(mv1, digits=3)

Multivariate Meta-Analysis Model (k = 76; method: ML)

Variance Components:

outer factor: study (nlvls = 38)
inner factor: term  (nlvls = 2)

                estim     sqrt  k.lvl  fixed  level
tau^2.1    424427.426  651.481     38     no     b0
tau^2.2       221.540   14.884     38     no     b1

    rho.b0  rho.b1    b0  b1
b0       1  -0.020     -  no
b1  -0.020       1    38   -

Test for Residual Heterogeneity:
QE(df = 74) = 14135.101, p-val < .001

Test of Moderators (coefficient(s) 1:2):
QM(df = 2) = 1070.927, p-val < .001

Model Results:

        estimate       se    zval   pval     ci.lb     ci.ub
termb0  3475.110  107.220  32.411  <.001  3264.963  3685.257  ***
termb1   -17.733    2.620  -6.768  <.001   -22.869   -12.598  ***

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

========================================================

or simply go into mixed model approach:

library(lme4)

mix1  <- lmer(y ~ x + ( x |study), data=df, REML=F)

with this output

> summary(mix1)
Linear mixed model fit by maximum likelihood  ['lmerMod']
Formula: yield ~ sev + (sev | study)
   Data: longs

     AIC      BIC   logLik deviance df.resid
 20196.8  20228.3 -10092.4  20184.8     1423

Scaled residuals:
    Min      1Q  Median      3Q     Max
-4.6511 -0.5715  0.0155  0.5255  3.7780

Random effects:
 Groups   Name        Variance Std.Dev. Corr
 study    (Intercept) 422064.2 649.66
          sev            159.4  12.63   0.04
 Residual              65708.3 256.34
Number of obs: 1429, groups:  study, 38

Fixed effects:
            Estimate Std. Error t value
(Intercept) 3456.186    106.967   32.31
sev          -16.460      2.328   -7.07

Correlation of Fixed Effects:
    (Intr)
sev -0.032

================================================================

The mixed model approach yields lower SE of the effects: is it a good point
to decide among both approaches?

I'm also interested on test moderator variables than can improve the models:

mv2 <- rma.mv(est, V, mods = ~ term + term:year - 1,
               random = ~ term | study,
               struct="UN", data=df1, method="ML")

Is it right under multivariate approach?

or

mix2  <- lmer(y ~ x * year + (x|study), data=df, REML=T)

I really appreciate your advices!

*Juan Edwards​*


More information about the R-sig-meta-analysis mailing list