如果不包括固定斜率,我通常不会包括随机斜率。看起来
predict.merMod
同意我的观点,因为它似乎只使用固定的效果来预测新的水平。文档中说“预测将使用以前未观测到的数据的无条件(总体水平)值”,但这些值似乎不是用模型规范估计的。
因此,我建议采用以下模型:
fit = lmer(y ~ x + (x|grp), data = d)
newdata = data.frame(x = 1:10, grp = 4)
predict(fit, newdata = newdata, allow.new.levels = TRUE)
# 1 2 3 4 5 6 7 8 9 10
#1.210219 2.200685 3.191150 4.181616 5.172082 6.162547 7.153013 8.143479 9.133945 10.124410
这与仅使用模型的固定效果部分相同:
t(cbind(1, newdata$x) %*% fixef(fit))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 1.210219 2.200685 3.19115 4.181616 5.172082 6.162547 7.153013 8.143479 9.133945 10.12441