【问题标题】:Opposite prediction result from Logistic regression - glm()逻辑回归的相反预测结果 - glm()
【发布时间】:2014-01-21 04:27:03
【问题描述】:

我的预测器有 2 个级别:

>table(predictor)

predictor
    1     2 
12115  4257 

我的回复也有2个级别:

> 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

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

谢谢!

【问题讨论】:

  • 您的前两个表并没有告诉您存在完美的相关性。 table(predictor, response) 可以。什么样的变量是预测变量和响应变量?我的猜测是,至少预测器是一个因素,因为结果不是相反的,它的预测器编码为 0 和 1。
  • 向我们展示table(predictor, response) 就像@John 要求的那样?

标签: r logistic-regression


【解决方案1】:

预测变量(显然)是一个级别为 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 要求的表格(预测器,响应)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 2016-03-08
    • 2012-02-09
    • 1970-01-01
    • 2014-06-20
    • 2020-08-06
    • 2019-03-05
    • 2019-06-07
    相关资源
    最近更新 更多