【问题标题】:how to plot predicted values on lm line for a null model using ggplot in r如何使用 r 中的 ggplot 在 lm 线上为空模型绘制预测值
【发布时间】:2018-09-14 18:27:05
【问题描述】:

尝试使用产生的 ggplot 重现以下基本代码 结果不正确

基本代码

model1 <- lm(wgt ~ 1, data = bdims)
model1_null <- augment(model1)
plot(bdims$hgt, bdims$wgt)
abline(model1, lwd = 2, col = "blue")
pre_null <- predict(model1)
segments(bdims$hgt, bdims$wgt, bdims$hgt, pre_null, col = "red")

ggplot 代码

bdims %>% 
  ggplot(aes(hgt, wgt)) +
  geom_point() +
  geom_smooth(method = "lm", formula = bdims$hgt ~ 1) +
  segments(bdims$hgt, bdims$wgt, bdims$hgt, pre_null, col = "red")

【问题讨论】:

    标签: r ggplot2 lm


    【解决方案1】:

    这是一个使用内置 mtcars 数据的示例:

    ggplot(mtcars, aes(wt, mpg)) +
        geom_point() +
        geom_smooth(method = "lm", formula = y ~ 1) + 
        geom_segment(aes(xend = wt, yend = mean(mpg)), col = "firebrick2")
    

    formula 引用美学维度,而不是变量名称。而且您需要使用geom_segment 而不是基本图形segments。在更复杂的情况下,您需要预先计算模型对段的预测值,但对于空模型,只需使用 mean inline 就足够简单了。

    【讨论】:

    • > 根据您的答案,通过使用单变量 hgt 计算模型的预测值来尝试。这是示例代码 'pre_hgt % ggplot(aes(hgt, wgt)) + geom_point() + geom_smooth(method = "lm", se = 0) + geom_segment(aes(xend = hgt,yend = pre_hgt),col = "firebrick2")'
    • 我不知道你的评论是什么意思。我无法运行您的示例代码,因为您没有共享任何示例数据。您是想说“谢谢,这很好用!” 还是“我无法让它在我的数据上工作。”?无论哪种方式,我都建议只在aes 中使用长度为1 的常量或数据框的列。使用长度 > 1 且不在您的数据框中的向量(如 pre_hgt)是在自找麻烦。将其减少为单个值或将其添加到您的数据框中。
    • 我是这个地方的新手,尝试评论超过 3 次,结果被锁定。我的意思是说谢谢,并包含了在您输入 'model2 % ggplot(aes(hgt , wgt)) + geom_point() + geom_smooth(method = "lm", se = 0) + geom_segment(aes(xend = hgt, yend = pre_hgt), col = "firebrick2")' 和点以长度表示常量或列
    • 太棒了!如果您不希望获得其他答案,则应“接受”我的答案以将您的问题标记为已解决。您可以通过单击答案旁边左边距中的复选标记来执行此操作。
    猜你喜欢
    • 2019-11-27
    • 2018-11-08
    • 2012-08-18
    • 2013-10-22
    • 2021-11-20
    • 2021-11-20
    • 2021-03-06
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多