【问题标题】:Plotting predictions from a logistic regression绘制逻辑回归的预测
【发布时间】:2017-11-02 16:51:06
【问题描述】:

我正在尝试在 R 中绘制逻辑回归。我目前有此代码...

mylogit<- glm(Breeding.success ~ Dam.Age, family = binomial, data = captive)
summary(mylogit)

predicted.data<- as.data.frame(predict(mylogit, type="response", se=TRUE))
summary(predicted.data)

new.data <- cbind(captive, predicted.data)

graph <- ggplot(captive, aes(x=Dam.Age, y=Breeding.success)) +
geom_point()+
stat_smooth(method="glm", method.args = list(family="binomial"), se=FALSE) +
labs(x="Dam age", y="Breeding success")

我目前有一个直线图,我希望它是弯曲和平滑的。我也在努力绘制置信区间。任何建议都会很棒,谢谢。

我可以给你使用的实际数据 - http://datadryad.org/resource/doi:10.5061/dryad.58ff4

我正在复制一些图表作为最后一年项目的一部分。此代码用于根据损坏年龄绘制的育种成功率。

【问题讨论】:

  • 我不清楚这里到底发生了什么以及您期望什么。如果您提供带有示例输入数据的reproducible example 将会很有帮助,这样我们就可以运行代码来查看发生了什么。
  • 你到底想画什么?因为逻辑回归用于对二元变量进行分类。
  • 我已经包含了我在当前论文中使用的实际数据。

标签: r ggplot2 logistic-regression


【解决方案1】:

主要问题是您绘制的逻辑曲线在您所获得的数据范围内近似呈线性(当预测概率在 0.3 到 0.3 到0.7)。

您可以通过在geom_smooth() 调用中指定se=TRUE 来获得绘图上的标准误差...

在下图中,我(1)使用stat_sum()而不是geom_point()来可视化数据集中的重叠点; (2) 使用fullrange=TRUE 获得整个绘图范围内的预测(而不仅仅是数据实际跨越的范围); (3) 使用expand_limits() 将图表推到较大的年龄值,以说明如果将预测扩展到足够低或足够高的预测概率(要达到高概率,您需要使年龄负...)

download.file("http://datadryad.org/bitstream/handle/10255/dryad.141600/All%20females%20breeding%20success.csv?sequence=1",dest="breeding_success.csv")

captive <- read.csv("breeding_success.csv")
library(ggplot2)
graph <- ggplot(captive, aes(x=Dam.Age, y=Breeding.success)) +
    stat_sum()+
    stat_smooth(method="glm",
                method.args = list(family="binomial"), se=TRUE,
                fullrange=TRUE) +
    labs(x="Dam age", y="Breeding success")+
    expand_limits(x=20)

【讨论】:

    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 2021-11-24
    • 2021-01-21
    • 2019-03-05
    • 2019-06-07
    • 2021-11-23
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多