如何在 Ggplot 2 中的一个图上绘制多条逻辑回归曲线
How to plot multiple logistic regression curves on one plot in Ggplot 2
我的数据框示例如下:
ent corp smb fit se.fit UL LL PredictedProb
1 0 0 -2.54 0.10 0.087 0.06 0.072
0 0 1 -3.71 0.05 0.026 0.02 0.023
0 1 0 -3.60 0.05 0.029 0.02 0.026
1 0 0 -2.54 0.10 0.087 0.060 0.072
0 0 1 -3.71 0.05 0.026 0.021 0.023
我想绘制 3 个图,根据预测概率为每个二进制文件 (sent、corp、smb) 绘制一条最佳拟合线——如果可能的话,我还想为预测概率添加点.到目前为止,我已经能够创建 3 个独立的地块,但我想将所有三个地块放在一个地块上。以下是我目前所拥有的:
这是 Corp 情节的代码:
corp.line <- ggplot(newdata3, aes(corp,PredictedProb))
corp.line <- corp.line + stat_smooth(method = "glm")
corp.line
这是 SMB 图的代码:
smb.line <- ggplot(newdata3, aes(smb,PredictedProb))
smb.line <- smb.line + stat_smooth(method = "glm")
smb.line
这是 Ent 图的代码:
ent.line <- ggplot(newdata3, aes(enterprise,PredictedProb))
ent.line <- ent.line + stat_smooth(method="glm",family= binomial(link="logit"))
ent.line
此外,在之前的图中,我无法使用 stat_smooth(方法 = "glm")围绕最佳拟合线绘制平滑曲线。我还必须添加 family = binomial(link="logit")。有谁知道为什么会这样。
重申一下,我的主要问题是如何将所有这三个绘制在一个图上而不必将它们分开。另外,我想为预测概率加分。
如有不当之处,敬请原谅。我对堆栈交换和 ggplot2 还是陌生的。
您将无法绘制通过逻辑回归获得的 "S" 形曲线,因为您没有可绘制的连续变量。相反,您只能绘制预测值和围绕这些预测值的置信区间。
在您的数据框中创建一个包含 ent、corp 和 smb 的列。
newdata3<-read.table("clipboard", header=T)
newdata4<-unique(newdata3)[-4,] #different lower limits for smb... removing the second smb LL
newdata4$NewVar<-rep("",length(newdata[,1]))
newdata4$NewVar[which(newdata3$ent==1)]<-"ent"
newdata4$NewVar[which(newdata3$corp==1)]<-"corp"
newdata4$NewVar[which(newdata3$smb==1)]<-"smb"
windows(5,5)
ggplot(newdata4, aes(NewVar, PredictedProb, colour=NewVar)) + geom_point() +
geom_errorbar(aes(ymin=LL, ymax=UL), width=.1, size=1)
我的数据框示例如下:
ent corp smb fit se.fit UL LL PredictedProb 1 0 0 -2.54 0.10 0.087 0.06 0.072 0 0 1 -3.71 0.05 0.026 0.02 0.023 0 1 0 -3.60 0.05 0.029 0.02 0.026 1 0 0 -2.54 0.10 0.087 0.060 0.072 0 0 1 -3.71 0.05 0.026 0.021 0.023
我想绘制 3 个图,根据预测概率为每个二进制文件 (sent、corp、smb) 绘制一条最佳拟合线——如果可能的话,我还想为预测概率添加点.到目前为止,我已经能够创建 3 个独立的地块,但我想将所有三个地块放在一个地块上。以下是我目前所拥有的:
这是 Corp 情节的代码:
corp.line <- ggplot(newdata3, aes(corp,PredictedProb))
corp.line <- corp.line + stat_smooth(method = "glm")
corp.line
这是 SMB 图的代码:
smb.line <- ggplot(newdata3, aes(smb,PredictedProb))
smb.line <- smb.line + stat_smooth(method = "glm")
smb.line
这是 Ent 图的代码:
ent.line <- ggplot(newdata3, aes(enterprise,PredictedProb))
ent.line <- ent.line + stat_smooth(method="glm",family= binomial(link="logit"))
ent.line
此外,在之前的图中,我无法使用 stat_smooth(方法 = "glm")围绕最佳拟合线绘制平滑曲线。我还必须添加 family = binomial(link="logit")。有谁知道为什么会这样。
重申一下,我的主要问题是如何将所有这三个绘制在一个图上而不必将它们分开。另外,我想为预测概率加分。
如有不当之处,敬请原谅。我对堆栈交换和 ggplot2 还是陌生的。
您将无法绘制通过逻辑回归获得的 "S" 形曲线,因为您没有可绘制的连续变量。相反,您只能绘制预测值和围绕这些预测值的置信区间。
在您的数据框中创建一个包含 ent、corp 和 smb 的列。
newdata3<-read.table("clipboard", header=T)
newdata4<-unique(newdata3)[-4,] #different lower limits for smb... removing the second smb LL
newdata4$NewVar<-rep("",length(newdata[,1]))
newdata4$NewVar[which(newdata3$ent==1)]<-"ent"
newdata4$NewVar[which(newdata3$corp==1)]<-"corp"
newdata4$NewVar[which(newdata3$smb==1)]<-"smb"
windows(5,5)
ggplot(newdata4, aes(NewVar, PredictedProb, colour=NewVar)) + geom_point() +
geom_errorbar(aes(ymin=LL, ymax=UL), width=.1, size=1)