Подтвердить что ты не робот

Построение 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'))
4b9b3361

Ответ 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.