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

R中计算两名评分者逐行百分比一致性并新增列的实现方法

解决方案

1. 核心逻辑说明

*你提到单受试者无法计算ICC,因此对连续型评分计算逐行相对百分比一致性是合理方案,核心逻辑如下:

  • 连续值逐行一致性采用相对偏差倒数转换法:一致性百分比 = (1 - |rater1评分 - rater2评分| / 两者评分均值) * 100%
  • 为避免差值过大出现负百分比,可限制最低为0%
  • 注意:irr包的agree()函数默认适配分类变量,仅判断评分是否完全相等,不适合你的连续时长数据场景

2. 代码实现

首先加载需要的依赖包:

library(dplyr)
library(irr) # 计算整体ICC用

2.1 逐行计算一致性百分比

直接用向量化运算即可,无需逐行遍历,执行效率更高:

# 构造你的示例数据集
df <- tibble(
  behavior = c("run", "stand", "sit", "sleep"),
  rater1 = c(48, 23, 389, 288),
  rater2 = c(59, 91, 401, 290)
)

# 新增逐行一致性列
df <- df %>%
  mutate(
    # 计算相对一致性百分比,保留1位小数,最低为0%
    agreement = pmax(0, 1 - abs(rater1 - rater2)/((rater1 + rater2)/2)) * 100,
    agreement = round(agreement, 1)
  )

运行后得到的结果如下:

behaviorrater1rater2agreement
run485979.4
stand23910.0
sit38940197.0
sleep28829099.3

2.2 计算整体ICC

你可以同时输出整体ICC结果,和逐行结果对照定位影响整体一致性的异常条目:

# 提取两位评分者的评分列计算ICC
icc_result <- icc(df[, c("rater1", "rater2")], model = "twoway", type = "agreement", unit = "single")
print(icc_result)

3. 可选:逐行调用agree()的实现(仅适合分类变量)

如果你后续处理分类数据需要逐行调用agree(),可以用rowwise()实现需求:

library(irr)
df %>%
  rowwise() %>%
  mutate(
    # 把当前行的两个评分转成矩阵输入agree函数
    agreement = agree(rbind(c(rater1, rater2)))$value
  ) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:12:01