首页 文章

来自插入符号的混淆矩阵和R中的Epi封装的ROC的不同结果

提问于
浏览
0

我试图通过逻辑回归进行分类 . 为了评估模型,我使用了confusionMatrix和ROC . 问题是两个包的结果不同 . 我想弄清楚哪一个是对还是错 .

  • 我的数据如下:data name = 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)混淆矩阵的结果不同 .

我无法弄清楚为什么结果不同以及哪一个是正确的 .

)如果第二种方法(ROC曲线)错误,请让我知道如何从第一种方法计算auc或绘制roc曲线 .

请帮我!

谢谢

1 回答

  • 0

    您应绘制使用 glm 构建的相同模型的ROC曲线

    library(ROCR)
    pred <- prediction(predict(glm.fit), newoversample$q89)
    perf <- performance(pred,"tpr","fpr")
    plot(perf)
    

    希望这可以帮助!

相关问题