How does mirt function manage missing data ?

1,670 views
Skip to first unread message

Pierre Michel

unread,
Jun 30, 2016, 6:29:01 AM6/30/16
to mirt-package
Dear Phil,

I would like to know if the mirt function does perform automatically multiple imputations when using it with data with incomplete observations ? If yes, what is the procedure to combine the multiple imputations ?

Thank you by advance,

Pierre.

Phil Chalmers

unread,
Jul 3, 2016, 10:10:48 AM7/3/16
to Pierre Michel, mirt-package
It doesn't do imputation automatically, you have to specify it. It's a conservative imputation approach based on point estimates, but so long as the secondary estimates are accurate and there isn't much missing data then it works fine. See this thread for details: https://groups.google.com/forum/#!searchin/mirt-package/imputations/mirt-package/U37J7u490qs/inqEsSKgwGkJ

Phil

--
You received this message because you are subscribed to the Google Groups "mirt-package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mirt-package...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Pierre Michel

unread,
Jul 4, 2016, 11:09:56 AM7/4/16
to mirt-package, aliasj...@gmail.com
Dear Phil,

Thank you for your response. My question was not really precise. I do not understand, when using MHRM estimation algorithm, how the incomplete observations can be taken into account in the estimation and , how can latent traits estimates be obtained for these observations ? Moreover; once my model is estimated, the only way to compute fit indices such as RMSEA, CFI etc... is to impute the original dataset using the function imputeMissing ? Is this apporach correct ?

Thank you by advance.

Pierre.

Phil Chalmers

unread,
Jul 4, 2016, 11:12:57 AM7/4/16
to Pierre Michel, mirt-package
On Mon, Jul 4, 2016 at 11:09 AM, Pierre Michel <aliasj...@gmail.com> wrote:
Dear Phil,

Thank you for your response. My question was not really precise. I do not understand, when using MHRM estimation algorithm, how the incomplete observations can be taken into account in the estimation and , how can latent traits estimates be obtained for these observations ?

All estimation algorithms in mirt are full-information ML. So missing data are not 'filled-in' in any sense, but rather all available response are used in the optimization process for each response vector. 
 
Moreover; once my model is estimated, the only way to compute fit indices such as RMSEA, CFI etc... is to impute the original dataset using the function imputeMissing ? Is this apporach correct ?

Correct. I can't see any other way to do this because these statistics are based on complete datasets.

Phil

Janna

unread,
Jan 25, 2018, 12:16:15 PM1/25/18
to mirt-package
Hi Phil,
I was wondering if you could comment on what you would consider "much missing data" using this imputation approach.  Is there a rule of thumb, i.e. no more than 10 or 20% missing observations per subject?  Thanks so much!
Janna

Phil Chalmers

unread,
Jan 27, 2018, 11:09:13 AM1/27/18
to Janna, mirt-package
It's really hard to say, as there's a number of factors that are at place (e..g, #item, participants, the type of IRT model, the pattern of missingness, etc). I'd start to worry after around 10% missing regardless though, as that's likely to create such conservative results that they may be misleading. Ideally, the missing data would be imputed using a process outside the model fitting, such as via multiple-imputation methods. HTH. 

Phil

To unsubscribe from this group and stop receiving emails from it, send an email to mirt-package+unsubscribe@googlegroups.com.

Sherry Z

unread,
Jul 11, 2020, 7:34:19 PM7/11/20
to mirt-package
Hi Phil,
   
   Can I ask one more question about using full-information ML to handle the missing data in the mirt package?  

   Assuming I am running a simple 2PL model on an incomplete data set, using EM algorithm by default. Does the full-information ML here mean using the FIML equation shown in Enders(2001) paper (DOI: 10.1207/S15328007SEM0803_5), or the marginal maximum likelihood (MLM) estimation proposed by Bock and Atikin(1981)?  

   If the full-information ML here means the MLM, then how it handles the response pattern likelihood when some responses are missing?  
   For example, we have 3 items, person A has responses [1,0,1], then P(x=[1,0,1]|theta,beta) = P(x=1|theta, beta) * P(x=0|theta,beta) *P(x=1|theta,beta) , in which theta is the person's latent trait level and beta is the item parameters. 
   Person B has responses [1, NA, NA ], does that mean the response pattern likelihood for person B is P(x=1|theta, beta)?  if so, what are the expected values we would get at the E-step when we apply the EM algorithm?  


   I hope I stated my question clearly.  I searched through the forum and did not find the answer, but if I missed it, a link to that thread will also be very helpful. 

many many thanks! 
Sherry

Phil Chalmers

unread,
Jul 20, 2020, 11:09:53 AM7/20/20
to Sherry Z, mirt-package
Hi Sherry,

mirt primarily uses the MML framework outlined by Bock and Atikin(1981). Your description of the algorithm is effectively correct for missing data w.r.t. calculating the marginal probabilities. The E-step doesn't really change when missing data are present, it just affects the marginal probabilities where the prior distribution becomes more important for cases with less information (i.e., the likelihood component becomes less impactful since less information is present for these individuals). See below for a demonstration of this.

library(mirt)
dat <- expand.table(LSAT7)
mod <- mirt(dat, 1, technical = list(storeEtable=TRUE))
Etable <- mod@Internals$Etable[[1]]$r1
Etable

apply(dat, 2, table)
matrix(colSums(Etable), nrow=2)

dat2 <- dat
dat2[1,1] <- NA
mod <- mirt(dat2, 1, technical = list(storeEtable=TRUE))
Etable <- mod@Internals$Etable[[1]]$r1
Etable

apply(dat2, 2, table)
matrix(colSums(Etable), nrow=2)

Phil


--
You received this message because you are subscribed to the Google Groups "mirt-package" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mirt-package...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages