построение ROC в R с ROCR против pROC

Я строю ROCs и измеряю частичный 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'))

3 ответов


чтобы подтвердить, вы правы в том, что истинная положительная скорость = чувствительность и ложная положительная скорость = 1 - специфичность. В вашем примере порядок построения компонентов объекта производительности ROCR из ROCR пакета ключ. В последней строке первая мера производительности, истинная положительная скорость, " tpr " строится на оси y measure = 'tpr' и вторая мера производительности, ложноположительная скорость, строится на оси 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].

в обоих случаях график одинаков.

вы можете проверить это здесь страница в Википедии.