我已经使用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/