【问题标题】:Multiple linear regression: Plot a straight line with confidence intervals多元线性回归:绘制一条带置信区间的直线
【发布时间】:2018-09-29 23:33:55
【问题描述】:

这是我的问题:

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:态度=b1*质量+b2*价格+b3*位置+b4*收入,而不是下式中的b:态度=b*质量。因此,以下代码无法正常工作,因为它会绘制 b 而不是 b1 的斜率。

g <- g + geom_smooth(method = lm)

有人问了一个非常相似的问题,see here

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

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

但是,这是一个 LOWESS 图(正如您在帖子中看到的图),而不是线性直线图。

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

【问题讨论】:

  • 可能sjPlot包有一些方便的功能:Plotting Marginal Effects of Regression Models
  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • 这个question 给出了所需的确切代码,除了它涉及一个glm 而不是lm,所以我会说足够接近重复?
  • 嗨 (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 如果您“只想”获取相关数据然后自己自定义图表,您可以查看相关的ggeffects 包。

标签: r ggplot2 linear-regression confidence-interval


【解决方案1】:

如果你想看到 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")
    

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

【讨论】:

    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2022-01-13
    • 2019-10-20
    • 2021-08-16
    • 2010-11-13
    • 2018-02-05
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多