lmer:针对人口水平的预测触发错误。

7

我希望使用线性混合模型,并在人群水平上进行预测(即仅使用固定效应,将随机效应替换为0)。

示例模型:

require(lme4)

fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
summary(fm1)
# values for prediction:
newx <- seq(min(sleepstudy$Days), max(sleepstudy$Days))

我尝试了几种人口水平的预测方法,但它们都失败了:
pred <- predict(fm1, newdata = data.frame(Days = newx), allow.new.levels = TRUE)
# Error: couldn't evaluate grouping factor Subject within model frame: try adding grouping factor to data frame explicitly if possible

pred <- predict(fm1, newdata = data.frame(Days = newx, Subject = NA), allow.new.levels = TRUE)
# Error: Invalid grouping factor specification, Subject

pred <- predict(fm1, newdata = data.frame(Days = newx, Subject = as.factor(NA)), allow.new.levels = TRUE)
# Error: Invalid grouping factor specification, Subject

我试图寻找适当的预测方法的手册,但我不知道应该怎么做?我尝试查看help(package = "lme4") ,找到的最接近的函数是predict.merMod (虽然模型fm1的类是lmerMod而不是merMod)。?predict.merMod读取:

allow.new.levels (logical) 如果为FALSE(默认),则在newdata中检测到任何新级别(或NA值)都将触发错误;如果为TRUE,则预测将使用先前未观察到的级别(或NA)的无条件(人口水平)值。

它明确表示“或NA”,但显然并非如此!

  1. 我是否在查看正确的方法帮助页面?如果不是,什么是正确的方法?
  2. 如何使预测在人口水平上起作用?
1个回答

9

您需要查找 re.form

re.form: 基于随机效应的公式来进行条件处理。如果为“NULL”,则包括所有随机效应;如果为“NA”或“~0”,则不包括任何随机效应。

require(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
newx <- seq(min(sleepstudy$Days), max(sleepstudy$Days))
predict(fm1, newdata=data.frame(Days=newx), re.form=NA)
##        1        2        3        4        5        6        7        8 
## 251.4051 261.8724 272.3397 282.8070 293.2742 303.7415 314.2088 324.6761 
##        9       10 
## 335.1434 345.6107 

关于你的其他问题:

  • merMod 是一个“超类”,包括线性模型 (lmerMod) 和广义线性模型 (glmerMod): 参见 ?"merMod-class"
  • 你的第二和第三次尝试可能本应该成功,然而 allow.new.levels 是为偶尔出现 NA 值的情况设计的,不是所有的 NA 值 ... predict(fm1, newdata = data.frame(Days = newx, Subject = "a"), allow.new.levels = TRUE) 可以工作。看起来代码检测到一个全部是 NA 的列,并将其解释为上游出了问题 - 这可以在代码中修复,但似乎不太高优先级,因为存在 re.form

1
谢谢Ben!可能是帮助文档中的措辞让我感到困惑:“... 条件于。”我不是母语为英语的人,请问这是什么意思?也许这只是一些随机效应的特定情况的英语措辞?还是说在lmer或统计学本身中有一些“条件”概念?我不知道这意味着什么,所以我可能忽略了它。 - Tomas
2
"Conditioning on" 在统计学术语中表示在预测时考虑某个变量的取值。 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接