R软件包pROC总是报告AUC>0.5

3

两种方式

pROC::auc(0:1, 1:0)
pROC::auc(0:1, 0:1)

给出1的AUC。

经过更多实验,似乎它总是返回max(AUC,1-AUC)。 是否有选项可以更改此设置? 我找不到GitHub存储库来报告此问题。


1
并非如答案所指出的那样是一个错误,但为了以后参考,这里是该GitHub仓库的链接:https://github.com/xrobin/pROC - Calimo
2个回答

6

pROC::roc函数中有一个参数direction,默认设置为auto。 从roc的文档中可以看到:

direction - 进行比较的方向?“auto”(默认值):自动确定中位数所在的组,并相应地采取方向。 “>”:如果控制组的预测值高于病例组的值(控制 > t >= 病例)。 “<”:如果控制组的预测值低于或等于病例组的值(控制 < t <= 病例)。

pROC::auc(0:1, 1:0, direction = "<")
pROC::auc(0:1, 0:1,  direction = "<")

Calimo在评论中给出了这种理论的解释:没有理由认为在所有情况下,更高的预测值都更积极。就像一个模型指示负类概率的情况一样。

有关此问题的更多信息,请参见此处


自动化并没有任何意义。如果你的预测是错误的,它也应该保持不变。感谢您的回答。 - F. Privé
1
最初的理由并不是“比随机更糟糕”,而是没有理由认为更高的预测值在所有情况下都更积极。我见过很多情况,其中更高的值表示负面结果。想想一个指示负类概率的模型。 - Calimo
@Calimo,这确实是正确的,我的解释被事实掩盖了,即我总是以1作为二元分类中具有更高概率的类别来设置数据(或者至少是模型所追求的)。同时,我也要感谢您提供的pROC - missuse

2
尝试使用ModelMetrics中的auc函数:
ModelMetrics::auc(0:1, 1:0)
ModelMetrics::auc(0:1, 0:1)

输出:

[1] 0
[1] 1

这似乎是一个很棒的软件包,而且非常快。谢谢! - F. Privé

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接