我使用 lmer 在 R 中运行了一个线性混合模型。我正在尝试可视化随机效应结构。为了生成图表,我使用了 print(dotplot(ranef(RT.model.4, condVar=T))[['part_no']])
其中 part_no
是来自混合模型的随机效应。它创建了这样的东西:
这太棒了。但是,我希望能够在图表中直观地分辨出我的两组参与者(正在讨论的随机效应)之间的差异。我有 A 组和 B 组。在我的数据集中,我有一列参与者类型,每一行都给出了 A 或 B 的值。
我想对图表进行颜色编码以显示 A 组和 B 组的参与者。或者更好的做法是创建两个单独的面板,每个面板一个。
任何有关如何执行此操作的建议将不胜感激。
最佳答案
这是一种使用 ggplot
而不是 lattice
(只是因为我更熟悉它)的方法,使用 ?dotplot.ranef 中的示例代码。 mer
.您需要将数据中的治疗组 与ranef
返回的随机效应分组变量相匹配。我看不出这是如何在 dotplot.ranef.mer
中自动完成的。
创建一个带有治疗组的小例子;每个受试者被分配到一个治疗组。
library(lme4)
library(ggplot2)
sleepstudy$trt = as.integer(sleepstudy$Subject %in% 308:340)
m = lmer(Reaction ~ trt + (1|Subject), sleepstudy)
将随机效应转换为数据框并匹配治疗组
dd = as.data.frame(ranef(m, condVar=TRUE), "Subject")
dd$trt = with(sleepstudy, trt[match(dd$grp, Subject)])
然后您可以按照自己的意愿绘制,比如使用 facet_
或为每个组分配一种颜色,或者...
ggplot(dd, aes(y=grp,x=condval, colour=factor(trt))) +
geom_point() + facet_wrap(~term,scales="free_x") +
geom_errorbarh(aes(xmin=condval -2*condsd,
xmax=condval +2*condsd), height=0)
ggplot(dd, aes(y=grp,x=condval)) +
geom_point() +
geom_errorbarh(aes(xmin=condval -2*condsd,
xmax=condval +2*condsd), height=0)+
facet_wrap(~trt)
关于r - 按组可视化混合模型中随机效应的方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62216692/