[R] Use predict() after lmer() (library lme4)

Marc Girondot marc_grt at yahoo.fr
Wed Feb 3 08:08:39 CET 2016

```Bonjour, (don't worry, after I will write in English [at least I will
try ;) ])

I try to understand better mixed models and then I have generated data
and I try to understand how the fixed and the random effects are used in
predict(). I understand when the random effect is of the form (1 | rf]
but I don't understand for the form (rf1 | rf2]. Let do an example. The
last formula does not give the same than predict().

Thanks if someone could explain what formula use to reproduce the
predict() results.

Marc

# 1/ Generate data in a data.frame, 1 response (number), one effect
(effect) and two factors (sector and beach) that I want use as random
effect. These two factors are hierarchical beach within sector

Sector <- c(rep("I", 100), rep("II", 100))
Beach <- c(
sample(c("A", "B", "C", "D", "E"), 100, replace=TRUE),
sample(c("F", "G"), 100, replace=TRUE)
)

number <- rnorm(200, 10, 1)

# Sector effect
number[1:100] <- number[1:100] +0.1
number[101:200] <- number[101:200] +0.5

# beach effect
beach.value <- 1:7
names(beach.value) <- LETTERS[1:7]
number <- number + unname(beach.value[Beach])

dataF <- data.frame(number=number, effect= number/10+runif(200, 0, 2),
Sector=Sector, Beach=Beach)

plot(dataF\$number, dataF\$effect)

##############
library("lme4")
##############

##############
# 2/ Random effect is (1 | Beach). I can reproduce the predict()
##############

out1 <- lmer(formula = number ~ effect + (1 | Sector) , data=dataF)
ef <- fixef(out1)
er <- ranef(out1)

er\$Sector[dataF\$Sector, "(Intercept)"]
)

##############
# 3/ Random effect is (1 | Beach) + (1 | Sector). I can reproduce the
predict()
##############

out2 <- lmer(formula = number ~ effect + (1 | Sector)  + (1 | Beach),
data=dataF)

ef <- fixef(out2)
er <- ranef(out2)

er\$Sector[dataF\$Sector, "(Intercept)"] +
er\$Beach[dataF\$Beach, "(Intercept)"]
)

##############
# 4/ Random effect if (Sector | Beach). I don't understand how to
reproduce the predict()
##############

out3 <- lmer(formula = number ~ effect + (Sector | Beach), data=dataF)