Определение положительного класса в пакете pROC
Я хочу рассчитать различные метрики классификации (чувствительность, специфичность) с помощью пакета pROC. Для этого я могу использовать coords
функция в pROC
пакет как:
# Load library
library(pROC)
# Load data
data(aSAH)
#Convert Good and Poor to 1 and 0
aSAH$outcome <- ifelse(aSAH$outcome=="Good", 1, 0)
# Calculate ROC
rocobj <- roc(aSAH$outcome, aSAH$s100b)
# Get sensitivity and specificity
coords(rocobj, 0.55)
Здесь это берет 1
как положительный класс, то есть может быть класс, который является наиболее распространенным, но я не уверен. Мне было интересно, можно ли использовать "0" в качестве положительного класса. Например, вы можете сделать это в caret
пакет-х confusionMatrix
функционировать как:
confusionMatrix(factor(as.numeric(aSAH$s100b<0.55),levels=c('0','1')),
factor(aSAH$outcome,levels=c('0','1')), positive='1')
за 1
как положительный и
confusionMatrix(factor(as.numeric(aSAH$s100b<0.55),levels=c('0','1')),
factor(aSAH$outcome,levels=c('0','1')), positive='0')
за 0
как позитивный класс. Я использую пакет pROC, так как он предоставляет другие функции, такие как определение лучших срезов и т. Д., Что невозможно в карете. Тем не менее, есть ли способ указать положительный и отрицательный класс в pROC
пакет?
1 ответ
Использовать levels
аргумент:
levels: the value of the response for controls and cases
respectively.
Здесь "контроль" означает отрицательное наблюдение, а "случай" - положительное. Выбор не основан на распространенности, просто на первых двух значениях levels(as.factor(response))
,
Чтобы изменить его, передайте вектор длины два, такой как:
rocobj <- roc(aSAH$outcome, aSAH$s100b, levels = c(1, 0))
Обратите внимание, что это не изменит вашу кривую, пока вы не установите direction
аргумент, который на "auto"
по умолчанию.