用ROCR和pROC绘制R中的ROC

时间:2011-10-20 00:13:52

标签: r roc

我正在绘制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'))

3 个答案:

答案 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