如何在 R ggplot2 中通过交互拟合混合效应模型回归?

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

我正在使用的数据集有一个交互项。我想用 x 轴中的交互项和 y 轴中的 y.var 来拟合模型。我尝试按照 this 示例进行操作,但并没有深入了解如何在 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)