如何在Ggplot 2中的一个图上绘制多个逻辑回归曲线

时间:2015-01-12 19:51:06

标签: r ggplot2 regression logistic-regression

我的数据框样本如下:

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.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(method =“glm”)绘制最佳拟合线周围的平滑曲线。我还必须添加family = binomial(link =“logit”)。有谁知道为什么会这样。

重申一下,我的主要问题是如何在一个地块上绘制所有这三个,而不必将它们分开。另外,我想为预测的概率添加点。

请原谅我的任何不当行为。我仍然是堆栈交换和ggplot2的新手。

1 个答案:

答案 0 :(得分:0)

您无法使用逻辑回归绘制“S”形曲线,因为您没有连续变量来绘制。相反,您只能在预测值附近绘制预测值和CI。

在数据框中创建一个包含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)

enter image description here