2011-10-20 22 views
13

Tôi vẽ sơ đồ ROC và đo AUC một phần làm thước đo chất lượng mô hình thích hợp sinh thái. Khi tôi đang làm việc trong R, tôi đang sử dụng các gói ROCR và pROC. Tôi sẽ giải quyết trên một để sử dụng, nhưng bây giờ, tôi chỉ muốn xem cách họ thực hiện, và nếu một trong những đáp ứng nhu cầu của tôi tốt hơn.vẽ ROC trong R với ROCR vs pROC

Một điều gây bối rối cho tôi là, khi vẽ biểu đồ ROC, các trục như sau:

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. 

Nhưng nếu tôi âm mưu ROC sử dụng cả hai phương pháp, chúng trông giống hệt nhau. Vì vậy, tôi chỉ muốn khẳng định rằng:

true positive rate = sensitivity 

false positive rate = 1 - specificity. 

Dưới đây là một ví dụ tái sản xuất:

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

Trả lời

9

Để xác nhận, bạn là đúng ở chỗ tỷ lệ dương tính thật = nhạy và tỷ lệ dương tính giả = 1 - đặc hiệu . Trong ví dụ của bạn, thứ tự mà bạn vẽ các thành phần của đối tượng hiệu suất ROCR từ gói ROCR là khóa. Trong dòng cuối cùng, biện pháp biểu diễn đầu tiên, tỷ lệ dương tính đúng, 'TPR' được vẽ trên trục y measure = 'tpr' và biện pháp thực hiện thứ hai, tỷ lệ dương tính giả, được vẽ trên trục x x.measure = 'fpr'

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

Cảm ơn thông tin! – Pascal

4

Theo như tôi biết:

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

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

Nhưng khi biểu đồ hiển thị độ đặc hiệu (tỷ lệ âm thực) trong trục x thì phạm vi là [1, 0].

Trong cả hai trường hợp, biểu đồ giống nhau.

Bạn có thể kiểm tra xem here trong trang wikipedia.

8

Chỉ cần nói, cho gói pROC nếu bạn bao gồm trong mã âm mưu của bạn:

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

sau đó bạn kết thúc với một đảo ngược trục x.

Các vấn đề liên quan