コーエンズのカッパ(合意のレベル)を計算したい分割表があります。私は3つの異なるパッケージを使用してみましたが、すべてある程度失敗しているようです。パッケージe1071
には分割表専用の機能がありますが、それも失敗しているようです。以下は再現可能なコードです。concord
パッケージ、、、e1071
およびをインストールする必要がありますirr
。
# Recreate my contingency table, output with dput
conf.mat<-structure(c(810531L, 289024L, 164757L, 114316L), .Dim = c(2L,
2L), .Dimnames = structure(list(landsat_2000_bin = c("0", "1"
), MOD12_2000_binForest = c("0", "1")), .Names = c("landsat_2000_bin",
"MOD12_2000_binForest")), class = "table")
library(concord)
cohen.kappa(conf.mat)
library(e1071)
classAgreement(conf.mat, match.names=TRUE)
library(irr)
kappa2(conf.mat)
これを実行して得られる出力は次のとおりです。
> cohen.kappa(conf.mat)
Kappa test for nominally classified data
4 categories - 2 methods
kappa (Cohen) = 0 , Z = NaN , p = NaN
kappa (Siegel) = -0.333333 , Z = -0.816497 , p = 0.792892
kappa (2*PA-1) = -1
> classAgreement(conf.mat, match.names=TRUE)
$diag
[1] 0.6708459
$kappa
[1] NA
$rand
[1] 0.5583764
$crand
[1] 0.0594124
Warning message:
In ni[lev] * nj[lev] : NAs produced by integer overflow
> kappa2(conf.mat)
Cohen's Kappa for 2 Raters (Weights: unweighted)
Subjects = 2
Raters = 2
Kappa = 0
z = NaN
p-value = NaN
これらが失敗する理由について誰かがアドバイスできますか?私は大きなデータセットを持っていますが、このテーブルは単純なので、それがそのような問題を引き起こす可能性があるとは思いませんでした。