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のオプションを許可するパラメーターがあります。このオプションは、台形則を使用して ROC 曲線を統合することによって AUC を計算します。これは私が期待するものであり、より大きなサンプルの場合、エラーは発生しません。"Wilcoxon""ROC""ROC"

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

ただし、 のデフォルト値はalg"Wilcoxon"あり、このアルゴリズムn1 * n2は wheren1およびn2はステートメントによって計算されるtableため、整数型です。これは 32 ビット整数を意味します - R は明らかに 64 ビット整数をまだサポートしていません。そのため、オーバーフロー エラーが発生します。乗算の前に n1 と n2 が数値にキャストされていれば、このエラーは解消される可能性があります。パッケージ管理者にメールして、この問題を認識してもらいます。

更新: パッケージ管理者から、n1 と n2 を double にキャストすることでこれを修正したというメールが返ってきました。

于 2014-04-19T22:46:24.310 に答える