You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算7个评分者所有组合的加权Kappa并整理结果?

计算所有评分者配对的加权Kappa并整理结果

要实现你想要的效果,我们可以分几步来完成,核心是先生成所有唯一的列配对,再批量计算加权Kappa,最后整理成清晰的结构:

步骤1:准备工作

首先加载需要的irr包,确保你的数据已经加载好:

library(irr)

# 你的样本数据
ex <- structure(list(`1` = c(1, 1, 2, 1, 2, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2), `2` = c(1, 1, 1, 1, 2, 1, 1, 1, 2, 3, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2), `3` = c(1, 1, 2, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2), `4` = c(1, 1, 2, 2, 2, 1, 2, 2, 2, 3, 2, 1, 1, 2, 2, 2, 1, 1, 2, 2), pa = c(1, 2, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 3, 2), ta = c(2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 3), ka = c(1, 1, 2, 1, 2, 1, 1, 1, 2, 3, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2)), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))

步骤2:生成所有唯一的列配对

用combn函数生成所有两两不重复的列组合(避免像1_2和2_1这样的重复计算),同时给每个配对命名成你想要的列名1_列名2格式:

# 生成所有两两列组合
col_pairs <- combn(colnames(ex), 2, simplify = FALSE)
# 给每个组合命名
names(col_pairs) <- sapply(col_pairs, function(x) paste(x, collapse = "_"))

步骤3:批量计算加权Kappa

用lapply循环每个列配对,调用kappa2计算加权Kappa:

# 计算所有配对的加权Kappa
kappa_results <- lapply(col_pairs, function(pair) {
  kappa2(ex[, pair], weight = "weighted")  # 指定weight参数为weighted计算加权Kappa
})

步骤4:整理成你需要的结构

选项1:每个配对作为列(存储完整的kappa2对象)

如果你想完全按照你示例里的格式,把每个配对的kappa2结果作为数据框的一列,可以直接转换:

out <- as.data.frame(kappa_results)

这样你可以通过out$1_2来查看对应配对的完整Kappa分析结果。

选项2:提取关键统计量成可视化友好的表格

如果是为了后续可视化分析,更推荐把关键统计量(比如Kappa值、标准误、P值)整理成长格式数据框,方便绘图:

out_df <- data.frame(
  Pair = names(kappa_results),
  Weighted_Kappa = sapply(kappa_results, function(x) x$value),
  Standard_Error = sapply(kappa_results, function(x) x$se),
  Z_Statistic = sapply(kappa_results, function(x) x$statistic),
  P_Value = sapply(kappa_results, function(x) x$p.value)
)

这个表格会清晰展示每个配对的核心结果,直接拿来做柱状图或热力图都很方便。

内容的提问来源于stack exchange,提问作者Fredrik Nylén

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:44:43