You need to enable JavaScript to run this app. 使用group_by()按被试分组计算ICC值时返回相同结果的问题
优惠活动
大模型
产品
解决方案
定价
更多

使用group_by()按被试分组计算ICC值时返回相同结果的问题

问题根源

所有分组返回完全一致ICC值的核心原因是dplyr非标准求值规则与DescTools::ICC的参数传递逻辑不兼容:
在group_by()后的summarise()调用中,直接在ICC()函数内部用.引用数据时,.不会被自动解析为「当前分组的子集数据」,而是会被捕获为管道起始位置的全量原始数据集(包含SubID分组列)。因此每次迭代计算ICC时,传入函数的都是同一个三列全量数据,最终所有分组的返回值与全量数据集计算的ICC值完全一致,不存在按分组迭代计算的过程。

修复方案

需要显式获取当前分组的纯数据(自动剔除分组列)传入ICC函数,避免上述求值偏差,推荐写法:

df %>%
  group_by(SubID) %>%
  summarise(
    icc = DescTools::ICC(x = cur_data())$results[3, 2]
  )

其中cur_data()是dplyr分组上下文的内置函数,不受.的求值歧义影响,能准确返回当前分组去掉分组列后的纯数据框。

结果验证

上述代码运行后会得到按分组独立计算的ICC结果,与全量计算的固定值有明显差异:

# A tibble: 3 × 2
  SubID    icc
  <dbl>  <dbl>
1     1 -0.0769
2     2 -0.286 
3     3  0.500

注意:DescTools::ICC要求输入数据仅包含参与信度计算的评分变量,不能携带分组列。cur_data()会自动剔除当前分组的标识列,仅保留Rate1、Rate2作为计算输入,避免将分组列误识别为评分变量导致结果偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 09:36:04