包caTools中的R函数colAUC因大样本而失败

时间:2014-04-19 07:13:49

标签: r auc

例如:

require(caTools)
colAUC(runif(90000), sample(c(0,1), 90000, replace = TRUE))
             [,1]
0 vs. 1 0.5000629

工作正常,但是

colAUC(runif(100000), sample(c(0,1), 100000, replace = TRUE))

给出

            [,1]
0 vs. 1   NA
Warning message:
In n1 * n2 : NAs produced by integer overflow

我做错了什么,或者这可能是一个错误? ROCR :: performance为这样大小的样本提供了合理的答案。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。首先,colAUC具有参数alg,其允许"Wilcoxon""ROC"的选项。 "ROC"选项通过使用梯形规则对ROC曲线进行积分来计算AUC,这是我所期望的,并且它不会给较大的样本带来错误,例如

> colAUC(runif(1000000), sample(c(0,1), 1000000, replace = TRUE), alg = "ROC")
             [,1]
0 vs. 1 0.5004179

然而,alg的默认值为"Wilcoxon",此算法计算n1 * n2,其中n1n2table计算语句,因此是整数类型。这意味着一个32位整数 - R显然还不支持64位整数。因此产生溢出错误。如果在乘法之前将n1和n2转换为数字,则可以删除此错误。我会给软件包维护者发电子邮件,以便他知道这个问题。

更新:我收到了来自软件包维护者的回复邮件,说他已经通过将n1和n2转换为双打来修复此问题。