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

在R的ltm包中设置IRT模型难度值失效的技术问询

解决ltm包约束参数未生效的问题

看起来你在使用ltm包设置项目参数约束时,犯了两个关键错误:约束的符号参数(sign)使用不正确,以及可能对参数索引的对应关系理解有误。下面一步步帮你解决:

1. 纠正约束的符号参数(sign)

ltm函数的constr参数要求每行必须是c(parameter_index, sign, value)的格式,其中:

  • sign只能取三个合法值:
    • 0:表示等于约束(这是你需要的固定参数值的场景)
    • 1:表示>=约束
    • -1:表示<=约束
  • 你之前用的1和2都是错误的:1代表的是“参数≥目标值”而非等于;2是完全不合法的取值,这也是为什么你看到Item1的难度没有被固定为1的核心原因。

2. 明确参数索引的对应关系

对于2PL模型(~z1),每个项目对应两个参数:难度(Dffclt)和区分度(Dscrmn),参数向量的顺序是:
Item1 Dffclt, Item1 Dscrmn, Item2 Dffclt, Item2 Dscrmn, ..., Item6 Dffclt, Item6 Dscrmn

也就是说:

  • Item1的难度对应索引1
  • Item6的区分度对应索引12

正确的代码示例

如果你想把Item1的难度固定为1,同时把Item6的区分度固定为-0.5,代码应该写成:

ltm(WIRS ~ z1, constr = rbind(c(1, 0, 1), c(12, 0, -0.5)))

验证参数索引的小技巧

如果你不确定参数对应的索引,可以先运行无约束模型,查看参数向量的名称来确认:

unconstrained_model <- ltm(WIRS ~ z1)
names(coef(unconstrained_model))

这会输出每个参数的具体名称(比如"Item 1.Dffclt"、"Item 1.Dscrmn"),帮你准确找到目标参数的索引。

运行修正后的代码后,你应该能看到Item1的难度被正确设置为1,Item6的区分度为-0.5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:18:18