R语言 如何在ggplot中绘制具有95% CI误差线的二项广义混合效应模型?

wwodge7n  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(220)

我刚刚完成了模型选择,并且有一个二项广义混合效应模型,我想在ggplot中绘制。为了了解上下文,我进行了模型选择,以查看哪些因素可以预测出勤率。我查看的因素是Day(相对于第0天,范围从-30到-2),Sex(M或F),以及Sex:Day交互作用。我还包括几个随机效应,包括AgeClass(年轻,中等或老年),Year(日历年,2014-2018)和Plastic(个体ID,用于校正重复样本)。
以下是我的相关信息和代码:
数据(csv文件):https://ufile.io/o0ns03ho
验证码:

library(lme4)

data <- read.csv("test2.csv")

m1 <- glmer(
  Attendance ~ Day + Sex + Sex:Day + (1|AgeClass) + (1|Year) + (1|Plastic), 
  data = data, 
  family = binomial(link = "logit")
)

summary(m1)

基于beta的估计值,我希望图表看起来像这样:

我希望男性比女性更频繁地参加,并且男性的斜率与女性不同。我还希望能够绘制男性和女性的95% CI,如图中实线上方和下方的虚线所示。
我只知道ggplot的基本知识,所以任何建议都是有帮助的。我不需要精确的代码,但在与模型和ggplot相关的功能方面,我非常感激。
谢谢大家!

6yt4nkrj

6yt4nkrj1#

sjPlot::plot_model()是一个用于绘制模型结果的开箱即用函数:

library(lme4)
library(sjPlot)

# example model
m1 <- glmer(
  r2 ~ Anger * Gender + btype + situ + (1|id) + (1|item), 
  family = binomial,
  data = VerbAgg
)

plot_model(m1, type = "pred", terms = c("Anger", "Gender"))

结果是一个ggplot,因此您可以使用ggplot2函数对其进行调整。

library(ggplot2)
library(scales)

plot_model(m1, type = "pred", terms = c("Anger", "Gender")) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(labels = percent, limits = c(0, 1)) +
  labs(x = "Trait Anger", y = "Predicted Probability of Response", title = NULL) +
  theme_light()

相关问题