在R里估计IRT模型时,我一般用mirt()函数,最近开始用ltm()函数,于是就遇到了一个问题(以ltm包自带的WIRS数据为例):
以前用mirt()函数的时候,使用coef()函数可以很方便地提取出题目参数,但是这次用coef()函数提取ltm()函数里的难度和区分度时,发现区分度没问题,只是名称不同(mirt中叫a1参数,ltm中叫Dscrmn),但是难度就不对了,不只是名称不同(mirt中叫d参数,ltm中叫Dffclt),数值也不同(比如WIRS第一题的难度,mirt算出来是-0.522,ltm算出来是3.401)。
后来用“$coefficients”的方法从ltm的结果中提取出了每道题目的截距(Intercept)和在z1因子上的载荷,这时就可以和mirt的结果对上了。
所以,coef()提取出来的难度和“$coefficients”提取出来的截距到底是什么关系呢?有没有什么方法可以对二者进行换算呢?
results <- ltm(WIRS ~ z1)
coef(results)的结果是:
Dffclt Dscrmn
Item 1 3.4011395 0.1534064
Item 2 -0.9421221 0.3676923
Item 3 0.8093853 1.7179970
Item 4 1.3689278 1.0101043
Item 5 0.4762685 2.0324137
Item 6 1.6804632 1.3745785
results$coefficients的结果是:
(Intercept) z1
Item 1 -0.5217566 0.1534064
Item 2 0.3464111 0.3676923
Item 3 -1.3905215 1.7179970
Item 4 -1.3827598 1.0101043
Item 5 -0.9679746 2.0324137
Item 6 -2.3099285 1.3745785