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

Wil*_*ill 5 r linear-regression ggplot2 confidence-interval

这是我的问题:

1)我运行了多元线性回归:假设像:

lm(attitude~quality+price+location+Income)
Run Code Online (Sandbox Code Playgroud)

我主要关心态度和质量之间的关系,其他变量是控制变量.

2)然后我想在态度和质量之间做一个散点图.这很容易:

Q <-ggplot(data=data, aes(x=quality, y=attitude)) 
Q + geom_point(size = 1)
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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

提供的答案看起来像这样(替换为我的变量):

g <- g + geom_smooth(data=data, aes(x=quality, y=attitude, ymin=lcl, ymax=ucl))
Run Code Online (Sandbox Code Playgroud)

但是,这是一个LOWESS图(正如您可以看到帖子中的图所示),而不是线性直线图.

我的问题:如何在置信区间带上添加斜率b1的直线?

Ble*_*ded 0

据我所知, 如果你想看到 b1,你应该绘制部分回归图。

在这种情况下,

  1. attitude对每个变量进行回归,除了 quality
  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")
    
    Run Code Online (Sandbox Code Playgroud)

这条线可能与 b1 相同,但不是 x,y 点。