2016-03-10 3 views
0

Я использовал пакет caTools в R, чтобы получить AUC в R. Только теперь я узнал, что он возвращает ту же AUC, когда вероятности перевернуты. Это не совсем правильно (см. Пример ниже). Есть ли какая-то теоретическая причина, когда это имеет смысл?неправильный AUC при использовании caTools в R

library(caTools) 
p <- runif(100) 
y <- rep(0,100) 
y[p>0.5] <- 1 
caTools::colAUC(p,y) 
#  [,1] 
#0 vs. 1 1 
caTools::colAUC(1-p,y) 
#  [,1] 
#0 vs. 1 1 

При использовании пакета ROCR результаты выглядят так, как ожидалось.

library(ROCR) 
pred.rocr <- ROCR::prediction(p, y) 
auc.perf <- ROCR::performance(pred.rocr, measure = "auc") 
unlist([email protected]) 
#[1] 1 
pred.rocr <- ROCR::prediction(1-p, y) 
auc.perf <- ROCR::performance(pred.rocr, measure = "auc") 
unlist([email protected]) 
#[1] 0 

Буду признателен за любые предложения, спасибо!

ответ

1

Это потому, что в последней строке в colAUC оно возвращает Auc = pmax(Auc, 1 - Auc). Я не думаю, что есть что-то неправильно (вам просто нужно знать об этом). Фактически, автор знает о различии и сравнивал функцию ROC с другими пакетами (см. Эту ссылку: https://stat.ethz.ch/pipermail/r-help/2005-September/079513.html).

+0

благодарит за ответ. В документации также упоминается: «Возвращенная AUC всегда больше 0,5, что эквивалентно тестированию для каждой функции colAUC (x, y) и colAUC (-x, y) и возвращает значение более крупного». Не читал это достаточно тщательно. –

 Смежные вопросы

  • Нет связанных вопросов^_^