用 lmer 绘制个体和种群回归线
plot individual and population regression lines with lmer
我正在使用 cake
数据集并构建了以下模型
mod <- lmer(angle ~ recipe*temp + (1|replicate), data=cake)
newdat <- expand.grid(recipe=unique(cake$recipe),
temp=c(min(cake$temp),
max(cake$temp)))
然后我想为每个 replicate
分别绘制每个 recipe
的回归线(A
、B
和 C
)
ggplot(cake, aes(x=temp, y=angle, color=recipe)) +
geom_line(aes(y=predict(mod), group=replicate, size="Replicate")) +
geom_line(data=newdat, aes(y=predict(mod, re.form=~0, newdata=newdat), size="Population")) +
scale_size_manual(name="Predictions", values=c("Replicate"=0.5, "Population"=1))
我有两个问题。首先,Population
行 B
和 C
似乎不平行,即使我没有定义随机斜率模型。
其次,我无法使上面的代码绘制每个 replicate
被 recipe
分割的回归线。
要回答你的第一个问题,你的线不平行,因为你的公式中有 recipe
和 temp
之间的交互项。因此, 固定效应 具有不同的斜率(即 temp
的每单位变化 angle
的变化取决于 recipe
)。即使我们绘制一个简单的 lm
:
我们也可以看到这一点
library(ggplot2)
mod <- lm(angle ~ recipe * temp, data = cake)
newdat <- expand.grid(recipe=unique(cake$recipe),
temp=c(min(cake$temp),
max(cake$temp)))
newdat$angle <- predict(mod, newdata = newdat)
ggplot(cake, aes(temp, angle, color = recipe)) +
geom_point(position = position_jitter(width = 1)) +
geom_line(data = newdat) +
scale_y_continuous(limits = c(25, 40))
要回答第二个问题,您需要根据 replicate
和 recipe
的相互作用进行分组,以便为每个重复获得正确的彩色线条。您还需要为它们生成单独的 lm
行。最简单的方法是通过 geom_smooth
和 method = lm
:
ggplot(cake, aes(temp, angle, color = recipe)) +
geom_point(position = position_jitter(width = 1)) +
geom_smooth(aes(group = interaction(replicate, recipe)), se = FALSE, method = lm)
我正在使用 cake
数据集并构建了以下模型
mod <- lmer(angle ~ recipe*temp + (1|replicate), data=cake)
newdat <- expand.grid(recipe=unique(cake$recipe),
temp=c(min(cake$temp),
max(cake$temp)))
然后我想为每个 replicate
分别绘制每个 recipe
的回归线(A
、B
和 C
)
ggplot(cake, aes(x=temp, y=angle, color=recipe)) +
geom_line(aes(y=predict(mod), group=replicate, size="Replicate")) +
geom_line(data=newdat, aes(y=predict(mod, re.form=~0, newdata=newdat), size="Population")) +
scale_size_manual(name="Predictions", values=c("Replicate"=0.5, "Population"=1))
我有两个问题。首先,Population
行 B
和 C
似乎不平行,即使我没有定义随机斜率模型。
其次,我无法使上面的代码绘制每个 replicate
被 recipe
分割的回归线。
要回答你的第一个问题,你的线不平行,因为你的公式中有 recipe
和 temp
之间的交互项。因此, 固定效应 具有不同的斜率(即 temp
的每单位变化 angle
的变化取决于 recipe
)。即使我们绘制一个简单的 lm
:
library(ggplot2)
mod <- lm(angle ~ recipe * temp, data = cake)
newdat <- expand.grid(recipe=unique(cake$recipe),
temp=c(min(cake$temp),
max(cake$temp)))
newdat$angle <- predict(mod, newdata = newdat)
ggplot(cake, aes(temp, angle, color = recipe)) +
geom_point(position = position_jitter(width = 1)) +
geom_line(data = newdat) +
scale_y_continuous(limits = c(25, 40))
要回答第二个问题,您需要根据 replicate
和 recipe
的相互作用进行分组,以便为每个重复获得正确的彩色线条。您还需要为它们生成单独的 lm
行。最简单的方法是通过 geom_smooth
和 method = lm
:
ggplot(cake, aes(temp, angle, color = recipe)) +
geom_point(position = position_jitter(width = 1)) +
geom_smooth(aes(group = interaction(replicate, recipe)), se = FALSE, method = lm)