如何为lmer对象获取置信区间?

5
我正在尝试获取混合模型预测的置信区间。predict函数不会输出任何置信区间。一些StackOverflow答案建议使用merTools包中的predictInterval函数来获取区间,但是这两个函数的预测估计存在差异,我正在尝试在下面的图中进行比较。请问有人能够友好地告诉我这里出了什么问题吗?另外,我正在尝试构建的实际模型与下面代码段中所示的模型相似,其中除截距外没有固定效应分量。
library(merTools)
library(lme4)

dat <- iris
mod <- lmer(Sepal.Length ~ 1 + (1 + Sepal.Width + Petal.Length + 
                                  Petal.Width|Species), data=dat)

c1 <- predict(mod, dat)
c2 <- predictInterval(mod, dat)

plot_data <- cbind(c1, c2)
plot_data$order <- c(1:nrow(plot_data))

library(ggplot2)
ggplot(plot_data) + geom_line(aes(x=order, y=c1), color='red') + 
  geom_ribbon(aes(x=order, ymin=lwr, ymax=upr), color='blue', alpha=0.2) +  
  geom_line(aes(x=order, y=fit), color='blue')

红线表示预测的 'c1',蓝线表示预测的 'c2'。

enter image description here

1个回答

3

我还无法确定是predictInterval的哪个部分导致了问题,但解决你的具体问题的方法是注意,如果你想要组间变化的截距和斜率,则可以拟合以下等效模型

mod2 <- lmer(Sepal.Length ~ 1 + Sepal.Width + Petal.Length + Petal.Width + 
                           (1 + Sepal.Width + Petal.Length + Petal.Width|Species), 
             data = dat)

现在,如果我们将 predictInterval 应用于这个拟合模型。
c2 <- predictInterval(mod2, dat)

保留你的示例,我们得到以下绘图:

enter image description here

这正是我们想要的。(强调一下,红线代表原始模型规范中“固定”组件仅包含截距的预测。)

感谢@WeihuangWong的回复。正如我在问题中提到的,我的模型没有固定效应,并且该函数似乎无法很好地处理仅具有随机效应的模型的预测。 - magnum
是的,我的观点是这两个规范是等价的:我的模型中的每个变量都是一个随机效应,即使它们出现在规范的“固定”和“随机”组件中。 - Weihuang Wong

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