[R-sig-ME] Predict for glmer

Marc Girondot m@rc_grt @end|ng |rom y@hoo@|r
Sun Sep 27 10:52:51 CEST 2020


Hi,

I try to understand exactly how mixed model is working. Let do this 
simple model with fake data:


library(lme4)

invlogit <- function(n) {1/(1 + exp(-n))}

d <- data.frame(A=c(10, 20, 10, 20, 30, 15, 17, 19, 20, 30, 20, 30, 21, 
23),
                 B=c(2, 3, 7, 9, 10, 8, 5, 7, 9, 10, 2, 3, 7, 8),
                 D=c(10, 11, 12, 13, 14, 10, 11, 12, 13, 14, 13, 12, 12, 
13),
                 R1=c("A", "A", "A", "A", "A", "A", "A", "B", "B", "B", 
"B", "B", "B", "B"),
                 R2=c("C", "C", "C", "D", "D", "D", "D", "E", "E", "E", 
"F", "F", "F", "F"))

m <- glmer(formula = cbind(A, B) ~ D + (1 | R1 / R2),
       data=d,
       family = binomial(link = "logit"))

It seems to work well (except the warning for boundary because probably 
I don't introduce enough data).

Let do a predict:

predict(m, type="response")

         1         2         3         4         5 6         7         
8         9        10        11
0.7706127 0.7665437 0.7624248 0.7502806 0.7459699 0.7629174 0.7587547 
0.7572462 0.7530161 0.7487368 0.7696229
        12        13        14
0.7736541 0.7736541 0.7696229

It is ok. Now I try to do the predict by hand to be sure that I 
understand how it works:

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

fixed <- model.matrix(~ D, data = d) %*% ef
random <- rowSums(model.matrix(~ R1, data = d) * er$R2[d$R2, ])
invlogit(fixed[, 1] + random)

         1         2         3         4         5         6 7         
8         9        10        11

0.7706127 0.7665437 0.7624248 0.7502806 0.7459699 0.7629174 0.7587547 
0.7523144 0.7480270 0.7436906 0.7809063
        12        13        14
0.7847953 0.7847953 0.7809063

The first 7 estimates are ok but not the last 7. So it is related to R1 
factor... but I don't understand why it is badly estimated.


If someone can help me...

Thanks a lot

Marc



More information about the R-sig-mixed-models mailing list