Search code examples
rfactor-analysis

Let some factors in a multidimensional IRT CFA correlate, but restrain others


I am trying to run a CFA using the mirt package. I have 3 substantial factors FA, FB, and FC as well as several general factors F1, F2, etc.

I would like to let the substantial factors correlate among each other, but model the remaining factors as uncorrelated to the substantial factors, but correlated among each other.

For 3+1 factors, I used the model

model=mirt.model('FA=1-3
             FB=4-6
             FC=7-9
             F1=1-9
             COV=FA*FB*FC
             CONSTRAIN = (1-9,a4)')

which works perfectly fine, resulting in the following summary():

Factor correlations: 
   FA    FB    FC     F1
FA 1.000 0.643 0.522  0
FB 0.643 1.000 0.566  0
FC 0.522 0.566 1.000  0
F1 0.000 0.000 0.000  1

When I add further factors (F2, F3, ...) and specify that I would like them to "correlate freely", this fails to achieve the same result. The model

model=mirt.model('FA=1-3
             FB=4-6
             FC=7-9
             F1=1-9
             F2=1-9
             COV=FA*FB*FC, F1*F2
             CONSTRAIN = (1-9,a4),(1-9,a5)')

yields the following summary():

Factor correlations: 

   FA    FB    FC     F1 F2
FA 1.000 0.669 0.553  0  0
FB 0.669 1.000 0.589  0  0
FC 0.553 0.589 1.000  0  0
F1 0.000 0.000 0.000  1  0
F2 0.000 0.000 0.000  0  1

Any ideas on why the COV formulation doesn't work?

Many thanks! KH


Solution

  • Apparently, there is no problem with the code to begin with. The author of the mirt package, Phil Chalmers, couldn't reproduce the problem. The way to define the covariances using a comma is correct.