多元线性回归:绘制带置信区间的直线

5

以下是我的问题:

1) 我运行了一次多元线性回归,假设如下:

lm(attitude~quality+price+location+Income)

我主要关注态度与质量之间的关系,其他变量是控制变量。

2) 然后我想绘制态度和质量之间的散点图。这很容易:

Q <-ggplot(data=data, aes(x=quality, y=attitude)) 
Q + geom_point(size = 1)

3) 我希望进一步绘制x和y之间的拟合线,斜率应该是多元线性回归中的偏回归系数。也就是说,它应该是以下公式中的b1:attitude=b1*quality+b2*price+b3*location+b4*Income,而不是以下公式中的b:attitude=b*quality。因此,以下代码不正确,因为它将绘制b而不是b1的斜率。

g <- g + geom_smooth(method = lm)

有人问了一个非常相似的问题,请看这里

提供的答案如下(替换为我的变量):

g <- g + geom_smooth(data=data, aes(x=quality, y=attitude, ymin=lcl, ymax=ucl))

然而,这是一个LOWESS图(正如您在帖子中发布的图像所示),而不是线性直线图。

我的问题是:我该如何添加一条斜率为b1的直线,并带有置信区间带?


2
也许 sjPlot 软件包具有一些方便的功能:绘制回归模型的边际效应 - Henrik
欢迎来到StackOverflow!请阅读关于如何提出好问题和如何提供可重现的示例的信息。这将使其他人更容易地帮助您。 - Axeman
这个问题提供了需要的确切代码,只是它与glm有关,而不是lm,所以我认为足够接近一个重复问题了? - Axeman
你好,(1)感谢zx8754的编辑。(2)感谢Axeman的链接和评论,但我无法很好地理解他们的问题和代码。(3)感谢Henrik的链接。sjPlot可行,我编写了以下代码:plot_model(fit, type = "pred", terms = "quality", show.data = TRUE)。我有一个问题:是否可以添加一个图层来使用geom_label_repel,因为我想在散点图上显示点的标签。似乎plot_model不允许添加这个图层:geom_label_repel(aes(x=quality, y=attitude, label = Region)),即使我可以在ggplots中做到。 - Will
@Will 如果您“只是”想获取相关数据,然后自定义绘图,请查看相关的ggeffects包。 - Henrik
1个回答

0
如果你想看到b1,你应该画出“部分回归图”,据我所知。
在这种情况下,
  1. 对每个变量(除了quality)回归attitude
  2. 对其他前置变量回归quality
  3. 绘制这些拟合的残差图:

    X <-
      data_frame(
        x = lm(quality ~.-attitude, data = data)$resid,
        y = lm(attitude ~ .-quality, data = data)$resid
      )
    X %>%
      ggplot(aes(x, y)) +
      geom_smooth(method = "lm")
    

这一行可能与b1相同,尽管不是x,y点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接