【问题标题】:How can I create a ggplot with a regression line based on the predicted values of a glm?如何根据 glm 的预测值创建带有回归线的 ggplot?
【发布时间】:2021-12-16 20:09:36
【问题描述】:

我正在创建一个 ggplot,我想添加一条回归线,我尝试使用 geom_smooth。但现在的问题是,我想使用从 predict() 函数中检索到的响应变量的预测值添加这一行。

我只是想知道是否有人知道我该怎么做?我已经尝试添加:

geom_smooth(predicted.values ~ data$predictor1 + data$predictor2)

但这似乎不起作用。它返回:

警告消息:1:删除了包含非有限值的 2 行 (stat_smooth)。 2:stat_smooth() 计算失败:变量 长度不同(为 'data$predictor1' 找到) 3:删除 2 行 包含缺失值 (geom_point)。

感谢您的帮助!

【问题讨论】:

  • 请至少提供reproducible example 以帮助人们帮助您。但是,this post 已经解决了这个问题,@aosmith 的这篇博客用predict()geom_smooth() 回答了你的问题

标签: r ggplot2 regression glm


【解决方案1】:

如果您想从 glm 添加回归线,可以直接使用 geom_smooth 执行此操作,前提是您为 method.args 参数提供适当参数的列表。

例如,假设我有以下计数数据并希望使用glm 进行泊松回归:

set.seed(1)

df <- data.frame(x = 1:100,
                 y = rpois(100, seq(1, 5, length.out = 100)))

那么我的模型应该是这样的:

model <- glm(y ~ x, data = df, family = poisson)

如果我想用回归线绘制我的数据,我可以这样做:

library(ggplot2)

ggplot(df, aes(x, y)) + 
  geom_point() +
  geom_smooth(method = "glm", method.args = list(family = poisson),
              fill = "deepskyblue4", color = "deepskyblue4", linetype = 2) 

如果您想直接使用predict 的输出,您可以执行以下操作:

predicted.values <- predict(model, type = "response")

ggplot(df, aes(x, y)) + 
  geom_point() +
  geom_line(aes(y = predicted.values), linetype = 2)

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2018-06-03
    • 2019-01-22
    • 2021-02-25
    • 2021-11-03
    • 2021-10-19
    • 2012-02-09
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多