Указание положительного класса в пакете 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» в качестве положительного класса. Например, вы можете сделать это в функции confusionMatrix пакета caret как:

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 пакете?


person discipulus    schedule 23.07.2016    source источник


Ответы (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".

person Calimo    schedule 23.07.2016