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

R语言irr库计算Kappa:补全非方阵列联表缺失行求助

解决R语言irr库计算Kappa时列联表非方阵的问题

方法一:从数据源直接生成完整方阵(推荐)

这种方法在生成列联表前就确保评分变量包含所有预设类别,避免后续补全的麻烦:

# 1. 定义所有评分类别
categories <- c("Good", "Acceptable", "Unacceptable")

# 2. 将两位评分者的列转换为包含所有类别的因子(假设你的数据框是df,评分列是rater1和rater2)
df$rater1 <- factor(df$rater1, levels = categories)
df$rater2 <- factor(df$rater2, levels = categories)

# 3. 生成完整的3x3列联表
full_tab <- table(df$rater1, df$rater2)

此时生成的full_tab会自动包含所有行和列,未出现的组合会填充0,直接满足kappa2的要求。

方法二:补全已生成的非方阵列联表

如果已经有了缺失行的列联表(比如你现有的2x3表),可以通过以下步骤补全:

假设你的现有列联表名为existing_tab:

categories <- c("Good", "Acceptable", "Unacceptable")

# 1. 将列联表转换为数据框方便操作
tab_df <- as.data.frame.matrix(existing_tab)

# 2. 添加缺失的类别行,填充0
for (cat in categories) {
  if (!cat %in% rownames(tab_df)) {
    tab_df[cat, ] <- rep(0, ncol(tab_df))
  }
}

# 3. 按指定类别顺序调整行和列,确保结构正确
tab_df <- tab_df[categories, categories]

# 4. 转换回列联表格式
full_tab <- as.table(as.matrix(tab_df))

计算Kappa系数

完成列联表补全后,直接调用irr包的kappa2函数:

library(irr)
kappa2(full_tab)

为什么你之前的方法没成功?

  • 直接rbind全零向量时,列联表的table类结构会限制行名匹配,容易出现维度不匹配的问题;
  • 直接修改dimnames需要先调整矩阵的维度(比如把2行改成3行),否则维度和名称长度不匹配会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:48:11