Построение ROC в R с ROCR vs pROC
Я рисую ROC и измеряю частичную AUC как показатель качества экологической ниши. Когда я работаю в R, я использую ROCR и пакеты pROC. Я соглашусь на один, чтобы использовать, но пока, я просто хотел посмотреть, как они выполняются, и если кто-то удовлетворит мои потребности лучше.
Меня смущает одна вещь: при построении 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
Чтобы подтвердить, что вы правы в этой истинной положительной скорости = чувствительность и ложноположительная ставка = 1 - специфичность. В вашем примере ключевым является порядок, в котором вы составляете компоненты объекта производительности ROCR из пакета ROCR
. В последней строке первая оценка эффективности, истинная положительная скорость, tpr, отображается на оси y measure = 'tpr'
, а вторая оценка эффективности, ложноположительная скорость, нанесена на ось x x.measure = 'fpr'
plot(performance(ROCRpred, measure = 'tpr', x.measure = 'fpr'))
Ответ 2
Просто скажем, для пакета pROC
, если вы включили в код вашего кода следующее:
plot(roc(obs,pred), legacy.axes = TRUE)
тогда вы получите обратную ось x.
Ответ 3
Насколько я знаю:
TPR = sensitivity = TP/(TP/FN) -> y axis: [0, 1]
FPR = 1 - specificity = 1 - (TN/(FP+TN)) -> x axis: [0, 1]
Но, когда график показывает специфичность (истинная отрицательная скорость) по оси x, диапазон равен [1, 0].
В обоих случаях график тот же.
Вы можете проверить это здесь на странице wikipedia.