含关联项目与大量缺失值的IRT分析:适配R包咨询
适用于项目族IRT分析的R包推荐
针对你这种多项目族(每组仅作答1题)且需支持项目层面协变量的IRT分析需求,推荐以下几个R包:
1. mirt
这是当前功能最全面的IRT分析工具之一,完美适配你的场景:
- 支持矩阵抽样/项目族设计:可以通过
multipleGroup函数或自定义项目模型,明确指定哪些项目属于同一族; - 轻松纳入项目层面协变量:定义项目模型时,可通过公式形式(比如
item ~ covariate)将项目协变量与项目参数(难度、区分度等)关联; - 数据格式兼容:你提供的宽格式数据,可先用
tidyr::pivot_longer转换为长格式(被试ID、项目族ID、项目ID、得分),再传入mirt函数。
示例思路(伪代码):
# 转换数据格式 long_data <- wide_data %>% pivot_longer(cols = everything(), names_to = c("item_group", "item_id"), names_sep = "", values_to = "score") %>% filter(!is.na(score)) # 定义带项目协变量的IRT模型 model <- mirt(long_data, model = 1, itemtype = "2PL", covdata = item_covariates, # 项目层面协变量数据集 itemdesign = ~ item_group + item_covariate)
2. TAM
专门针对教育测量场景开发的IRT包,对矩阵抽样(项目族)设计的支持非常友好:
- 内置
itemdesign参数,可直接指定项目所属的族,处理“每组仅答1题”的抽样设计; - 支持项目参数与协变量的关联:通过
tam.mml函数的formulaA(区分度)、formulaB(难度)参数,直接将项目协变量纳入模型; - 支持多种IRT模型(1PL、2PL、3PL、GPCM等)。
3. ltm
如果你的需求偏向基础IRT模型(比如2PL),ltm也能满足:
- 通过
constraints参数定义项目族的结构(比如同一族的项目共享某些参数约束); - 可通过
rasch或2pl函数的covariates参数,结合项目层面协变量构建模型。
数据格式转换提示
你当前的宽格式数据(空值表示未作答)需要先转换为长格式,保留每个被试实际作答的项目信息,这样所有IRT包都能更好地处理。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

