[R-sig-ME] What is the appropriate zero-correlation parameter model for factors in lmer?
Maarten Jung
M@@rten@Jung @ending from m@ilbox@tu-dre@den@de
Thu May 17 12:43:29 CEST 2018
Dear list,
When one wants to specify a lmer model including variance components but no
correlation parameters for categorical predictors (factors) afaik one has
to convert the factors to numeric covariates or use lme4::dummy(). Until
recently I thought m2a (or equivalently m2b using the double-bar syntax)
would be the correct way to specify such a zero-correlation parameter model.
But in this thread [1] Rune Haubo Bojesen Christensen pointed out that this
model does not make sense to him. Instead he suggests m3 as an appropriate
model.
I think this is a *highly relevant difference* for everyone who uses
factors in lmer and therefore I'm bringing up this issue again. But maybe
I'm mistaken and just don't get what is quite obvious for more experienced
mixed modelers.
Please note that the question is on CrossValidated [2] but some consider it
as off-topic and I don't think there will be an answer any time soon.
So here are my questions:
How should one specify a lmm without correlation parameters for factors and
what are the differences between m2a and m3?
Is there a preferred model for model comparison with m4 (this model is also
discussed here [3])?
library("lme4")
data("Machines", package = "MEMSS")
d <- Machines
contrasts(d$Machine) # default coding: contr.sum
m1 <- lmer(score ~ Machine + (Machine | Worker), d)
c1 <- model.matrix(m1)[, 2]
c2 <- model.matrix(m1)[, 3]
m2a <- lmer(score ~ Machine + (1 | Worker) + (0 + c1 | Worker) + (0 + c2 |
Worker), d)
m2b <- lmer(score ~ Machine + (c1 + c2 || Worker), d)
VarCorr(m2a)
Groups Name Std.Dev.
Worker (Intercept) 5.24354
Worker.1 c1 2.58446
Worker.2 c2 3.71504
Residual 0.96256
m3 <- lmer(score ~ Machine + (1 | Worker) + (0 + dummy(Machine, "A") |
Worker) +
(0 + dummy(Machine, "B") |
Worker) +
(0 + dummy(Machine, "C") |
Worker), d)
VarCorr(m3)
Groups Name Std.Dev.
Worker (Intercept) 3.78595
Worker.1 dummy(Machine, "A") 1.94032
Worker.2 dummy(Machine, "B") 5.87402
Worker.3 dummy(Machine, "C") 2.84547
Residual 0.96158
m4 <- lmer(score ~ Machine + (1 | Worker) + (1 | Worker:Machine), d)
[1] https://stat.ethz.ch/pipermail/r-sig-mixed-models/2018q2/026775.html
[2] https://stats.stackexchange.com/q/345842/136579
[3] https://stats.stackexchange.com/q/304374/136579
Best regards,
Maarten
[[alternative HTML version deleted]]
More information about the R-sig-mixed-models
mailing list