例如:
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为这样大小的样本提供了合理的答案。
答案 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
,其中n1
和n2
由table
计算语句,因此是整数类型。这意味着一个32位整数 - R显然还不支持64位整数。因此产生溢出错误。如果在乘法之前将n1和n2转换为数字,则可以删除此错误。我会给软件包维护者发电子邮件,以便他知道这个问题。
更新:我收到了来自软件包维护者的回复邮件,说他已经通过将n1和n2转换为双打来修复此问题。