【发布时间】:2018-02-22 09:38:33
【问题描述】:
我正在尝试通过逻辑回归进行分类。为了评估模型,我使用了confusionMatrix 和ROC。问题是这两个包的结果是不同的。我想弄清楚哪个是对的,哪个是错的。
我的数据如下: 数据名称 = newoversample,有 29 个变量和 4802 个观测值。 “q89”是预测变量。
我的尝试:
(1) 'caret' 库中的混淆矩阵
glm.fit = glm(q89 ~ ., newoversample, family = binomial)
summary(glm.fit)
glm.probs=predict(glm.fit,type="response")
glm.pred=rep(0,4802)
glm.pred[glm.probs>.5]="1"
library(caret)
confusionMatrix(data=glm.pred, reference=newoversample$q89)
结果是:
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 2018 437
1 383 1964
Accuracy : 0.8292
95% CI : (0.8183, 0.8398)
No Information Rate : 0.5
P-Value [Acc > NIR] : < 2e-16
Kappa : 0.6585
Mcnemar's Test P-Value : 0.06419
Sensitivity : 0.8405
Specificity : 0.8180
Pos Pred Value : 0.8220
Neg Pred Value : 0.8368
Prevalence : 0.5000
Detection Rate : 0.4202
Detection Prevalence : 0.5112
Balanced Accuracy : 0.8292
'Positive' Class : 0
(2) 'Epi' 库中的 ROC 曲线
library(Epi)
rocresult <- ROC(form = q89 ~ ., data = newoversample, MI = FALSE, main = "over")
rocresult
结果是: roc curve
如您所见,这里的敏感性为 91,特异性为 78,这与 (1)confusion Matrix 的结果不同。
我无法弄清楚为什么结果不同,哪一个是正确的。
+) 如果第二种方法(ROC曲线)是错误的,请告诉我如何从第一种方法计算auc或绘制roc曲线。
请帮帮我!
谢谢你
【问题讨论】:
标签: r