2016-04-29 114 views
0

我尝试使用逻辑回归而响应变量为“Chan”。 我用预测函数,但函数带回的矢量不是布尔值,有人知道什么问题吗?为什么预测r中逻辑回归函数不返回二元向量?

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) 

回答

1

它返回给定协变量的每个结果的概率。从R的帮助:

需要预测的类型。默认值是线性预测变量的规模;备选“响应”是响应变量的规模。因此,对于一个默认的二项式模型,默认预测是log-odds(logit scale概率),type =“response”给出预测概率。“terms”选项返回一个矩阵,给出线性预测变量模型中每个项的拟合值。

+0

如果你想使它成为二进制文件,你可以使用'ifelse'语句。 –

+1

为什么不在你的回答中添加一个例子而不是发表评论? – lmo

+1

换句话说,您需要定义一个将概率分为0/1的截断值。没有这样做的数学方法。 0.5经常使用,但可能会或可能不适合您的情况。 –

2

逻辑回归给出了介于0和1之间的输出,其表示因变量等于1(或TRUE,或任何因变量)的概率。在大多数情况下,只要逻辑回归的结果大于0.5,就可以“预测”1的值。然而,假设0.5是最佳截断点是危险的,因为将TRUE错误分类为FALSE的成本不得与将FALSE错误分类为TRUE的成本相同。考虑逻辑回归分类问题的目标并确定一个合适的阈值(关键词:ROC曲线)。

1

逻辑回归函数glm()的输出是概率。但我们可以通过使用阈值将它们转换为预测(0或1)。阈值的选择取决于您的偏好,哪些错误更好。如果你没有偏好,0.5就好。正如肯提到ROC曲线将帮助你找到一个更好的门槛。你可以为此安装ROCR包。