Reproducible example as below:

rm1 <- RM(WIRS,sum0 = FALSE)
rm3<-mirt(WIRS,model =1,itemtype = 'Rasch')
coef(rm3,IRTpars = TRUE)

rasch() is rasch model,mirt(model =1,itemtype = 'Rasch') is Rasch model too. The expect result rm1, rm2 ,rm3 should be equal or close.

But output are quiet different.

Is there anything wrong with my R script?If not,how to explain the result difference?

I am new to IRT, thanks in advance!


1 Answer 1


As @philchalmers said, there are a number of ways to parameterize IRT models. I'll expand on this. The IRT parameterization of a 1-parameter logistic model (aka the logistic Rasch model) is:

$P(Y_{ij} = 1|\theta_j) = logit^{-1}[a(\theta_j - b_i)]$

Where $a$ is discrimination, $b_i$ are the item difficulties, $i$ indexes items, and $j$ indexes respondents. However, the software might report the slope-intercept parameterization:

$P(Y_{ij} = 1|\theta_j) = logit^{-1}(\alpha\theta_j + \beta_i)$

Here, $a = \alpha$, and $b_i = -\frac{\beta_i}{\alpha}$

I know that behind the scenes, Stata's IRT commands fit all IRT models in the slope-intercept parameterization behind the scenes (actually, they call on the generalized SEM command, which uses that parameterization), and I suspect the same is true of many other software packages.

To my knowledge, Phil's mirt package will report the slope-intercept parameterization by default unless you ask otherwise (via the IRTpars = TRUE option). You appear to have done so with the coef function. But I don't know the defaults of the other two packages, and they may well be reporting the slope-intercept parameterization. If so, that is probably why you are getting different difficulty parameters. If your discrimination parameters differ, that would be a problem, and it would invalidate my explanation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.