Negative Covariance Matrix

353 views
Skip to first unread message

Joan Chan

unread,
Feb 18, 2021, 9:51:46 PM2/18/21
to lavaan
Hi, 

I am running a multi-group CFA  (N1 = 489, N2 = 434) using this model: 

pers_model1 <- ' 
    neg_act =~ PERS_2 + PERS_8 + PERS_14 + PERS_20 + PERS_26
    neg_int =~ PERS_6 + PERS_12 + PERS_18 + PERS_24 + PERS_30
    neg_dur =~ PERS_4 + PERS_10 + PERS_16 + PERS_22 + PERS_28
    pos_act =~ PERS_1 + PERS_7 + PERS_13 + PERS_19 + PERS_25
    pos_int =~ PERS_5 + PERS_11 + PERS_17 + PERS_23 + PERS_29
    pos_dur =~ PERS_3 + PERS_9 + PERS_15 + PERS_21 + PERS_27'

And I received this error for both groups:
lavaan WARNING: covariance matrix of latent variables is not positive definite in group 1; use lavInspect(fit, "cov.lv") to investigate.

lavaan WARNING: covariance matrix of latent variables is not positive definite in group 2; use lavInspect(fit, "cov.lv") to investigate.

Here are the results of the lavInspect:

> lavInspect(pers.residual.p,"cov.lv")
$Australia
        neg_ct neg_nt neg_dr pos_ct pos_nt pos_dr
neg_act  0.884                                   
neg_int  0.805  0.817                            
neg_dur  0.798  0.747  0.828                     
pos_act -0.216 -0.143 -0.298  0.713              
pos_int -0.108  0.016 -0.186  0.612  0.611       
pos_dur -0.349 -0.270 -0.399  0.679  0.532  0.717

$Singapore
        neg_ct neg_nt neg_dr pos_ct pos_nt pos_dr
neg_act  0.788                                   
neg_int  0.709  0.761                            
neg_dur  0.707  0.687  0.738                     
pos_act -0.176 -0.153 -0.204  0.537              
pos_int -0.126 -0.029 -0.102  0.505  0.542       
pos_dur -0.197 -0.142 -0.172  0.459  0.444  0.439


Is there cause for concern here and what is the remedy?

Thank you.

Kind Regards,
Joan Chan 

Prof. Gavin Brown

unread,
Feb 18, 2021, 9:57:41 PM2/18/21
to lavaan
Yes this is cause for concern. not positive definite usually suggests you have too many factors for your data. looking at the titles it seems that there may only be a negative and positive factor. look at the correlation values--if any are close to or more than 1.00 that will cause this result.
good advice on this problem in
Chen, F., Bollen, K. A., Paxton, P., Curran, P. J., & Kirby, J. B. (2001). Improper solutions in structural equation models: Causes, consequences, and strategies. Sociological Methods & Research, 29(4), 468-508. doi:doi:10.1177/0049124101029004003

you may succeed with a bifactor model: valence on one side and act, int, dur on the other side as 2 sets of predictors for each item

Terrence Jorgensen

unread,
Feb 22, 2021, 4:17:53 PM2/22/21
to lavaan
look at the correlation values--if any are close to or more than 1.00 that will cause this result.

And you can do so with lavInspect(fit, "cor.lv")

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

Joan Chan

unread,
Feb 22, 2021, 9:37:58 PM2/22/21
to lav...@googlegroups.com
Hi Prof Gavin and Dr Jorgensen, 

Thank you for both your replies. I had a look at lavInspect(fit, "cor.lv")and found that a few of the correlation values were about 0.950. However, when I tested a three-factor model (ACT, INT, DUR), the model fit worsened (CFI = 0.50). 

pers_3factor <- '
      gen_act =~ PERS_2 + PERS_8 + PERS_14 + PERS_20 + PERS_26 + # neg_act
                 PERS_1 + PERS_7 + PERS_13 + PERS_19 + PERS_25  #pos_act
                 
      gen_int =~ PERS_6 + PERS_12 + PERS_18 + PERS_24 + PERS_30 + #neg_int
                 PERS_5 + PERS_11 + PERS_17 + PERS_23 + PERS_29   #pos_int
                 
      gen_dur =~ PERS_4 + PERS_10 + PERS_16 + PERS_22 + PERS_28 + #neg_dur
                 PERS_3 + PERS_9 + PERS_15 + PERS_21 + PERS_27'    #pos_dur


When I tested a bi-factor and the three-factor model combined, the model fit was marginally acceptable.

pers_bifactor.3factor <- 'gen_act =~ PERS_2 + PERS_8 + PERS_14 + PERS_20 + PERS_26 + # neg_act
                                     PERS_1 + PERS_7 + PERS_13 + PERS_19 + PERS_25  #pos_act
                 
                          gen_int =~ PERS_6 + PERS_12 + PERS_18 + PERS_24 + PERS_30 + #neg_int
                                     PERS_5 + PERS_11 + PERS_17 + PERS_23 + PERS_29   #pos_int
                 
                          gen_dur =~ PERS_4 + PERS_10 + PERS_16 + PERS_22 + PERS_28 + #neg_dur
                                     PERS_3 + PERS_9 + PERS_15 + PERS_21 + PERS_27    #pos_dur
                 
                          gen_e_react =~ PERS_2 + PERS_8 + PERS_14 + PERS_20 + PERS_26 +   #neg_act
                                         PERS_6 + PERS_12 + PERS_18 + PERS_24 + PERS_30 +  #neg_int
                                         PERS_4 + PERS_10 + PERS_16 + PERS_22 + PERS_28 +  #neg_dur
                                         PERS_1 + PERS_7 + PERS_13 + PERS_19 + PERS_25 +   #pos_act
                                         PERS_5 + PERS_11 + PERS_17 + PERS_23 + PERS_29 +  #pos_int
                                         PERS_3 + PERS_9 + PERS_15 + PERS_21 + PERS_27'     #pos_dur



Model 

SBX2 

df 

CFI 

TLI 

RMSEA (90% Confidence Intervals) 

SRMR 

AIC 

Six-factor model 

 

 

 

 

 

 

 

Singapore 

725.763

390

0.940

0.933 

0.050 (0.045 – 0.056) 

0.054 

31578.647 

Australia 

1094.397

390 

0.905 

0.894

0.68 (0.063 – 0.073) 

0.069 

36664.089 

Three-factor model  

 

 

 

 

 

 

 

Singapore 

2830.600 

402

0.577

0.543 

0.131(0.127 – 0.136) 

0.195

34136.035

Australia 

3889.106 

402 

0.539 

0.501 

0.147 (0.142 – 0.151) 

0.210

39994.469 

Bi-factor + Three-factor model

 

 

 

 

 

 

 

Singapore 

1180.821 

375

0.855

0.832 

0.080 (0.074 -0.085) 

0.146

32190.076 

Australia 

1603.487 

375 

0.834 

0.808

0.091 (0.087 – 0.096) 

0.150 

37318.915 

 
Would you take that the bi-factor + three-factor model is the best fitting model for both countries although it has poorer model fit than the six-factor model?

Thank you so much for your help.

Kind Regards,
Joan Chan  

--
You received this message because you are subscribed to a topic in the Google Groups "lavaan" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/lavaan/jVvQ3VeUXjU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to lavaan+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/5858441a-35b9-431e-8e9b-c8fd13e921b2n%40googlegroups.com.

Prof. Gavin Brown

unread,
Feb 22, 2021, 9:52:45 PM2/22/21
to lavaan
the bifactor model is somewhat better than the 3-factor model insofar as the fit indices are concerned; but the fit is at best marginal to non-acceptable for the bifactor.
assuming the result is admissible, i would suggest rejecting all these models and try exploratory techniques to determine if there is a better model that works equally well in both locations.
In any case it seems to me that a Singapore model may never be made to fit well with the Australia data.
Given the differences in populations (culture, policy, practices) that the current models are not equally robust in each jurisdiction and a model that works for one may not work for the other.
Reply all
Reply to author
Forward
0 new messages