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

无法在mirt包中使用MHRM算法进行模型估计的求助

解决mirt包中MHRM算法无法使用的问题

问题背景

在R 4.2.2版本中使用mirt包,尝试通过mixedmirt()函数用Metropolis-Hastings Robbins-Monro(MHRM)算法估计多水平多维项目反应理论(MMIRT)模型,同时测试单水平模型的mirt()函数调用MHRM,均出现报错。

报错详情

  1. 首次调用mixedmirt()未指定method参数时的报错:
> library(mirt)

> 2l.model <- mixedmirt(data = my.data, model = EUR, itemtype = "graded", survey.weights = my.weights, fixed =~ 0, random =~ 1 | my.groups)
Error in ESTIMATION(data = data, model = model, group = rep("all", nrow(data)),  : 
  opts$method %in% c("EM", "QMCEM", "MCEM") non è TRUE
  1. 尝试手动指定method = "QMCEM"后的报错:
> 2l.model <- mixedmirt(data = my.data, model = my.model, itemtype = "graded", method = "QMCEM", survey.weights = my.weights, fixed =~ 0, random =~ 1 | my.groups)
Error: method cannot be changed in mixedmirt() function
  1. 单水平模型调用mirt()指定method = "MHRM"时的报错:
> mirt.model <- mirt(data = my.data, model = my.model, method = "MHRM", survey.weights = my.weights)
Error in ESTIMATION(data = data, model = model, group = rep("all", nrow(data)),  : 
  opts$method %in% c("EM", "QMCEM", "MCEM") non è TRUE

问题原因与修复方案

核心原因

  • mixedmirt()函数不支持自定义估计方法,它默认仅能使用EM类算法(EM/QMCEM/MCEM),无法切换到MHRM,这也是手动指定method参数会报错的原因。
  • 单水平模型中调用MHRM出现报错,是因为MHRM算法不支持带有调查权重(survey.weights)的模型估计,当传入该参数时,MHRM会被自动禁用,只能使用EM类算法。

修复步骤

  1. 多水平MMIRT模型:

    • 放弃使用MHRM算法,mixedmirt()仅支持EM类算法,直接使用默认的EM算法即可,无需指定method参数:
      2l.model <- mixedmirt(data = my.data, model = EUR, itemtype = "graded", survey.weights = my.weights, fixed =~ 0, random =~ 1 | my.groups)
      
    • 若必须使用贝叶斯类算法估计多水平IRT模型,建议改用mirtCAT包中的相关函数,或切换到brms/Stan框架实现自定义模型。
  2. 单水平模型使用MHRM:

    • 移除survey.weights参数,即可正常调用MHRM算法:
      mirt.model <- mirt(data = my.data, model = my.model, method = "MHRM")
      
    • 若必须保留调查权重,只能选择EM/QMCEM/MCEM算法进行估计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:47:07