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

使用dplyr/tidyverse按分组变量计算题项内部一致性

问题根因

你之前的代码报错、计算结果完全错误的核心问题是多余执行了pivot_longer()长宽转换:

  • psych::alpha()和MBESS::ci.reliability()两个函数都要求输入为宽格式数值数据集:每一列对应一个测量题项,所有列存储题项得分
  • 转成长格式后嵌套得到的子数据集仅包含name(题项名称)、value(题项得分)两列,完全不符合函数输入要求,因此会触发类型错误,输出完全不符合预期的计算值。
正确实现代码

不需要做任何长宽转换,直接按分组变量嵌套原始宽格式数据即可,完整可运行代码如下:

library(tidyverse)
library(psych)
library(MBESS)

# 复用你构造的示例数据、itemNames变量即可
reliability_res <- mydata %>%
  nest_by(age, raterType) %>%
  mutate(
    # 提取子集中的所有题项列计算alpha系数
    alpha = alpha(
      data %>% select(all_of(itemNames)),
      na.rm = TRUE
    )$total$raw_alpha,
    # 提取子集中的所有题项列计算omega系数
    omega = ci.reliability(
      data %>% select(all_of(itemNames)),
      type = "omega",
      interval.type = "none",
      na.rm = TRUE
    )$est
  ) %>%
  # 移除嵌套的原始数据列,得到最终汇总结果
  select(-data) %>%
  ungroup()
结果校验

你之前手动计算的age=3、raterType="self"分组结果,和上述批量计算的输出完全匹配:

  • 该分组alpha值为-0.3018416
  • 该分组omega值为0.00836356

实用提示:如果实际分析中存在部分分组样本量过小、题项方差为0等异常情况,可以用purrr::safely()包裹计算函数,避免整个计算流程中断,单独定位异常分组做排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:06:27