1

我的预测器有 2 个级别:

>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

有人知道这里出了什么问题吗?这怎么解释?

谢谢!

4

1 回答 1

0

预测器(显然)是一个级别为 1,2 的因子。然而,响应是一个水平为 0,1 的因素。

首先,确保预测器实际存储为因子;不是整数。

predictor <- as.factor(predictor)

“然而,这个预测给了我与实际数据完全相反的结果”

“实际数据”是什么意思:预测变量 {1,2} 的实际值,或响应 {0,1} 的实际值?

如果要使用输出向量 frompredict()来预测原始预测变量,则不能原始使用它,需要对其进行阈值化并索引到其级别向量 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 要求的表格(预测器,响应)。

于 2014-03-08T14:28:56.467 回答