我在R中使用caTools包来获取R中的AUC。现在我发现它在翻转概率时会返回相同的AUC。这不是真的正确(见下面的例子)。这有什么理论上的理由吗?
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(auc.perf@y.values)
#[1] 1
pred.rocr <- ROCR::prediction(1-p, y)
auc.perf <- ROCR::performance(pred.rocr, measure = "auc")
unlist(auc.perf@y.values)
#[1] 0
我会感激任何建议,谢谢!
答案 0 :(得分:1)
这是因为在colAUC
的最后一行,它返回Auc = pmax(Auc, 1 - Auc)
。我认为没有任何错误(你只需要知道它)。事实上,作者意识到了差异,并将ROC功能与其他包进行了比较(参见此链接:https://stat.ethz.ch/pipermail/r-help/2005-September/079513.html)。