2017-01-03 113 views
2

我使用R v3.3.2和插页6.0.71(即最新版本)来构建逻辑回归分类器。我正在使用confusionMatrix函数来创建用于判断其性能的统计信息。R混淆矩阵的敏感性和特异性标签

logRegConfMat < - 混淆矩阵(logRegPrediction,valData [, “看”])

  • 参考0,预测0 = 30
  • 文献1中,预测0 = 14
  • 参考0,预测1 = 60
  • 文献1中,预测1 = 164

精度:0.7239
灵敏度:0.3333
特异性:0.9213

我的数据中的目标值(见)使用1作为真,0作为假。我假设混淆矩阵中的参考(基础真值)列和预测(分类器)行遵循相同的约定。因此,我的结果表明:

  • 真阴性(TN)30个
  • 真阳性(TP)164个
  • 假阴性(FN)14个
  • 误报(FP)60

问题:为什么敏感度为0.3333,特异度为0.9213?我会认为这是相反的 - 见下文。

我不愿意相信在R confusionMatrix函数中有bug,因为没有任何报告,这似乎是一个重大的错误。


关于计算的特异性和灵敏度大多数引用将它们定义如下 - 即www.medcalc.org/calc/diagnostic_test.php

  • 灵敏度= TP /(TP + FN)= 164 /(164 + 14)= 0.9213
  • 特异性= TN /(FP + TN)= 30 /(60 + 30)= 0.3333

回答

5

根据文档?confusionMatrix

“如果只有两个因子水平,第一个水平将被用作 的”正面“结果。”

因此,在您的示例中,积极的结果将是0,评估指标将是错误的方法。要覆盖默认行为,可以将参数positive =设置为正确的值,唉:

confusionMatrix(logRegPrediction, valData[,"Seen"], positive = "1") 
+0

谢谢 - 我从包笔者最大Kukn相同的答案。我建议任何人使用这个函数明确地给出积极的论点来避免这类问题。 – user1844985

+1

@mtoto非常感谢,我花了几个小时想知道这个问题 – Diego