R语言mirt包multipleGroup与DIF函数运行报错解决求助
错误原因排查
你遇到的group input provided is not valid报错以及后续DIF调用错误由三个核心问题导致:
- 代码中存在未定义的模型变量:你仅定义了
gmModel、cuModel、diModel三个子模型,但后续调用multipleGroup时使用了未赋值的F1Model、F2Model、F3Model,未定义变量会干扰multipleGroup的参数识别逻辑 multipleGroup的分组参数传入不符合要求:如果传入外部向量作为分组依据,需要保证向量无缺失值、有效分组类别数≥2;更稳妥的方式是直接传入数据框内的分组列名字符串DIF函数参数配置错误:which.par参数是指定要检验的题目参数类型(比如斜率、截距),不需要传入分组变量,分组信息已经包含在multipleGroup输出的模型对象中
修复步骤
第一步:修正模型定义,清理冗余变量
把未定义的F1/F2/F3模型替换为你实际编写的三个子模型:
# 子模型对应更名,避免未定义变量报错 F1Model <- mirt.model(gmModel) F2Model <- mirt.model(cuModel) F3Model <- mirt.model(diModel)
第二步:修正multipleGroup的分组参数传入
优先用数据框内的列名作为分组参数,提前清洗缺失值避免报错:
# 先检查分组变量的有效值,确认无无效分组、缺失值占比合理 table(race, useNA = "ifany") table(gender, useNA = "ifany") # 剔除分组变量/题项为缺失的行 Q_Data_clean <- na.omit(Q_Data[, c(paste0("Q_", 1:18), "Demo_Sex", "Demo_Race")]) # 传入列名字符串作为分组依据,分组数≥3时需要指定reference_group参数设置参照组 Full_Race <- multipleGroup(Q_Data_clean, fullModel, group = "Demo_Race", reference_group = 1) Full_Gender <- multipleGroup(Q_Data_clean, fullModel, group = "Demo_Sex", reference_group = 1) # 子模型的multipleGroup调用同理 F1_Race <- multipleGroup(Q_Data_clean, F1Model, group = "Demo_Race", reference_group = 1) F1_Gender <- multipleGroup(Q_Data_clean, F1Model, group = "Demo_Sex", reference_group = 1) F2_Race <- multipleGroup(Q_Data_clean, F2Model, group = "Demo_Race", reference_group = 1) F2_Gender <- multipleGroup(Q_Data_clean, F2Model, group = "Demo_Sex", reference_group = 1) F3_Race <- multipleGroup(Q_Data_clean, F3Model, group = "Demo_Race", reference_group = 1) F3_Gender <- multipleGroup(Q_Data_clean, F3Model, group = "Demo_Sex", reference_group = 1)
第三步:正确配置DIF函数参数
检验均匀+非均匀DIF的配置示例如下:
# 检验所有题目的斜率(a1)和截距(d)是否存在种族DIF race_dif_result <- DIF(Full_Race, which.par = c("a1", "d"), scheme = "drop") # 输出DIF检验结果 print(race_dif_result) # 性别DIF检验同理 gender_dif_result <- DIF(Full_Gender, which.par = c("a1", "d"), scheme = "drop") print(gender_dif_result)
如果仅需要检验均匀DIF,把which.par参数改为仅"d"即可。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

