当变量名包含'时,lmerTest :: rand()表现得很奇怪。'

时间:2018-03-14 19:46:36

标签: r lme4 lmertest

我对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

0 个答案:

没有答案