lmerTest::rand() ведет себя странно, когда имена переменных содержат '.'
У меня есть некоторый опыт работы с lme4, но сегодня я впервые попробовал lmerTest и был удивлен некоторыми результатами при использовании функции rand() для проверки случайных компонентов. (Я знаю, что это не рекомендуется авторам lme4!) При устранении неполадок, я думаю, я обнаружил некоторое нежелательное поведение: когда rand() видит случайный термин эффекта, имя переменной которого содержит точку, он, кажется, анализирует термин в несколько переменных., Конечно, они могут или не могут существовать в наборе данных, но, к сожалению, он не выдает ошибку, он просто дает странные результаты.
Вот MWE:
library(dplyr)
nsub <- 500
nvis <- 6
data <- data.frame(subjid = factor(sort(rep(c(1:nsub),nvis))),
visit = rep(c(1:nvis),nsub))
base <- filter(data, visit==1) %>%
select(subjid) %>%
mutate(baseage=rnorm(nsub, 40, 10)) %>%
merge(data, by="subjid") %>%
mutate(interval = ifelse(visit==1, 0, 2*(visit-1) + runif(nsub*nvis, 0, 1)),
age = baseage + interval,
ageverylong = age,
age.very.long = age,
y = 100 - 0.1*age + rnorm(nsub*nvis))
mod1 <- lmer(y ~ (age | subjid), data=base)
mod2 <- lmer(y ~ (ageverylong | subjid), data=base)
mod3 <- lmer(y ~ (age.very.long | subjid), data=base)
summary(mod1) # These three give the same results (so it's not an lme4 problem)
summary(mod2)
summary(mod3)
rand(mod1) # The top two are the same
rand(mod2)
rand(mod3) # But this one is different