假设我有一个数据集,结果为 y,协变量为 x 和 z,例如:
N = 100
x = rnorm(N)
z = rnorm(N)
y = 3*x + 2*z + rnorm(N)
dataset = data.frame(x=x, z=z, y=y)
对于 y 对 x 的单变量回归,我可以获得具有置信区间的图,如下所示:
ggplot(dataset) +
geom_point(aes(x=x, y=y)) +
stat_smooth(method='lm', formula = y~x)
问题:对于 y 在 x 和 z 上的多元回归,我怎样才能得到相同的图,其中直线对应于特定的 z 值(比如,z=0.42)?
我可以画线如下:
model <- lm(data=dataset, formula = y~x+z)
special_z = 0.42
ggplot() +
geom_point(data=dataset, aes(x=x, y=y)) +
geom_abline(
slope = coef(model)["x"],
intercept = coef(model)["(Intercept)"] + special_z*coef(model)["z"],
color = "blue")
但是,我怎样才能将伴随的置信区间添加到这条线?
您可以使用
visreg
r 包在这里查看更多详细信息visreg
simple_model <- lm(data=dataset, formula = y~x+z)
visreg(simple_model, "x")
对于具有交互项的模型
int_model <- lm(data=dataset, formula = y~x*z)
visreg(int_model, "x",by="z",overlay=TRUE)