Speed up MAP estimation in multidimensional CAT

37 views
Skip to first unread message

Dirk Pelt

unread,
May 22, 2018, 8:58:42 AM5/22/18
to mirt-package
Dear Phil,

I am using the mirt package to implement a multidimensional CAT and am looking for ways to reduce computation time. I know from previous work with unidimensional CAT in combination with EAP estimation, that by taking the posterior distribution of the last (interim) theta estimation as the prior for the next estimation cycle, only the answer to the last item has to be integrated (instead of the full response vector).

Is a similar 'trick' possible with multidimensional MAP estimation? 

From studying the mirtCAT documentation, I am guessing something like this might be possible, somewhere in the 'update' types of functions perhaps?

On a related note: in your github code I found the following lines in fscores.internal:

            if(mirtCAT){
                estimate <- try(nlm(MAP.mirt,scores[ID, ],pars=pars, patdata=tabdata[ID, ], den_fun=den_fun,
                                    itemloc=itemloc, gp=gp, prodlist=prodlist, max_theta=max_theta, hessian=hessian,
                                    CUSTOM.IND=CUSTOM.IND, ID=ID, iterlim=1, stepmax=1e-20, ...))


Are the last two statements (iterlim=1, stepmax=1e-20) related to my question? Hope you can help,

Best,
Dirk 

Phil Chalmers

unread,
May 22, 2018, 11:30:53 AM5/22/18
to Dirk Pelt, mirt-package
Hi Dirk,

On Tue, May 22, 2018 at 8:58 AM Dirk Pelt <dirkp...@gmail.com> wrote:
Dear Phil,

I am using the mirt package to implement a multidimensional CAT and am looking for ways to reduce computation time. I know from previous work with unidimensional CAT in combination with EAP estimation, that by taking the posterior distribution of the last (interim) theta estimation as the prior for the next estimation cycle, only the answer to the last item has to be integrated (instead of the full response vector).

That's a clever idea, as it essentially trades RAM storage for repeated computations. Though I find that estimating theta is not the bottle neck in CATs, evaluating the remaining item pool criteria is. 


Is a similar 'trick' possible with multidimensional MAP estimation? 

From studying the mirtCAT documentation, I am guessing something like this might be possible, somewhere in the 'update' types of functions perhaps?

Unfortunately, no. With iterative algorithms the objective function must be evaluated multiple times throughout the search, and it's not clear what the theta will be after each iteration. That's nice, because it's essentially dimension free (doesn't require numerical integration), but bad because there's no real way to help it converge from previous information...other than providing starting values closer to the solution (which mirtCAT does by default based on the previous estimates). 
 

On a related note: in your github code I found the following lines in fscores.internal:

            if(mirtCAT){
                estimate <- try(nlm(MAP.mirt,scores[ID, ],pars=pars, patdata=tabdata[ID, ], den_fun=den_fun,
                                    itemloc=itemloc, gp=gp, prodlist=prodlist, max_theta=max_theta, hessian=hessian,
                                    CUSTOM.IND=CUSTOM.IND, ID=ID, iterlim=1, stepmax=1e-20, ...))


Are the last two statements (iterlim=1, stepmax=1e-20) related to my question? Hope you can help,

No, this is for something different related to a particular method for obtaining selection criteria in the remainder of the pool. 
 

Best,
Dirk 

--
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.
Reply all
Reply to author
Forward
0 new messages