如何从mirt对象提取项目参数数据框?附部分参数固定建模需求
从训练好的mirt对象提取df.param格式参数数据框
要从已训练好的mod(mirt对象)中提取和df.param结构完全一致的参数数据框,直接用mirt包的extract.mirt函数提取参数细节,再转换为长格式数据框即可,具体步骤如下:
提取模型参数列表
用extract.mirt(mod, 'pars')获取每个项目的完整参数信息,包括项目名、参数值、是否允许估计等核心字段。转换为df.param格式的数据框
通过循环处理每个项目的参数,拼接成标准的df.param结构:
library(mirt) # 从训练好的mod中提取参数列表 par_list <- extract.mirt(mod, 'pars') # 转换为df.param格式的数据框 df.param_from_mod <- do.call(rbind, lapply(par_list, function(item_pars) { data.frame( item = item_pars$item, name = names(item_pars$value), parnum = seq_along(item_pars$value), value = unname(item_pars$value), est = item_pars$est, stringsAsFactors = FALSE ) }))
验证格式一致性
你可以用all.equal(df.param, df.param_from_mod)检查两个数据框的结构和数值是否完全匹配(因设置了随机种子,参数值会和模拟结果完全一致)。
固定部分参数重新建模
拿到这个数据框后,只需把要固定参数的est列改为FALSE,再传入mirt函数重新拟合即可。比如要固定item1的难度参数:
# 定位item1的难度参数(name为d的行),将est设为FALSE df.param_from_mod$est[df.param_from_mod$item == 'item1' & df.param_from_mod$name == 'd'] <- FALSE # 用修改后的参数框重新拟合模型 fixed_mod <- mirt(dat, model = 1, itemtype = '2PL', pars = df.param_from_mod)
内容的提问来源于stack exchange,提问作者Julien
相关产品推荐
相关产品推荐

