Difficulties estimating large two-tier model

59 views
Skip to first unread message

Dirk Pelt

unread,
Aug 29, 2017, 4:01:25 AM8/29/17
to mirt-p...@googlegroups.com

Hi Phil,


I am trying to fit a two-tier model with five correlated primary factors and 25 secondary facets on 276 items. A between item factor (25 correlated facets) model ran fine (thanks!) but now I am running into some difficulties. Below an excerpt of my code:


cmodel <- mirt.model('

                     F1 = 1-39

                     F2 = 40-112 

                     F3 = 113-175

                     F4 = 176-228

                     F5 = 229-276

                     COV = F1*F2*F3*F4*F5')


specific=c(rep(1,9),rep(2,12),rep(3,10),rep(4,8),rep(5,10),rep(6,12),rep(7,10),rep(8,10),rep(9,12),rep(10,19),rep(11,12),rep(12,10),rep(13,13),rep(14,7),rep(15,10),rep(16,11),rep(17,10),rep(18,10),rep(19,10),rep(20,12),rep(21,11),rep(22,12),rep(23,14),rep(24,11),rep(25,11))


simmod <- bfactor(dataset, specific, cmodel, itemtype = 'graded')


I am getting the following error:

Error: Error in optim(p, fn = Mstep.LL, gr = Mstep.grad, method = "BFGS", control = control,  : 

  initial value in 'vmmin' is not finite


When using the ‘nlminb’ optimizer I get the following error:

Error: Error in nlminb(p, Mstep.LL, Mstep.grad, DERIV = DERIV, rlist = rlist,  : 

  NA/NaN gradient evaluation

In addition: Warning message:

In nlminb(p, Mstep.LL, Mstep.grad, DERIV = DERIV, rlist = rlist,  :

  NA/NaN function evaluation


Reading up this appears to have something to do with the starting values. Could this problem be solved by doing something with the pars = ‘values’ command? Or could you perhaps advise any other optimizers in this case?


Because I am working with commercial data I cannot post it here but I can send it to you if you would like to have look at it.


Best, Dirk


Below my sessionInfo():



R version 3.3.2 (2016-10-31)

Platform: x86_64-w64-mingw32/x64 (64-bit)

Running under: Windows >= 8 x64 (build 9200)


locale:

[1] LC_COLLATE=Dutch_Netherlands.1252  LC_CTYPE=Dutch_Netherlands.1252    LC_MONETARY=Dutch_Netherlands.1252

[4] LC_NUMERIC=C                       LC_TIME=Dutch_Netherlands.1252    


attached base packages:

[1] stats4    stats     graphics  grDevices utils     datasets  methods   base     


other attached packages:

[1] mvtnorm_1.0-5   mirt_1.25       lattice_0.20-34 haven_1.0.0    


loaded via a namespace (and not attached):

 [1] readr_1.0.0           Matrix_1.2-7.1        tools_3.3.2           mgcv_1.8-15           tibble_1.3.3         

 [6] Rcpp_0.12.8           splines_3.3.2         nlme_3.1-128          grid_3.3.2            GPArotation_2014.11-1

[11] rlang_0.1.1           sfsmisc_1.1-0        


Seongho Bae

unread,
Aug 30, 2017, 10:56:43 AM8/30/17
to mirt-package
It seems misspecification. Try to MHRM methods; but if it fails, Considering another structure.

Seongho

2017년 8월 29일 화요일 오후 5시 1분 25초 UTC+9, Dirk Pelt 님의 말:

Phil Chalmers

unread,
Aug 30, 2017, 1:56:02 PM8/30/17
to Seongho Bae, mirt-package
I think the problem has more to do with the dimension of integration, which in this case is 6. Quadrature methods are automatically reduced as the dimensionality increases in mirt to help prevent your R  session from crashing. So even if this did work, the result could be far from the true MLE. 

As well, the size of the parameter space for this model is likely huge (at least 500+ parameters) so you're correct that starting values could be an issue and causing extreme log-likelihood values at some point. It sounds like a very difficult model to fit.

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+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages