Как получить конкретный tpr из последовательности fpr в R? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу получить истинные положительные оценки при указанных ложных положительных показателях, говорит, при fpr = 0, 0,002, 0,01, .... Есть ли простой способ сделать это?Я попытался

performance <- performance(rocr,"tpr","fpr") fpr=performance@x.values[[1]] tpr=performance@y.values[[1]] , который я могу получить все fpr и tpr.Как мне продолжить отсюда?Большое спасибо!

1 Ответ

0 голосов
/ 13 февраля 2019

Делать что-то вроде 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,]
...