如何用R的mirt包拟合指定结构的高阶IRT模型?
高阶IRT模型设定方案(mirt包)
针对你需要对比的两个高阶模型,直接使用mirt()函数自定义因子结构即可,无需依赖bfactor()。以下是具体实现代码:
模型(a):低阶因子加载于通用因子,且低阶因子间不相关
# 定义高阶模型结构 model_a <- ' # 通用因子G,加载所有60个项目 G = 1-60 # 低阶因子F1(对应前30项)、F2(对应后30项) F1 = 1-30 F2 = 31-60 # 指定高阶载荷:F1和F2均加载于G COV = G -> F1, G -> F2 ' # 拟合Rasch模型 mod_a <- mirt(all_data, model = model_a, itemtype = "Rasch")
注:mirt默认会固定低阶因子的方差为1,且不设定低阶因子间协方差(即协方差为0),符合模型(a)的要求。
模型(b):低阶因子加载于通用因子,且允许低阶因子间相关
# 定义模型结构,仅放开低阶因子的协方差限制 model_b <- ' G = 1-60 F1 = 1-30 F2 = 31-60 # 指定高阶载荷,同时允许F1与F2相关 COV = G -> F1, G -> F2, F1 ~~ F2 ' # 拟合Rasch模型 mod_b <- mirt(all_data, model = model_b, itemtype = "Rasch")
后续对比操作
拟合完成后,可通过以下代码对比两个模型的拟合优度:
anova(mod_a, mod_b)
也可通过summary(mod_a)或summary(mod_b)查看因子载荷、参数估计等结果。
内容的提问来源于stack exchange,提问作者Nicolas N.
相关产品推荐
相关产品推荐

