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

mirt对象生成的TIF图与summary结果不符及参数转换报错求助

问题1:测验信息曲线(TIF)与fscores结果范围不一致

这是正常差异,两者的统计含义完全不同:

  • plot(mod, type='info') 默认展示的是**测验本身在全θ范围(通常-4到4)**的信息分布,属于测验的固有属性,和样本无关。
  • summary(thetas)输出的是当前样本的θ得分范围(-2.9到-1.4),仅反映你手头这批数据的能力分布。

如果想让TIF图聚焦到样本的θ范围,手动设置x轴即可:

plot(mod, type='info', xlim = c(-2.9, -1.4))
问题2:a/d参数转换为b参数报错

先明确李克特项目(graded模型)的参数对应逻辑:单维情况下,b参数(阈值位置)的计算公式是 b_jk = -d_jk / a_j,其中a是项目区分度,d_jk是第j个项目的第k个阈值参数。报错多因参数结构不匹配,按以下步骤排查解决:

  1. 检查originalparams的结构
    确保它是数据框/矩阵格式:每行对应一个项目,第一列是a参数,后续列是该项目的d阈值(比如5点李克特对应4个d参数),示例结构如下:
    a   d1   d2   d3   d4
    1.2 -1.5 -0.5  0.5  1.5
    ...
    
  2. 手动批量转换b参数
    若结构正确,直接用代码计算:
    # 提取a参数和所有d阈值
    a_vals <- originalparams[, 1]
    d_vals <- originalparams[, -1]
    # 计算每个阈值对应的b参数,转置回每行一个项目的结构
    b_params <- t(-t(d_vals) / a_vals)
    
  3. 用mirt内置函数提取已转换的b参数
    也可以直接从生成的mod对象里提取,避免手动计算出错:
    item_params <- coef(mod, simplify = TRUE)$items
    # 提取所有以b开头的列,就是转换后的阈值参数
    b_params <- item_params[, grep("^b", colnames(item_params))]
    

如果仍报错,检查是否存在a=0的情况(区分度为0会导致除以0错误),或者originalparams里有缺失值、非数值类型的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:20:56