擅长:python、mysql、java
<p>作者的解决方案行不通,因为在kappa2函数的<a href="https://github.com/cran/irr/blob/master/R/kappa2.R" rel="nofollow noreferrer">code</a>中,它将您的评级转换为矩阵,一旦您将因子转换为矩阵,级别将丢失,这是一行:</p>
<pre><code>ratings <- as.matrix(na.omit(ratings))
</code></pre>
<p>您可以在数据上尝试,它将转换为字符:</p>
<pre><code>lvl = 0:100
ratings = data.frame(label = factor(label[,1],levels=lvl),
pred = factor(pred[,1],levels=lvl))
as.matrix(ratings)
label pred
[1,] "0" "0"
[2,] "1" "1"
[3,] "1" "1"
[4,] "1" "0"
[5,] "0" "3"
[6,] "14" "4"
[7,] "53" "54"
[8,] "3" "6"
</code></pre>
<p>同样的结果:</p>
<pre><code>kappa2(ratings,weight="equal")
Cohen's Kappa for 2 Raters (Weights: equal)
Subjects = 8
Raters = 2
Kappa = 0.368
z = 1.79
p-value = 0.0742
</code></pre>
<p>我建议使用<code>DescTools</code>,您只需要使用R中的<code>table()</code>函数提供混淆矩阵,并正确声明上述因子:</p>
<pre><code>library(DescTools)
CohenKappa(table(ratings$label,ratings$pred), weight="Unweighted")
[1] 0.245283
CohenKappa(table(ratings$label,ratings$pred), weight="Equal-Spacing")
[1] 0.8359909
</code></pre>