Second-order model with first-order std. loading of 1.0

66 views
Skip to first unread message

João Mota

unread,
Nov 26, 2021, 5:37:42 AM11/26/21
to lavaan
Dear lavaan community. I've tried to run a second-order CFA model in lavaan, in order to sequentially test different measurement models (unidimensional, correlated traits, second-order), trying to replicate the process used in a very similar test battery, using the syntax:

second_phys <- 'Physical =~ Global + cardio_shuttle + str_push + str_abs
Psychological =~ mot + conf + emo + phys
Social =~ ethics + collab + relation + cult
Cognitive =~ knowledge
PL =~  Physical + Psychological + Social + Cognitive

knowledge ~~ 92.8688*knowledge
emo ~~ phys'

second_run <- cfa(second_phys, full2, estimator = "MLR", missing = "FIML")


However, this results in negative variances:

"lavaan WARNING: some estimated lv variances are negative"


If I run the model by fixing the factor variances to 1 (std.lv =1) instead of using the default marker, the model runs, however, I get a standardized loading of 1.0 for one of the first-order factors (Psychological) - with a very large unstd. estimate.

second_run <- cfa(second_phys, full2, estimator = "MLR", missing = "FIML", std.lv =T)
summary(second_run, standardized = T, fit.measures = T, rs=T)


lavaan 0.6-9 ended normally after 1191 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        43
                                                      
  Number of observations                           521
  Number of missing patterns                        11
                                                      
Model Test User Model:
                                               Standard      Robust
  Test Statistic                                382.556     359.177
  Degrees of freedom                                 61          61
  P-value (Chi-square)                            0.000       0.000
  Scaling correction factor                                   1.065
       Yuan-Bentler correction (Mplus variant)                     

Model Test Baseline Model:

  Test statistic                              2309.548    2027.494
  Degrees of freedom                                78          78
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.139

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.856       0.847
  Tucker-Lewis Index (TLI)                       0.816       0.804
                                                                  
  Robust Comparative Fit Index (CFI)                         0.857
  Robust Tucker-Lewis Index (TLI)                            0.817

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -26502.470  -26502.470
  Scaling correction factor                                  1.207
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)     -26311.192  -26311.192
  Scaling correction factor                                  1.124
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               53090.941   53090.941
  Bayesian (BIC)                             53273.938   53273.938
  Sample-size adjusted Bayesian (BIC)        53137.446   53137.446

Root Mean Square Error of Approximation:

  RMSEA                                          0.101       0.097
  90 Percent confidence interval - lower         0.091       0.088
  90 Percent confidence interval - upper         0.110       0.106
  P-value RMSEA <= 0.05                          0.000       0.000
                                                                  
  Robust RMSEA                                               0.100
  90 Percent confidence interval - lower                     0.090
  90 Percent confidence interval - upper                     0.110

Standardized Root Mean Square Residual:

  SRMR                                           0.095       0.095

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  Physical =~                                                           
    Global            5.982    0.588   10.174    0.000    7.896    0.463
    cardio_shuttle   13.196    0.848   15.562    0.000   17.419    0.792
    str_push         10.818    0.864   12.522    0.000   14.280    0.747
    str_abs           9.267    0.693   13.371    0.000   12.232    0.564
  Psychological =~                                                      
    mot               0.009    0.000   18.884    0.000   11.692    0.790
    conf              0.012    0.000   40.882    0.000   15.534    0.925
    emo               0.005    0.001    9.473    0.000    6.332    0.436
    phys              0.006    0.000   13.224    0.000    7.434    0.612
  Social =~                                                             
    ethics            7.354    0.749    9.822    0.000    7.977    0.670
    collab            8.926    0.869   10.274    0.000    9.682    0.851
    relation          9.154    0.583   15.710    0.000    9.928    0.738
    cult              6.231    0.952    6.545    0.000    6.758    0.346
  Cognitive =~                                                          
    knowledge        11.753    0.532   22.093    0.000   11.783    0.774
  PL =~                                                                 
    Physical          0.862    0.078   11.066    0.000    0.653    0.653
    Psychological  1247.039   26.392   47.251    0.000    1.000    1.000
    Social            0.420    0.099    4.254    0.000    0.387    0.387
    Cognitive         0.072    0.064    1.125    0.261    0.072    0.072

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .emo ~~                                                                
   .phys             30.538    6.576    4.644    0.000   30.538    0.243

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .Global           99.952    0.751  133.149    0.000   99.952    5.866
   .cardio_shuttle   49.124    0.968   50.765    0.000   49.124    2.234
   .str_push         35.776    0.845   42.356    0.000   35.776    1.871
   .str_abs          48.381    0.967   50.028    0.000   48.381    2.232
   .mot              74.844    0.656  114.167    0.000   74.844    5.059
   .conf             68.280    0.744   91.792    0.000   68.280    4.064
   .emo              69.880    0.646  108.224    0.000   69.880    4.807
   .phys             75.022    0.539  139.313    0.000   75.022    6.174
   .ethics           81.511    0.529  154.116    0.000   81.511    6.846
   .collab           85.005    0.505  168.165    0.000   85.005    7.476
   .relation         77.688    0.597  130.065    0.000   77.688    5.778
   .cult             58.663    0.864   67.866    0.000   58.663    3.008
   .knowledge        68.802    0.676  101.804    0.000   68.802    4.520
   .Physical          0.000                               0.000    0.000
   .Psychological     0.000                               0.000    0.000
   .Social            0.000                               0.000    0.000
   .Cognitive         0.000                               0.000    0.000
    PL                0.000                               0.000    0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .knowledge        92.869                              92.869    0.401
   .Global          228.040   15.618   14.601    0.000  228.040    0.785
   .cardio_shuttle  179.945   20.754    8.670    0.000  179.945    0.372
   .str_push        161.792   22.619    7.153    0.000  161.792    0.442
   .str_abs         320.239   20.174   15.873    0.000  320.239    0.682
   .mot              82.129    8.444    9.726    0.000   82.129    0.375
   .conf             40.935   16.046    2.551    0.011   40.935    0.145
   .emo             171.193   11.941   14.337    0.000  171.193    0.810
   .phys             92.378    8.266   11.176    0.000   92.378    0.626
   .ethics           78.153   11.707    6.676    0.000   78.153    0.551
   .collab           35.552    9.543    3.726    0.000   35.552    0.275
   .relation         82.205   11.817    6.957    0.000   82.205    0.455
   .cult            334.758   19.017   17.603    0.000  334.758    0.880
   .Physical          1.000                               0.574    0.574
   .Psychological     1.000                               0.000    0.000
   .Social            1.000                               0.850    0.850
   .Cognitive         1.000                               0.995    0.995
    PL                1.000                               1.000    1.000



I've also tried running the model with the option bounds=T, which provides an equivalent solution. 
Can this results be derived from having very low correlations among some of the factors (as per the correlated traits solution, abbreviated below), and thus making this an implausable factor structure (other that not having an acceptable fit)? Or is there any plausible technical solution that I'm overlooking?


Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .emo ~~                                                                
   .phys             29.731    6.528    4.555    0.000   29.731    0.239
  Physical ~~                                                           
    Psychological    59.167    8.081    7.322    0.000    0.661    0.661
    Social            0.555    3.857    0.144    0.886    0.009    0.009
    Cognitive        18.036    5.478    3.292    0.001    0.201    0.201
  Psychological ~~                                                      
    Social           39.445    6.982    5.650    0.000    0.419    0.419
    Cognitive         8.385    8.701    0.964    0.335    0.060    0.060
  Social ~~                                                             
    Cognitive         8.557    6.315    1.355    0.175    0.091    0.091


Thanks in advance for any help you can provide me.
Best regards.

Terrence Jorgensen

unread,
Nov 26, 2021, 8:35:33 AM11/26/21
to lavaan
Can this results be derived from having very low correlations among some of the factors

That seems like the most likely problem.  Some factors are basically uncorrelated with others, especially Social, so the higher-order model could have estimation trouble and probably fit terribly.  FYI, output is easier to read if you change its font to fixed-width (e.g., Courier New) after pasting.

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

Edward Rigdon

unread,
Nov 26, 2021, 11:42:58 AM11/26/21
to lav...@googlegroups.com
     The loading for Psychological on PL is 1247. That and the residual variances makes me wonder whether there is a wide range of variances across these observed variables. If that is true, then lavaan might behave better if variances across observed variables were made more similar through dividing some variables by constants, like 10.

--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lavaan/3fb4619e-f107-4098-9a0f-b1c1ee849184n%40googlegroups.com.

João Mota

unread,
Nov 26, 2021, 12:10:42 PM11/26/21
to lav...@googlegroups.com
Thank you Terrence and Edward for such a quick response.

These are the variances of the observed variables - by calling varTable().

name

mean

var

Global

99.98153

290.8596

cardio_shuttle

49.49499

483.5477

str_push

36.10505

366.0456

str_abs

48.57028

471.5494

mot

74.91001

219.2770

conf

68.36833

282.8268

emo

69.91564

211.7064

phys

75.06398

147.9372

ethics

81.52887

142.0586

collab

85.02625

129.5413

relation

77.70997

181.1360

cult

58.67829

381.1825

knowledge

68.80692

232.1721


Should I try to equalize all these variances into the same order of magnitude (say, 200 ish?), or is that an overkill?
Thanks again.
Regards.

João Mota


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/6_yaex2cFfE/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/CAHxMgeeVRJbuxD8jCRBMYG2AX5f8MvN_0PjwHz_-UBe%2BZ3n%2ByQ%40mail.gmail.com.

Edward Rigdon

unread,
Nov 26, 2021, 12:27:12 PM11/26/21
to lav...@googlegroups.com
I was mistaken--that range of variances should not be causing a problem. But loadings, for either first order or second order factors, should not range from 0 to 1247.

João Mota

unread,
Nov 26, 2021, 12:37:10 PM11/26/21
to lav...@googlegroups.com
Hi again Edward, thanks again for taking time to help folks around here.

Hmm, okay; I figured it should indeed be a modelling inadequacy (i.e., model a second-order factor with such low covariances between first-order factors). And I should have added to my first query that I ran a bifactor model using the same definition of group factors (first-order factors) with no issue: the Psychological observed variables have a higher saturation (loadings) on the general factor than all others. Could that be a plausible argument for why the second-order model is misbehaving?

Best regards.   
João Mota


Reply all
Reply to author
Forward
0 new messages