построение 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].
в обоих случаях график одинаков.
вы можете проверить это здесь страница в Википедии.