我的预测器有两个级别:
>table(predictor)
predictor
1 2
12115 4257
我的回答也有两个级别:
> table(response)
response
1 0
12115 4257
所以,显然,这里存在完全线性的相关性。但是当我之后进行逻辑回归和预测时,我得到了这个:
logit = glm(response~predictor, data=data, family="binomial")
pred = predict(logit, newdata=data, type="response")
然而,预测给出了与实际数据完全相反的结果:
pred 1 0
2.90070146547072e-12 12115 0
0.999999999997099 0 4257
有人知道这里出了什么问题吗?怎么能解释这个?
谢谢!
答案 0 :(得分:0)
预测因子(显然)是1,2级的因子。然而,响应是0,1级的一个因素。
首先,确保预测变量实际存储为因子;不是整数。
predictor <- as.factor(predictor)
“然而,预测给出了与实际数据完全相反的结果”
'实际数据'是什么意思:预测变量{1,2}的实际值,或响应{0,1}的实际值?
如果要使用predict()
的输出向量来预测原始预测变量,则不能使用原始预测变量,需要对其进行阈值处理并将其索引到其水平向量c(1,2)。或者只使用ifelse
:
pred <- predict(logit, newdata=data, type="response")
threshold <- 0.5 # or whatever threshold you use
pred <- ifelse(pred>threshold, 1, 2)
另外,请向我们展示@John要求的表格(预测器,响应)。