[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