我尝试使用逻辑回归,而响应变量是" 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)
答案 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()
包。