首页 文章

如何获得lmer对象的置信区间?

提问于
浏览
3

我试图获得混合模型预测的置信区间 . 预测函数不输出任何置信区间 . 使用merTools包中的predictInterval函数建议的StackOverflow答案很少,以获得间隔,但这两个函数的预测估计值之间存在差异,我试图在下面的图中进行比较 . 有人可以告诉我这里我做错了什么吗?此外,我尝试构建的实际模型类似于下面的代码段中显示的模型,除了拦截之外我只有没有固定效果组件 .

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 回答

  • 2

    我无法隔离导致问题的 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

    这就是我们想要的 . (为了强调,红线代表原始模型规范的预测,即只有“固定”组件中的截距 . )

相关问题