0

I have "0=incorrect" and "1=correct" coded questionnaire, including 28 questions. There are missing data and I imputed the missing data with the Multiple Imputation method. After having multiple imputations from the mice library, I want to get the IRT parameter estimates as a pool estimate in R. I can get parameter estimates from each 5 imputed datasets separately but I want to have a pooled estimations in one step.

Here is my code:

# only questions from the column 4 to 31, 28 questions
data_for_imputation <- MYDATA[, 4:31] 
data_for_imputation[, 1:28] <- lapply(data_for_imputation[, 1:28], factor)

# I have created 5 different datasets without missing data with this command
imputation_of_data <- mice(data_for_imputation, m = 5, maxit = 10, method = 'logreg', printFlag = FALSE) 

# extracting 5 imputed datasets as data.frame
imputed_data_alldatasets <- complete(imputation_of_data, action = "long", include = FALSE) 

imputed_data_alldatasets[,3:30] <- as.data.frame(lapply(imputed_data_alldatasets[,3:30], function(x) as.numeric(as.character(x))))

Models <- with(imputation_of_data, tam.mml(imputed_data_alldatasets[,3:30]))

Up to here everything seems working. With the with() function, I carried out IRT analyses to every datasets in the data.frame and I get a 'mira' object which normally the pool() function requires in mice. This 'mira' object includes all the analyses of 5 imputed datasets as a list:

summary(pool(Models))

When I try to pool the estimations, it gives this error "Error:

Error: No tidy method for objects of class tam.mml In addition: Warning message: In get.dfcom(object, dfcom) : Infinite sample size assumed.

I have been trying all the different variations for days. I am maybe trying something that doesn't exist or work in R. Any other method or ways to get IRT item parameters from imputed datasets would be very helpful.

The pool function at the end unfortunately doesn't work and doesn't give me the expected pooled estimations.

  • (1) your questions is in need of a concise title and more targeted [formatting](https://stackoverflow.com/editing-help); (2) this question might be better adressed at [stats.stackexchange](https://stats.stackexchange.com/); (3) in anticipation of some answers: (i) there is no mice pooling method available for models obtained from TAM (or any other IRT package); (ii) TAM implements a marginal maximum likelihood estimation (not listwise deletion or similar); ie. there is no need for multiple imputation of questionnaire data; you can say that MML estimation is similar to logreg-imputation – Tom May 17 '23 at 06:30
  • Hello @Tom, thanks a lot for your response and your help. I have tried to shorten my title and did some format regulations. Sorry, it's my first time using this platform. Regarding your suggestions; 3-i) Do you mean one can not carry out IRT analyses with multiple imputed data? That means then I am trying something which actually doesn't exist. 3-ii) I am also not very experienced statistically, so do you mean TAM already imputes or predicts the missing data information by MML? How does it really work? – Enes Bayrakoglu May 17 '23 at 10:09
  • @Tom Since I have a relatively small data set (605 participants from 3 different groups), I can't hold the measurement invariance to get some ability scores at the end. I was recommended to use some non-parametric IRT methods since they are not that dependent on sample size. However, recommended Mokken's 2PL non-parametric model does not work with missing data. Using listwise deletion makes my sample size a lot smaller, and gives less information. That was the reason why I am trying to impute my dataset. Could you please also make a remark on this idea? Thanks a lot again for your opinions. – Enes Bayrakoglu May 17 '23 at 10:30

1 Answers1

0

The pool() function relies on the broom package to correctly extract the estimated coefficients. tam.mml appears to not be supported in broom yet, https://broom.tidymodels.org/articles/available-methods.html.

You can try to write your own tidy() function by following this page, https://www.tidymodels.org/learn/develop/broom/. You could compare with the code in this answer, Is it possible to use lqmm with a mira object?

But, I'm not familiar with TAM models and the statistical theory behind them. I'd suggest consulting an expert to confirm that the pool() function will give correct results.