绘制逻辑回归的预测

时间:2017-11-02 16:51:07

标签: r ggplot2 logistic-regression

我试图在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

我正在复制一些图表,作为最后一年项目的一部分。该代码用于针对大坝年龄绘制的育种成功。

1 个答案:

答案 0 :(得分:2)

主要问题是,您绘制的逻辑曲线在您获得的数据范围内近似线性(当预测概率在0.3到0.3之间时,这通常是正确的) 0.7)。

通过在se=TRUE来电中指定geom_smooth(),您可以在地块上获得标准错误...

在下面的图中,I(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)

enter image description here