Viechtbauer, Wolfgang (SP)
2019-Mar-05 11:20 UTC
[Rd] Weird problem / bug with augPred() from nlme
Posted this to r-sig-mixed-models
(https://stat.ethz.ch/pipermail/r-sig-mixed-models/2019q1/027620.html) but this
might rather need to go to r-devel anyway, so reposting here:
I came across a weird problem / bug with augPred() from nlme (nlme_3.1-137).
Here is a reproducible example to illustrate the issue (tested on R 3.5.2 and
R-devel 2019-03-03 r76192):
library(nlme)
dat <- data.frame(id = c(1,1,1,2,3,3,4,4,4,4),
xi = c(1,2,3,1,1,2,1,2,3,4),
yi = c(2,1,4,2,3,2,5,4,6,8),
zi = c(rep("a",9), NA))
res1 <- lme(yi ~ xi, random = ~ 1 | id, data=dat)
sav1 <- augPred(res1, primary = ~ xi) # WORKS
dat$zi <- "a"
res2 <- lme(yi ~ xi, random = ~ 1 | id, data=dat)
sav2 <- augPred(res2, primary = ~ xi) # WORKS
dat$zi[10] <- NA
res3 <- lme(yi ~ xi, random = ~ 1 | id, data=dat)
sav3 <- augPred(res3, primary = ~ xi) # ERROR
The error message:
Error in `[[<-.data.frame`(`*tmp*`, nm, value = c(1L, 1L, 1L, 2L, 3L, :
replacement has 10 rows, data has 4
So, if 'zi' is a factor, then a missing value causes no problems (sav1).
Or if 'zi' is a character variable without any missings, then augPred()
also runs (sav2). But if 'zi' is a character variable and there is at
least one missing value, then augPred() fails (sav3).
This aside, why does 'zi' even play a role here? It isn't used at
all in the model fit.
Best,
Wolfgang
