Могу ли я использовать некоторые заранее заданные значения отсечки (пороги) для построения кривой ROC с помощью пакета pROC
? Например, могу ли я ввести контрольные значения / значения наблюдений и свои собственные пороговые точки, где рассчитывать соответствующую чувствительность и специфичность?
Пакет pROC R с настраиваемыми значениями отсечки?
Ответы (2)
Взгляните на ?plot.roc
.
Допустим, у вас есть:
my.cutoff <- 0.6
Тогда вы сможете:
library(pROC)
data(aSAH)
plot.roc(aSAH$outcome, aSAH$s100b, print.thres = my.cutoff)
my.cutoff
, вы также можете передать вектор отсечки.
- person Calimo; 19.07.2014
Это больше не кривая ROC
Чтобы ответить на ваши комментарии в моем другом ответе (но не ответить на ваш вопрос, на который нельзя ответить, как я прокомментировал выше), я могу дать вам способ делать то, что вы, кажется, хотите. Пожалуйста, ни при каких обстоятельствах НЕ называйте это кривой ROC: это не так! Пожалуйста, придумайте описательное название самостоятельно, в зависимости от цели этого упражнения (которую вы никогда не объясняли).
Вы можете делать то, что вам кажется, косвенно, с pROC
: вы вычисляете ROC для всех порогов, извлекаете нужные координаты и используете функцию трапеции для завершения.
library(pROC)
data(aSAH)
my.cutoff <- c(0.6, 1, 1.5, 1.8)
roc.obj <- roc(aSAH$outcome, aSAH$s100b)
like.coordinates <- coords(roc.obj, c(-Inf, sort(my.cutoff), Inf), input="threshold", ret=c("specificity", "sensitivity"))
Теперь вы можете отобразить результаты как:
plot(like.coordinates$specificity, like.coordinates$sensitivity, xlim=c(1, 0), type="l")
И вычислите AUC
, например, с помощью функции trapz
в пакете caTools
:
library(caTools)
trapz(like.coordinates$specificity, like.coordinates$sensitivity)
Еще раз, вы НЕ построили кривую ROC, и вычисленная вами AUC НЕ является кривой ROC.