[英]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.