我正在绘制ROC并测量部分AUC作为生态位模型质量的度量。当我在R工作时,我正在使用ROCR和pROC包。我会选择使用它,但就目前而言,我只是想看看它们是如何表现的,以及是否能更好地满足我的需求。
让我感到困惑的一件事是,在绘制ROC时,轴如下:
ROCR
x axis: 'true positive rate' 0 -> 1
y axis: 'false positive rate', 0 -> 1
PROC
x axis: 'sensitivity' 0 -> 1
y axis: 'specificity' 1 -> 0.
但如果我使用两种方法绘制ROC,它们看起来完全相同。 所以我只想确认一下:
true positive rate = sensitivity
false positive rate = 1 - specificity.
这是一个可重复的例子:
obs<-rep(0:1, each=50)
pred<-c(runif(50,min=0,max=0.8),runif(50,min=0.3,max=0.6))
plot(roc(obs,pred))
ROCRpred<-prediction(pred,obs)
plot(performance(ROCRpred,'tpr','fpr'))
答案 0 :(得分:13)
为了证实,你的正确率是正确率=敏感性和假阳性率= 1 - 特异性。在您的示例中,从ROCR
包中绘制ROCR性能对象的组件的顺序是关键。在最后一行中,第一个性能指标,真阳性率'tpr'绘制在y轴measure = 'tpr'
上,第二个性能指标,假阳性率绘制在x轴{{1}上}
x.measure = 'fpr'
答案 1 :(得分:11)
只是说,对于pROC
包,如果您在地图代码中包含以下内容:
plot(roc(obs,pred), legacy.axes = TRUE)
然后你最终得到一个反转的x轴。
答案 2 :(得分:5)
据我所知:
TPR = sensitivity = TP/(TP/FN) -> y axis: [0, 1]
FPR = 1 - specificity = 1 - (TN/(FP+TN)) -> x axis: [0, 1]
但是,当图表显示x轴的特异性(真实负率)时,范围是[1,0]。
在这两种情况下,图表都是相同的。
您可以在维基百科页面中查看here。