如何为 lmer 模型结果绘制具有标准误差的预测值?
How to plot predicted values with standard errors for lmer model results?
我有一个移植实验,用于四个位置和四个基板(从每个位置获取)。我已经确定了每个位置和底物组合中每个种群的存活率。本实验重复三次。
我创建了一个 lmm 如下:
Survival.model <- lmer(Survival ~ Location + Substrate + Location:Substrate + (1|Replicate), data=Transplant.Survival,, REML = TRUE)
我想使用预测命令来提取预测,例如:
Survival.pred <- predict(Survival.model)
然后提取标准误差,以便我可以将它们与预测一起绘制以生成如下图所示的内容:
我知道如何使用标准的 glm(这就是我创建示例图的方式)执行此操作,但不确定我是否可以或应该使用 lmm 执行此操作。
我可以这样做吗?还是我作为线性混合模型的新用户缺少一些基本的东西?
我确实在 Stack Overflow 上找到了这个 post,但没有帮助。
Based on a comment from RHertel, maybe I should have phrased the
question: How do I plot model estimates and confidence intervals for
my lmer model results so that I can get a similar plot to the one I
have created above?
示例数据:
Transplant.Survival <- structure(list(Location = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Steninge", "Molle",
"Kampinge", "Kaseberga"), class = "factor"), Substrate = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L,
4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L), .Label = c("Steninge",
"Molle", "Kampinge", "Kaseberga"), class = "factor"), Replicate = structure(c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 3L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1",
"2", "3"), class = "factor"), Survival = c(1, 1, 1, 0.633333333333333,
0.966666666666667, 0.5, 0.3, 0.233333333333333, 0.433333333333333,
0.966666666666667, 0.866666666666667, 0.5, 0.6, 0.266666666666667,
0.733333333333333, 0.6, 0.3, 0.5, 0.3, 0.633333333333333, 0.9,
0.266666666666667, 0.633333333333333, 0.7, 0.633333333333333,
0.833333333333333, 0.9, 0.6, 0.166666666666667, 0.333333333333333,
0.433333333333333, 0.6, 0.9, 0.6, 0.133333333333333, 0.566666666666667,
0.633333333333333, 0.633333333333333, 0.766666666666667, 0.766666666666667,
0.0333333333333333, 0.733333333333333, 0.3, 1.03333333333333,
0.6, 1)), .Names = c("Location", "Substrate", "Replicate", "Survival"
), class = "data.frame", row.names = c(NA, -46L))
编辑:修复了函数/图形中的错误。
如果您喜欢用 CI 绘制估计值,您可能需要查看 sjPlot
包中的 sjp.lmer
函数。查看各种绘图类型的一些示例 here.
此外,arm
包提供了计算标准误差的函数(arm::se.fixef
和 arm::se.ranef
)
sjp.setTheme("forestgrey") # plot theme
sjp.lmer(Survival.model, type = "fe")
会给出以下剧情
我有一个移植实验,用于四个位置和四个基板(从每个位置获取)。我已经确定了每个位置和底物组合中每个种群的存活率。本实验重复三次。
我创建了一个 lmm 如下:
Survival.model <- lmer(Survival ~ Location + Substrate + Location:Substrate + (1|Replicate), data=Transplant.Survival,, REML = TRUE)
我想使用预测命令来提取预测,例如:
Survival.pred <- predict(Survival.model)
然后提取标准误差,以便我可以将它们与预测一起绘制以生成如下图所示的内容:
我知道如何使用标准的 glm(这就是我创建示例图的方式)执行此操作,但不确定我是否可以或应该使用 lmm 执行此操作。
我可以这样做吗?还是我作为线性混合模型的新用户缺少一些基本的东西?
我确实在 Stack Overflow 上找到了这个 post,但没有帮助。
Based on a comment from RHertel, maybe I should have phrased the question: How do I plot model estimates and confidence intervals for my lmer model results so that I can get a similar plot to the one I have created above?
示例数据:
Transplant.Survival <- structure(list(Location = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Steninge", "Molle",
"Kampinge", "Kaseberga"), class = "factor"), Substrate = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 3L, 3L, 4L, 4L, 4L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L,
4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L), .Label = c("Steninge",
"Molle", "Kampinge", "Kaseberga"), class = "factor"), Replicate = structure(c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 3L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1",
"2", "3"), class = "factor"), Survival = c(1, 1, 1, 0.633333333333333,
0.966666666666667, 0.5, 0.3, 0.233333333333333, 0.433333333333333,
0.966666666666667, 0.866666666666667, 0.5, 0.6, 0.266666666666667,
0.733333333333333, 0.6, 0.3, 0.5, 0.3, 0.633333333333333, 0.9,
0.266666666666667, 0.633333333333333, 0.7, 0.633333333333333,
0.833333333333333, 0.9, 0.6, 0.166666666666667, 0.333333333333333,
0.433333333333333, 0.6, 0.9, 0.6, 0.133333333333333, 0.566666666666667,
0.633333333333333, 0.633333333333333, 0.766666666666667, 0.766666666666667,
0.0333333333333333, 0.733333333333333, 0.3, 1.03333333333333,
0.6, 1)), .Names = c("Location", "Substrate", "Replicate", "Survival"
), class = "data.frame", row.names = c(NA, -46L))
编辑:修复了函数/图形中的错误。
如果您喜欢用 CI 绘制估计值,您可能需要查看 sjPlot
包中的 sjp.lmer
函数。查看各种绘图类型的一些示例 here.
此外,arm
包提供了计算标准误差的函数(arm::se.fixef
和 arm::se.ranef
)
sjp.setTheme("forestgrey") # plot theme
sjp.lmer(Survival.model, type = "fe")
会给出以下剧情