Empirical Underidentification with a bifactor type model

Posted on
Picture of user. paulT Joined: 11/03/2017

First post by new user: Can anyone give some advice on an empirical under-identification issue please? I am trying to fit the following model:

resVars <- mxPath( from=mylabels, arrows=2,
free=TRUE, values=rep(1,12),
labelatVars <- mxPath( from=c("X1","X2"), arrows=2, connect="unique.pairs",
free=c(TRUE,FALSE,TRUE), values=c(1,0,1), labels=c("varX1","cov","varX2") )

# factor loadings for X1
facLoadsX1 <- mxPath( from="X1", to=mylabels, arrows=1,
free=c(FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE), values=rep(1,12),
labels =c("l1","l2","l3","l4","l5","l6","l1","l2","l3","l4","l5","l6") )
# factor loadings for X2
facLoadsX2 <- mxPath( from="X2", to=mylabels, arrows=1,
free=c(FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE), values=rep(1,12),
labels =c("k1","k2","k3","k4","k5","k6","k1","k2","k3","k4","k5","k6") )

# means
means <- mxPath( from="one", to=c(mylabels,'X1','X2'), arrows=1,
free=c(T,T,T,T,T,T,T,T,T,T,T,T,FALSE,FALSE), values=c(1,1,1,1,1,1,1,1,1,1,1,1,0,0),
labels =c("meanA","meanB","meanC",
"meanD","meanE","meanF","meanA","meanB","meanC",
"meanD","meanE","meanF",NA,NA) )

twoFactorModel <- mxModel("Two Factor Model", type="RAM",
manifestVars=mylabels,
latentVars=c("X1","X2"),
dataRaw, resVars, latVars, facLoadsX1, facLoadsX2, means)

twoFactorFit <- mxRun(twoFactorModel)
ls=c("e1","e2","e3","e4","e5","e6","e1","e2","e3","e4","e5","e6") )

I find that this model is underidentified and has large Std errors which is presumably a result of the underidentification. I think that there should be some additional constraints but would appreciate any advice?

Replied on Sun, 11/05/2017 - 11:43
Picture of user. AdminNeale Joined: Mar 01, 2013

The factors seem to do the same thing - although a different loading is fixed to 1 for each, the factor variances are free, and the two factors are allowed to vary and covary. You could fix a factor loading to zero for one of the factors, and even then there may be a rotational underidentification if the factors are allowed to covary. I would recommend i) fix both factor variances to 1, fix the covariance to zero, free one of the two factor loadings currently fixed at 1.0, fix the other one to zero instead, and rerun. This may not be the model you want, but you can rotate the now-identified solution to one that you prefer.