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