Как рассчитать AUC из двух непрерывных переменных в R?

У меня есть следующие данные:

# actual value: 
a <- c(26.77814,29.34224,10.39203,29.66659,20.79306,20.73860,22.71488,29.93678,10.14384,32.63233,24.82544,38.14778,25.12343,23.07767,14.60789)

# predicted value
p <- c(27.238142,27.492240,13.542026,32.266587,20.473063,20.508603,21.414882,28.536775,18.313844,32.082333,24.545438,30.877776,25.703430,22.397666,15.627892)

Я уже рассчитал MSE и RMSE для этих двух, но они запрашивают кривую AUC и ROC. Как я могу рассчитать это из этих данных, используя R? Я думал, что AUC для проблем с классификацией, я ошибался? Можем ли мы по-прежнему рассчитывать AUC для числовых значений, как указано выше?


person user6401955    schedule 14.06.2018    source источник
comment
Кто они?   -  person Calimo    schedule 17.06.2018


Ответы (1)


Вопрос:

Я думал, что AUC для проблем с классификацией, я ошибался?

Вы не ошиблись. Площадь под кривой рабочей характеристики приемника не может быть вычислена для двух числовых векторов, как в вашем примере. Он используется для определения того, насколько хорошо ваш двоичный классификатор соответствует золотому стандартному двоичному классификатору. Вам нужен вектор случаев и контролей или уровни для вектора a, которые помещают каждое значение в одну из двух категорий.

Вот пример того, как это сделать с пакетом pROC:

library(pROC)

# actual value
a <- c(26.77814,29.34224,10.39203,29.66659,20.79306,20.73860,22.71488,29.93678,10.14384,32.63233,24.82544,38.14778,25.12343,23.07767,14.60789)

# predicted value
p <- c(27.238142,27.492240,13.542026,32.266587,20.473063,20.508603,21.414882,28.536775,18.313844,32.082333,24.545438,30.877776,25.703430,22.397666,15.627892)

df <- data.frame(a = a, p = p)

# order the data frame according to the actual values
odf <- df[order(df$a),]

# convert the actual values to an ordered binary classification 
odf$a <- odf$a > 12 # arbitrarily decided to use 12 as the threshold

# construct the roc object
roc_obj <- roc(odf$a, odf$p)
auc(roc_obj)
# Area under the curve: 0.9615

Здесь мы произвольно решили, что порог для золотого стандарта (а) равен 12. Если это так, то наблюдения со значением ниже 12 являются контрольными. Прогноз (p) классифицируется очень хорошо, с AUC 0,9615. Нам не нужно выбирать порог для нашего классификатора прогнозирования, чтобы определить AUC, потому что он не зависит от порогового решения. Мы можем скользить вверх и вниз в зависимости от того, что важнее: найти наблюдения или не ошибиться в классификации элемента управления.

Важная заметка

Я полностью преодолел порог классификатора золотого стандарта. Если вы выберете другой порог (для золотого стандарта), вы получите другой AUC. Например, если мы выбрали 28, AUC будет равен 1. AUC не зависит от порога для предиктора, но абсолютно зависит от порога для золотого стандарта.

РЕДАКТИРОВАТЬ

Чтобы пояснить вышеприведенное замечание, которое видимо было неправильно понято, вы не ошиблись. Этот вид анализа предназначен для задач классификации. Вы не можете использовать его здесь без дополнительной информации. Для этого вам нужен порог для вашего вектора a, которого у вас нет. Вы НЕ МОЖЕТЕ придумать один и ожидать, что получите незавершенный результат для AUC. Поскольку AUC зависит от порога для классификатора золотого стандарта, если вы просто составите порог, как мы сделали в упражнении выше, вы также просто составите AUC.

person De Novo    schedule 14.06.2018
comment
Пороговое значение непрерывной фактической переменной для выполнения анализа кривой ROC в условиях небинарной классификации звучит очень похоже на мошенничество. Если бы это была stats.SE, я бы понизил голос даже за предложение сделать это (и как рецензент отклонил вашу статью). Но с точки зрения SO ваш ответ правильный. - person Calimo; 17.06.2018
comment
@Calimo На практике, как я полагаю, вы знаете, фактическая переменная иногда непрерывна. Он просто имеет хорошо установленный порог. Смысл этого ответа в том, что вы не можете проводить анализ кривой ROC без бинарной классификации. Чтобы продемонстрировать это, было показано, что два разных порога дают разные результаты для площади под кривой. - person De Novo; 17.06.2018
comment
Я согласен с @DanHall. Я воспринял это как демонстрацию. Я знал, что ROC выполняется только в задаче классификации, но когда меня попросили вычислить его, я был сбит с толку. Ответ, который дал Дэн, дал мне необходимые знания, чтобы отклонить запрос. В нашем случае не было четкого порога. - person user6401955; 23.06.2018