为什么预测r中逻辑回归的函数不会返回二元向量?

时间:2016-04-29 13:09:27

标签: r regression

我尝试使用逻辑回归,而响应变量是" Chan"。  我使用了预测函数,但函数带回的向量不是布尔值,有人知道是什么问题吗?

example of my data:
x1 x2 x3 x4 Chan
3 4 5 6 1 1
4 4 4 4 1 1 
5 5 3 2 3 0
3 4 3 4 2 0

mimic_matrix$Chan<-(mimic$Chan==1)
training<-mimic_matrix[1:5000,]
test<-mimic_matrix[-(1:5000),-ncol(mimic_matrix)]
tag<-mimic_matrix[-(1:5000),ncol(mimic_matrix)]

mimic_regression <- glm(Chan ~ .,data = training,family = "binomial")
step_backward<-step(mimic_regression, direction="backward")

predict_backward<-predict(step_backward, newdata = test, type="response")
predict_backward<-(predict_backward==1)

3 个答案:

答案 0 :(得分:2)

逻辑回归给出0到1之间的输出,它表示因变量等于1的概率(或者TRUE,或者你的因变量是什么)。在大多数情况下,你会预测&#34;当逻辑回归的结果大于0.5时,值为1。然而,假设0.5是最佳截止点是危险的,因为将TRUE错误分类为FALSE的成本不必与将FALSE错误分类为TRUE的成本相同。考虑逻辑回归分类问题的目标并确定合适的阈值(关键词:ROC曲线)。

答案 1 :(得分:1)

在给出协变量的情况下,它返回每个结果的概率。来自R的帮助:

所需的预测类型。默认值是线性预测变量的比例;替代方案&#34;响应&#34;是在响应变量的范围内。因此,对于默认二项式模型,默认预测是对数概率(对数刻度的概率)和类型=&#34;响应&#34;给出预测的概率。&#34;术语&#34; option返回一个矩阵,给出模型公式中每个项在线性预测器标度上的拟合值。

答案 2 :(得分:1)

逻辑回归函数 <system.serviceModel> <diagnostics> <messageLogging maxMessagesToLog="30000" logEntireMessage="true" logMessagesAtServiceLevel="true" logMalformedMessages="true" logMessagesAtTransportLevel="true" maxSizeOfMessageToLog="65535000"> </messageLogging> </diagnostics> </system.serviceModel> <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Verbose, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" /> </listeners> </source> </sources> <sharedListeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\Traces.svclog" /> </sharedListeners> <trace autoflush="true" /> </system.diagnostics> 的输出是概率。但我们可以使用阈值将它们转换为预测(0或1)。阈值选择基于您对错误更好的偏好。如果你没有偏好,0.5会很好。正如Ken所说,ROC Curve将帮助您找到更好的门槛。您可以为此安装glm()包。