繁体   English   中英

如何在 R ggplot2 中拟合具有交互作用的混合效应模型回归?

[英]How to fit a mixed effects model regression with interaction in R ggplot2?

我正在使用的数据集有一个交互项。 我想用 x 轴上的交互项和 y 轴上的y.var来拟合模型。 我尝试按照这个示例进行操作,但对于如何在 ggplot2 中复制它并没有走得太远(即绘图样式功能不再起作用..所以我不知道如何复制结果)。

temp <- rnorm(100, 2,1)set.seed(111)
temp <- rnorm(100, 3,1)
rainfall <- rnorm(100,5,1)
y.var <- rnorm(100, 2,1)
site <- rep(c("A","B","C","D"), each = 25)     

df <- data.frame(temp, rainfall, y.var, site)
df$site <- as.factor(as.character(df$site))

mod <- lmer(y.var ~ temp * rainfall + (1|site), data  = df)
summary(mod)

如果您想直接在 ggplot 中绘制模型而不是使用扩展包,则需要生成一个预测数据框来绘制。 这样做的好处是您还可以在绘图中包含原始数据点。

由于 y 轴上有y.var ,因此您只剩下一个轴来绘制两个固定效应变量。 这意味着您需要为 x 轴选择降雨量或温度,并用另一种美学(例如颜色)来表示另一个变量。 在本例中,我将使用温度作为 x 轴。 显然,为了使情节具有可解释性,我们需要限制我们预测的降雨“切片”的数量。 这里我将使用 5。

此处可以看到相互作用效应,因为随着降雨量的增加,线的斜率会发生变化。

library(geomtextpath)
library(lme4)

mod <- lmer(y.var ~ temp * rainfall + (1|site), data  = df)

newdf <- expand.grid(temp = seq(min(df$temp), max(df$temp), length = 100),
                     rainfall = seq(min(df$rainfall), max(df$rainfall), 
                                    length = 5))

newdf$y.var <- predict(mod, newdata = newdf)

ggplot(newdf, aes(x = temp, y = y.var, group = rainfall)) +
  geom_point(data = df, aes(shape = site, color = rainfall)) +
  geom_textline(aes(color = rainfall, label = round(rainfall, 2)), 
                hjust = 0.95) +
  scale_color_gradient(low = 'navy', high = 'red4') +
  theme_light(base_size = 16)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM