【问题标题】:Visualising variance from random effects in a mixed model by group按组可视化混合模型中随机效应的方差
【发布时间】:2020-09-24 17:45:37
【问题描述】:

我使用 lmer 在 R 中运行了一个线性混合模型。我正在尝试可视化随机效应结构。为了生成图表,我使用了print(dotplot(ranef(RT.model.4, condVar=T))[['part_no']]),其中part_no 是混合模型的随机效应。它创建了这样的东西:

这很棒。但是,我希望能够在图表中直观地分辨出我的两组参与者(正在讨论的随机效应)之间的差异。我有 A 组和 B 组。在我的数据集中,我有一列用于参与者类型,并且对于每一行,它给出 A 或 B 的值。

我想对图表进行颜色编码以显示来自 A 组和 B 组的参与者。或者更好的是创建两个单独的面板,每个组一个。

非常感谢任何有关如何执行此操作的建议。

【问题讨论】:

  • 提供一个(小)有代表性的样本数据集可能很有​​用。

标签: r graphics lme4 mixed-models


【解决方案1】:

这是一种使用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)

【讨论】:

    【解决方案2】:

    您应该能够在dotplot() 中使用groups= 选项。假设您的数据位于名为 df 的数据框中,组变量位于 group 中,您可以使用

    print(dotplot(ranef(RT.model.4, condVar=T), groups=df$group)[['part_no']])
    

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 2018-06-24
      • 2018-05-10
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多