为多元回归绘制具有置信区间的“回归线”,保持其他协变量固定

问题描述 投票:0回答:1

假设我有一个数据集,结果为 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")

但是,我怎样才能将伴随的置信区间添加到这条线?

r linear-regression visualization lm ggplot2
1个回答
0
投票

您可以使用

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)

© www.soinside.com 2019 - 2024. All rights reserved.