0

我在 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

我将不胜感激任何建议,谢谢!

4

1 回答 1

1

这是因为在最后一行中colAUC,它返回Auc = pmax(Auc, 1 - Auc)。我不认为有什么问题(你只需要意识到它)。其实作者也意识到了其中的不同,做了一个ROC功能与其他包的对比(见这个链接:https ://stat.ethz.ch/pipermail/r-help/2005-September/079513.html )。

于 2016-03-11T00:15:56.123 回答