在R中使用ggplot2绘制混合效应模型估计值的方法是什么?

3

我有一个2x2x2的因子设计,其中一个因子是随机效应。数据(dat)如下:

  colour  size  level   marbles set
  Blue    Large Low     80      1
  Blue    Large High    9       2
  Blue    Small Low     91      1
  Blue    Small High    2       1 
  White   Large Low     80      2
  White   Large High    9       1
  White   Small Low     91      2
  White   Small High    2       1

我想绘制两个模型:

mod1 <- lmer(marbles ~ colour + size + level + colour:size + colour:level + size:level + (1|set), data = dat)

mod2 <- lmer(marbles ~ colour + size + level +(1|set), data = dat)

我通常使用以下代码来制作图表:

pd <- position_dodge(0.82)
  ggplot(dat, aes(x=colour, y=marbles, fill = level)) + theme_bw() + 
  stat_summary(geom="bar", fun.y=mean, position = "dodge") +  
  stat_summary(geom="errorbar", fun.data=mean_cl_boot, position = pd)+
  + facet_grid(~size)

我不确定如何用模型估计的系数替换术语。有什么想法可以在gpplot2中绘制最终模型的估计值?如果有人可以建议一个简单的方法来打印模型估计值,那将非常有帮助。

此外,是否有任何方法可以让ggplot2在图形顶部显示具有显着交互的条形图?


你到底想要输出什么样的内容呢?你是想为不同系数值绘制出预测的弹珠数量图表吗?还是想实际打印出模型中的系数呢? - MrFlick
我想绘制模型预测的弹珠数量(即模型估计值)。但如果您能告诉我一种简单的方法来打印模型系数,那将会很有帮助。目前我使用 summary(mod) - Share
1个回答

3
这里有一种绘制分层设计中线性混合效应模型预测的方法。您可以使用fixef(...)coef(summary(...))获取固定效应系数估计值。您可以使用ranef(...)获取随机效应估计值。
library(lme4)
mod1 <- lmer(marbles ~ colour + size + level + colour:size + colour:level + size:level + (1|set), data = dat)
mod2 <- lmer(marbles ~ colour + size + level +(1|set), data = dat)

dat$preds1 <- predict(mod1,type="response")
dat$preds2 <- predict(mod2,type="response")

dat<-melt(dat,1:5)

pred.plot <- ggplot() +
  geom_point(data = dat, aes(x = size, y = value, 
                            group = interaction(factor(level),factor(colour)),
                            color=factor(colour),shape=variable)) +
  facet_wrap(~level) +
  labs(x="Size",y="Marbles")

enter image description here

这些是针对您在帖子中提供的数据的固定效应预测。颜色的点会有重叠,但这将取决于模型中包含的数据。您选择哪种组合的因素来通过轴、外观或形状表示可能会改变图表的视觉强调。


我有多个预测器,这对它还有效吗?此外,我的数据没有连续的轴。 - Share
我更新了答案,以更准确地回答你的问题。 - gregor-fausto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接