20

我正在绘制 ROC 并测量部分 AUC 作为生态位模型质量的指标。当我在 R 中工作时,我正在使用 ROCR 和 pROC 包。我会选择一个来使用,但现在,我只想看看他们的表现如何,以及是否有一个更好地满足我的需求。

让我感到困惑的一件事是,在绘制 ROC 时,轴如下所示:

大中华区

x axis: 'true positive rate' 0 -> 1
y axis: 'false positive rate', 0 -> 1

程序控制

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'))
4

3 回答 3

13

为了确认,你是对的,真阳性率 = 敏感性和假阳性率 = 1 - 特异性。在您的示例中,从ROCR包中绘制 ROCR 性能对象的组件的顺序是关键。在最后一行中,第一个性能指标,真阳性率,“tpr”被绘制在 y 轴上measure = 'tpr',第二个性能指标,假阳性率,被绘制在 x 轴上x.measure = 'fpr'

plot(performance(ROCRpred, measure = 'tpr', x.measure = 'fpr'))
于 2011-10-20T04:32:00.650 回答
13

只是说,pROC如果您在绘图代码中包含以下内容,则对于包:

plot(roc(obs,pred), legacy.axes = TRUE)

然后你最终得到一个反转的 x 轴。

于 2016-04-13T12:11:37.300 回答
6

据我所知:

TPR = sensitivity = TP/(TP/FN) -> y axis: [0, 1]

FPR = 1 - specificity = 1 - (TN/(FP+TN)) -> x axis: [0, 1]

但是,当图表在 x 轴上显示特异性(真阴性率)时,范围为 [1, 0]。

在这两种情况下,图表是相同的。

您可以在维基百科页面中查看

于 2014-08-14T08:33:01.657 回答