Делать что-то вроде TC Чжан предлагает в комментарии не будет работать:
tpr[which(fpr == yourfpr)]
Это потому, что, хотя это и называется «кривой», кривая ROC действительнонабор дискретных точек, и вероятность того, что ваш целевой FPR точно соответствует единице на кривой ROC, мала.
Поэтому вам необходимо выполнить небольшую интерполяцию, чтобы получить TPR в заданных точках FPR.К счастью, пакет pROC делает это для вас (предупреждение: я являюсь автором pROC).Допустим, у вас есть следующая кривая ROC:
library(pROC)
data(aSAH)
myroc <- roc(aSAH$outcome, aSAH$wfns)
Сначала вам необходимо преобразовать ставки FPR в специфичность, понятную pROC:
target.fpr <- c(0, 0.002, 0.01, 0.2, 0.1, 0.2, 1)
target.sp <- 1 - target.fpr
Затем вы используете coords
function:
coords(myroc, x = target.sp, input = "specificity", ret = c("se", "sp"))
Принимает целевые специфичности в качестве входных данных и возвращает их вместе с соответствующими значениями чувствительности, которые равны истинно положительным ставкам или TPR, которые вас интересуют.Чтобы получить TPR как вектор, выполните:
tpr <- coords(myroc, x = target.sp, input = "specificity", ret = "se")[1,]