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

如何用irr包kappa2()批量计算各item的Cohen's Kappa并汇总至DataFrame

批量计算多个项目的Cohen's Kappa值

可以通过分组处理每个项目的两次测量列,结合irr包的kappa2()函数实现批量计算,最终汇总成指定结构的DataFrame。以下是具体实现步骤:

1. 加载必要的包

首先确保安装并加载irr包:

install.packages("irr") # 若未安装则执行此步
library(irr)

2. 批量计算并汇总结果

使用lapply遍历每个项目,提取对应的两次测量列计算Kappa值,再将所有结果合并为目标结构的DataFrame:

# 生成示例数据(可替换为你的实际数据)
items <- data.frame(matrix(0, nrow = 51, ncol = 41))
colnames(items) <- c("ID", paste(rep(paste0("item", 1:20), each = 2), c("_1", "_2"), sep = ""))
items$ID <- 1:51
set.seed(123)
items[, 2:41] <- matrix(sample(c(0, 1), size = 20 * 2 * 51, replace = TRUE), ncol = 40)

# 获取所有唯一的项目名称
item_names <- unique(sub("_.*", "", colnames(items)[-1]))

# 批量计算每个项目的Kappa值并整理结果
result_list <- lapply(seq_along(item_names), function(i) {
  # 获取当前项目的两次测量列
  current_cols <- paste0(item_names[i], c("_1", "_2"))
  # 计算Cohen's Kappa
  kappa_result <- kappa2(items[, current_cols])
  
  # 整理成目标结构的单行DataFrame
  data.frame(
    item = i,
    method = kappa_result$method,
    subjects = kappa_result$subjects,
    raters = kappa_result$raters,
    irr.name = "Kappa",
    value = kappa_result$value,
    stat.name = "Z",
    statistic = kappa_result$statistic,
    p.value = kappa_result$p.value,
    stringsAsFactors = FALSE
  )
})

# 合并所有结果为一个DataFrame
final_results <- do.call(rbind, result_list)

# 查看结果
print(final_results)

代码说明

  • sub("_.*", "", colnames(items)[-1]):从列名中提取项目前缀(去除_1/_2后缀),得到唯一的项目列表。
  • lapply:遍历每个项目,对对应的两列调用kappa2()计算Kappa值。
  • do.call(rbind, result_list):将每个项目的结果行合并成最终的汇总DataFrame。

运行后,final_results将完全符合你期望的结构,包含每个项目的Kappa值、统计量Z值和p值等信息。

内容的提问来源于stack exchange,提问作者user21538383

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:29:57