Dear all,
I am trying to establish a measurement model, which I'd like to use in SEM later.
There is a second-order factor (G), and 3 first-order factors (A, B, C).
Each of the first-order factors has 4 indicators.
These indicators are binary variables, thus I used WLSMV for an estimation method.
Sample size is 600.
When I run a model, the fit indices are acceptable (CFI=.97, RMSEA=.05).
However, a warning appears (lavaan WARNING: some estimated lv variances are negative), and one of the factors (B) has a negative variance.
This factor B has the standardized factor loading above 1.0 on the factor G.
I tried a bifactor model instead, where all indicators directly load onto the factor G as well as on their corresponding first-order factors.
This model also shows that one of the indicators of the factor B has a negative variance.
This indicator also has the standardized factor loading above 1.0 on the factor G.
I thought maybe the factor B's indicators are more related to the factor G than to B.
Thus, I ran a new model, where the factor B's indicators directly load onto G (thus there is no factor B).
This model worked with acceptable fit indices.
I have 2 questions. First one is that, is the way I built models (higher-order and bifactor) correctly specified in lavaan?
I am wonering if I am getting warnings because of the possible model misspecification.
Second is that, if it is simply that the first 2 models do not fit my data, is the 3rd model an acceptable solution?
I am still learning CFA and SEM, and I am not sure if I am going in the right direction.
Please find the 3 models I ran in lavaan below. I would be very grateful for your help.
#Higher-order model
model <- 'A =~ a1 + a2 + a3 + a4
B =~ b1 + b2 + b3 + b4
C =~ c1 + c2 + c3 + c4
G =~ A + B + C'
fit <- cfa(model, data=Data, estimator="WLSMV")
#Bifactor model
model <- 'A =~ a1 + a2 + a3 + a4
B =~ b1 + b2 + b3 + b4
C =~ c1 + c2 + c3 + c4
G =~ a1 + a2 + a3 + a4 + b1 + b2 + b3 + b4 + c1 + c2 + c3 + c4'
fit <- cfa(model, data=Data, estimator="WLSMV", orthogonal=TRUE)
#Higher order model, B indicators directly load onto G
model <- 'A =~ a1 + a2 + a3 + a4
C =~ c1 + c2 + c3 + c4
G =~ A + b1 + b2 + b3 + b4 + C'
fit <- cfa(model, data=Data, estimator="WLSMV")