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

如何在R中计算Cohen's Kappa与PABAK系数?

R中同时计算Cohen's Kappa与PABAK的实现方案

你可以通过IRR包计算Cohen's Kappa+自定义函数实现PABAK的组合方案满足需求,完全适配两名评分者的场景,不会引入Fleiss' Kappa适配多评分者的偏差:


1. 用IRR包计算Cohen's Kappa

直接调用IRR::kappa2()即可得到你需要的Cohen's Kappa结果,示例代码如下:

# 加载IRR包
library(IRR)

# 示例数据:两列分别对应两名评分者的分类结果
score_df <- data.frame(
  rater1 = c(rep("类别1",85), rep("类别2",10), rep("类别3",5)),
  rater2 = c(rep("类别1",80), rep("类别2",12), rep("类别3",8))
)

# 计算未加权Cohen's Kappa,如需加权修改weight参数即可
cohen_kappa_res <- kappa2(score_df, weight = "unweighted")
# 查看结果
print(cohen_kappa_res)

2. 自定义函数计算PABAK

PABAK的计算逻辑固定,针对两名评分者的公式为:
PABAK = (k * Po - 1)/(k - 1)
其中k为分类变量的类别总数,Po为两名评分者的观察一致率。不需要依赖其他包即可实现:

# PABAK计算函数
calc_pabak <- function(rater_a, rater_b) {
  # 计算观察一致率
  obs_agree <- mean(rater_a == rater_b)
  # 计算总类别数
  class_n <- length(unique(c(rater_a, rater_b)))
  # 计算PABAK
  pabak <- (class_n * obs_agree - 1)/(class_n - 1)
  return(pabak)
}

# 调用函数得到结果
pabak_res <- calc_pabak(score_df$rater1, score_df$rater2)
print(pabak_res)

你可以直接对照PABAK的官方计算公式验证结果,该方案完全符合你优先使用IRR包得到Cohen's Kappa、同时避免Fleiss' Kappa适配问题的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:24:04