0

例如:

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 为这种大小的样本提供了一个合理的答案。

4

1 回答 1

1

回答我自己的问题。首先, colAUC 具有alg允许选项"Wilcoxon"or的参数"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 * n2wheren1n2table语句计算,因此是整数类型。这意味着 32 位整数 - R 显然还不支持 64 位整数。所以产生了溢出错误。如果在乘法之前将 n1 和 n2 转换为数字,则可以消除此错误。我会向包维护者发送电子邮件,以便他知道这个问题。

更新:我从包维护者那里收到一封电子邮件,说他已经通过将 n1 和 n2 转换为双打来解决这个问题。

于 2014-04-19T22:46:24.310 回答