私はROCをプロットし、生態学的ニッチモデルの品質の指標として部分的なAUCを測定しています。 Rで作業しているので、ROCRとpROCパッケージを使用しています。どちらを使用するかを決めますが、今のところは、それらがどのように機能するか、そして1つが私のニーズをよりよく満たすかどうかを確認したかっただけです。
私を混乱させる1つのことは、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'))
確認するために、あなたはその真陽性率=感度と偽陽性率= 1-特異度で正しいです。この例では、ROCR
パッケージからROCRパフォーマンスオブジェクトのコンポーネントをプロットする順序が重要です。最後の行では、最初のパフォーマンス測定値である真陽性率 'tpr'がy軸にプロットされていますmeasure = 'tpr'
そして2番目のパフォーマンス測定値である偽陽性率がx軸にプロットされますx.measure = 'fpr'
plot(performance(ROCRpred, measure = 'tpr', x.measure = 'fpr'))
言うまでもなく、プロットコードに以下を含めると、pROC
パッケージの場合:
plot(roc(obs,pred), legacy.axes = TRUE)
次に、x軸が逆になります。
私の知る限りでは:
TPR = sensitivity = TP/(TP/FN) -> y axis: [0, 1]
FPR = 1 - specificity = 1 - (TN/(FP+TN)) -> x axis: [0, 1]
ただし、グラフがx軸に特異度(真の負の率)を示している場合、範囲は[1、0]です。
どちらの場合も、グラフは同じです。
あなたはそれをチェックすることができます ここ ウィキペディアのページで。