Heywood case and solution

278 views
Skip to first unread message

R Monica S

unread,
May 29, 2019, 12:53:13 AM5/29/19
to lavaan
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")

Terrence Jorgensen

unread,
May 31, 2019, 7:13:51 AM5/31/19
to lavaan
is the way I built models (higher-order and bifactor) correctly specified in lavaan?  

Yes.
 
if it is simply that the first 2 models do not fit my data, is the 3rd model an acceptable solution?

SEMNET is a better place to ask general questions like this:


You could try running a model with only 'B =~ b1  + b2 + b3 + b4' to see if the problem occurs there too.  Also, despite "good fit indices", if there is significant model misfit, it is worth seeing how your model fails by inspecting the correlation residuals.:

resid(fit, type = "cor")

It might show you which relationship your hypothesized model(s) fail to capture, which could explain why the model is reaching for out-of-bounds estimates to try to make up for that failure.  (Read about "propogation of errors" in Kline's SEM textbook).


Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

R Monica S

unread,
Jun 3, 2019, 8:40:20 AM6/3/19
to lavaan
Dear Dr. Jorgensen,

Thank you very much for your time and help.  I will use SEMNET and also study about  "propogation of errors" .

Many thanks again!
Reply all
Reply to author
Forward
0 new messages