在R中使用caTools时错误的AUC

时间:2016-03-10 22:57:57

标签: r auc

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

我会感激任何建议,谢谢!

1 个答案:

答案 0 :(得分:1)

这是因为在colAUC的最后一行,它返回Auc = pmax(Auc, 1 - Auc)。我认为没有任何错误(你只需要知道它)。事实上,作者意识到了差异,并将ROC功能与其他包进行了比较(参见此链接:https://stat.ethz.ch/pipermail/r-help/2005-September/079513.html)。