1
$\begingroup$

I have matrix of dichotomus correct/false answers with many random missing data. (The data comes from an ability test where questions were randomly drawn from an item bank.)

I am trying to find out how well items fit to a Rasch model.

I have tried different packages so far.

eRm - this worked very well with fewer (60) items but now that I am trying to run it with cc.160 items it takes an unbearably long time to complete.

library('mirt')
raschfit <- mirt(data, 1, itemtype='Rasch')
Theta <- fscores(raschfit, method = 'ML', full.scores=TRUE, scores.only=TRUE)
ifit<-itemfit(raschfit, impute = 10, Theta=Theta)

This works but I am afraid that there is so much imputation going on that it would mask bad items. The main reason I believe this is that by calculating a simple item-total correlation I found an item with -0.3. This item was clearly wrong. However when I looked at the statistics produced by mirt itemfit this item never popped up as a particularly wrong one.

library(ltm)
mod <- rasch(keyed_response)
item.fit(mod)

I couldn't figure out how to do this in ltm. The code above doesn't give me any sensible data (all zeros for X^2)

Could somebody suggest me a good method?

$\endgroup$
  • $\begingroup$ I would suggest to narrow down the question and emphasise its statistical aspect, rather than R issues. Are you trying to calibrate an item bank, perform some test equating? Are data missing by design (in this case ML method would work as long as you can estimate covariance between any two items) or not? $\endgroup$ – chl Jan 22 '15 at 12:06
  • $\begingroup$ The imputation in mirt is only going to work well if the $\theta$ estimates are reasonably good. You may want to resort to plausible value imputations instead if the estimates are really that bad, and average over those instead (will require independent runs and averaging over manually, but it's a start). $\endgroup$ – philchalmers Jan 22 '15 at 16:30
  • $\begingroup$ I am trying to calibrate an item bank (calculate item parameters and get rid of bad items). A random subset of items were given to each participant from a pool of theoretically similar items. $\endgroup$ – SunWuKung Jan 22 '15 at 17:16
  • $\begingroup$ Setting up a two-step procedure might be your best bet here, and simply ignore the missing elements in your tests. Look up how to compute the $\chi^2$ value for IRT item fitting, and see if you can roll your own function to do this (even this could be unstable, if the amount of observed data is too small within each item). The mirt package computes this, so maybe look at the source code for help if you need it. $\endgroup$ – philchalmers Apr 2 '15 at 3:01
  • $\begingroup$ This would probably be a cool next feature for the package, seeing as it seems to be a very usual setting for the implementation of IRT (it's my case too) $\endgroup$ – Bananin Oct 22 at 0:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.