2011-10-20 21 views
13

Planuję ROC i mierzy częściowe AUC jako metryka jakości niszowego modelu ekologicznego. Ponieważ pracuję w R, używam pakietów ROCR i pROC. Postaram się go wykorzystać, ale na razie chciałem tylko zobaczyć, jak się spisali i czy lepiej spełniło się moje potrzeby.wykreślanie ROC w R z ROCR vs PROC

Jedną rzeczą, która mnie dezorientuje jest to, że gdy wykreślenie ROC, osie są następujące:

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. 

ale gdybym narysuj ROC, używając obu metod, wyglądają identycznie. Więc po prostu chcą, aby potwierdzić, że:

true positive rate = sensitivity 

false positive rate = 1 - specificity. 

Oto powtarzalne przykład:

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

Odpowiedz

9

Aby potwierdzić, masz rację w tym prawdziwy pozytywny rate = czułość i fałszywie dodatnich = 1 - specyficzność . W twoim przykładzie kluczowa jest kolejność, w której wykreślasz komponenty obiektu wydajności ROCR z pakietu ROCR. W ostatnim wierszu, pierwszej miary wydajności, prawdziwej dodatnich „TPR” zostanie naniesiona na osi y measure = 'tpr' i drugiej miary wydajności, wyników fałszywie dodatnich, wykreślono na osi x x.measure = 'fpr'

plot(performance(ROCRpred, measure = 'tpr', x.measure = 'fpr')) 
+0

Dzięki za informacje! – Pascal

4

w miarę jak wiedzieć:

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

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

jednak gdy wykres pokazuje specyficzność (prawdziwie ujemnych stóp) na osi x, to zakres wynosi [1, 0].

W obu przypadkach wykres jest taki sam.

Możesz to sprawdzić here na stronie wikipedia.

8

Wystarczy powiedzieć, na opakowaniu pROC jeśli obejmują następujące w kodzie działki:

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

następnie skończyć z odwróconej osi x.