Logistic回归预测的输出


14

我使用以下代码创建了Logistic回归:

full.model.f = lm(Ft_45 ~ ., LOG_D)
base.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg)
step(base.model.f, scope=list(upper=full.model.f, lower=~1),
     direction="forward", trace=FALSE)

然后,我使用输出来创建最终模型:

final.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg + IP_util_E2_m02_flg + 
                           AE_NumVisit1_flg + OP_NumVisit1_m01_flg + IP_TotLoS_m02 + 
                           Ft1_45 + IP_util_E1_m05_flg + IP_TotPrNonElecLoS_m02 + 
                           IP_util_E2pl_m03_flg + LTC_coding + OP_NumVisit0105_m03_flg +
                           OP_NumVisit11pl_m03_flg + AE_ArrAmb_m02_flg)

然后,我使用了预测函数预测了不同数据集的结果:

log.pred.f.v <- predict(final.model.f, newdata=LOG_V)

我已经能够使用建立令人满意的ROC曲线并创建表格来建立敏感性和特异性,这给了我期望的响应。

但是,我想做的是为每行数据确定Ft_45为1的概率。如果查看log.pred.fv的输出,例如:

1 -0.171739593    
2 -0.049905948    
3 0.141146419    
4 0.11615669    
5 0.07342591    
6 0.093054334    
7 0.957164383    
8 0.098415639    
.
.
.
104 0.196368229    
105 1.045208447    
106 1.05499112

由于我对自己的工作只有一个初步的了解,因此我努力理解如何解释负值和高于1的值,因为我希望概率在0到1之间。

所以我的问题是我只是错过了一个需要转换输出或完全出错的步骤。预先感谢您提供的任何帮助。

Answers:


23

首先,看起来您建立了规则的线性回归模型,而不是逻辑回归模型。要建立一个逻辑回归模型,您需要使用glm() family="binomial" lm()

x1,x2x3y

logit <- glm(y~x1+x2+x3,family="binomial")

β0,β1,β2β3

如果这样做predict(logit),R将计算并返回b0 + b1*x1 + b2*x2 + b3*x3

y=log(p1p)=β0+β1x1+β2x2+β3x3

p

在R中,您可以执行以下操作:

pred <- predict(logit,newdata=data) #gives you b0 + b1x1 + b2x2 + b3x3
probs <- exp(pred)/(1+exp(pred)) #gives you probability that y=1 for each observation

非常感谢您,首先是纠正我的代码,其次是解释如何获得R中的概率。我已经尝试了一下,它可以完美地工作。我希望我几个星期前问过!
SeBee 2015年

2
可以用| probs <- exp(predict(logit, type = "response" , newdata=data)probs <-1 /(1 + exp(-pred))或至少使它变短
snoram

11

查看的文档predict.glm,似乎就像在predictcall中使用额外的参数一样容易:

 type = "response"

请参阅文档:

键入 -预测的类型必需的。默认值是线性预测变量的标度。替代的“响应”取决于响应变量的规模。因此,对于默认的二项式模型,默认预测为对数奇数(对数标度上的概率),并且类型=“响应”给出了预测的概率。“项”选项返回一个矩阵,该矩阵给出线性预测变量上模型公式中每个项的拟合值。此参数的值可以缩写

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.