WLSMV Scaled Robust CFI/TLI/RMSEA NA

267 views
Skip to first unread message

Peter Miksza

unread,
Feb 19, 2025, 11:36:58 AM2/19/25
to lavaan
Hello,

I'm having trouble understanding why my model is resulting in "NA" values for the Scaled Robust CFI/TLI/RMSEA indicators. It is a partial mediation model with an outcome that is a measured variable. All of the measured variables with the exception of the outcome are ordinal, 6-point Likert-type items, so I am using the WLSMV estimator. 

It is otherwise showing good fit.

I've pasted syntax for my model below, and also attached the code and an example data file.

Thanks in advance for any help you could provide,

Pete

ord_vars <- c("ecost_time", "ecost_otherthings", "ecost_giveup", "ecost_emotional",
              "evalue_important", "evalue_value", "evalue_useful",
              "eexpect_learn", "eexpect_successful", "eexpect_understand",
              "commitment1", "commitment2", "commitment3", "commitment4",
              "commitment5", "commitment6",
              "emotion1", "emotion2", "emotion3", "emotion4", "emotion5",
              "emotion6", "emotion7","emotion8", "emotion9",
              "expression1", "expression2", "expression3", "expression4",
              "social1", "social2", "social3", "social4", "social5",
              "social6", "social7")

#### Partial Mediation Model: Ensemble ####
part_med_ens <- '
          # Measurement model
          ecost =~ ecost_time + ecost_otherthings + ecost_giveup + ecost_emotional
          evalue =~ evalue_important + evalue_value + evalue_useful
          eexpect =~ eexpect_learn + eexpect_successful + eexpect_understand
         
          commitment =~ commitment1 + commitment2 + commitment3 + commitment4 +
                        commitment5 + commitment6
          emotion =~ emotion1 + emotion2 + emotion3 + emotion4 + emotion5 +
                        emotion6 + emotion7 + emotion8 + emotion9
          expression =~ expression1 + expression2 + expression3 + expression4
          social =~ social1 + social2 + social3 + social4 + social5 +
                        social6 + social7
         
          identity =~ commitment + emotion + expression + social
         
          # Correlated error variance
          commitment3 ~~ commitment4
         
          # Structural model
          composite_eintent ~ ecost + evalue + eexpect
          ecost ~ evalue + eexpect
          evalue ~ identity
          eexpect ~ identity
         
          # Correlated latent variable error variance
          evalue ~~ eexpect

          '
reprex_NAs.R
Data_for_example.csv

Felipe Vieira

unread,
Feb 19, 2025, 12:30:28 PM2/19/25
to lavaan
Hi, 

You can find some older messages about this in the group. This one (https://groups.google.com/g/lavaan/c/JJTVgrDAXmA), for instance, should help you hopefully :)

Best, 
Felipe.

Peter Miksza

unread,
Feb 19, 2025, 12:39:03 PM2/19/25
to lavaan
Thanks Felipe, 

I saw those were a bit older now, so I wanted to check in case there was a new solution. Am I reading it correctly, that one should just default to the non-robust indices?

Pete

Yves Rosseel

unread,
Feb 19, 2025, 1:29:45 PM2/19/25
to lav...@googlegroups.com
Unfortunately, the 'robust' versions have only been developed for
specific cases (for a solution could be found), but are not very general.

In your model, the problem is the continuous outcome. The technology for
the 'robust' CFI/RMSEA fit measures in the categorical case is only
available if there are no other continuous (endogenous) variables involved.

Yves.

Peter Miksza

unread,
Feb 19, 2025, 1:52:54 PM2/19/25
to lavaan
Thanks so much, Yves

Bryan Stiles

unread,
May 14, 2025, 9:40:20 PM5/14/25
to lavaan
Yves, I hope it is okay that I resurrect this thread. You said: "the technology for the 'robust' CFI/RMSEA fit measures in the categorical case is only available if there are no other continuous (endogenous) variables involved." 

For example, I have the following model, where "CDSS_total" is a manifest variable (that is essentially continuous in nature), and being regressed onto two latent factors ('pos' and 'neg'). Whereas the robust CFI/TLI/RMSEA were available in another model where "CDSS" was a latent factor, these robust indices are "NA" when the CDSS_total manifest variable is incorporated. 

I just want to confirm that WLSMV/DWLS-estimated models cannot accommodate robust fit indices when there is a mix of categorical/ordinal vars, and continuous vars such as the manifest CDSS_total score. Thank you!

sc.cdss.1a <- '#specifying measurement model portion
pos  =~ NA*SCS_SF_q2 + SCS_SF_q5 + SCS_SF_q10 + SCS_SF_q3 + SCS_SF_q7
neg =~ NA*SCS_SF_q11 + SCS_SF_q12 + SCS_SF_q4 + SCS_SF_q8 + SCS_SF_q1 + SCS_SF_q9
pos ~~ 1*pos
neg ~~ 1*neg
SCS_SF_q7 ~~ SCS_SF_q12
SCS_SF_q11 ~~ SCS_SF_q12

#Specifying structural portion
CDSS_total ~ pos + neg'

sc.cdss.1a.out = sem.mi(sc.cdss.1a, data=imp2final,
                       ordered=c("SCS_SF_q1", "SCS_SF_q2", "SCS_SF_q3", "SCS_SF_q4", "SCS_SF_q5",
                                 "SCS_SF_q7", "SCS_SF_q8", "SCS_SF_q9", "SCS_SF_q10", "SCS_SF_q11", "SCS_SF_q12"),
                       estimator = "WLSMV", std.ov = TRUE)
summary(sc.cdss.1a.out, standardized = TRUE, rsquare=TRUE, fit.measures = TRUE)

lavaan.mi object fit to 20 imputed data sets using:
 - lavaan    (0.6-20.2308)
 - lavaan.mi (0.1-0)
See class?lavaan.mi help page for available methods.

Convergence information:
The model converged on 20 imputed data sets.
Standard errors were available for all imputations.

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                        62

  Number of observations                           170

Model Test User Model:

                                                Standard      Scaled
  Test statistic                                  24.110      42.388
  Degrees of freedom                                  50          50
  P-value                                          0.999       0.769
  Average scaling correction factor                            0.939
  Average shift parameter                                     16.703
    simple second-order correction                                  
  Pooling method                                      D2            
    Pooled statistic                          “standard”            
    “scaled.shifted” correction applied            AFTER     pooling

Model Test Baseline Model:

  Test statistic                               658.444     373.561
  Degrees of freedom                                66          66
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.926

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    1.000       1.000
  Tucker-Lewis Index (TLI)                       1.058       1.033
                                                                 
  Robust Comparative Fit Index (CFI)                            NA
  Robust Tucker-Lewis Index (TLI)                               NA

Root Mean Square Error of Approximation:

  RMSEA                                          0.000       0.000
  90 Percent confidence interval - lower         0.000       0.000
  90 Percent confidence interval - upper         0.000       0.035
  P-value H_0: RMSEA <= 0.050                    1.000       0.992
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                 
  Robust RMSEA                                                  NA
  90 Percent confidence interval - lower                        NA
  90 Percent confidence interval - upper                        NA
  P-value H_0: Robust RMSEA <= 0.050                            NA
  P-value H_0: Robust RMSEA >= 0.080                            NA

Standardized Root Mean Square Residual:

  SRMR                                           0.063       0.063


On Wednesday, February 19, 2025 at 1:29:45 PM UTC-5 yros...@gmail.com wrote:
Reply all
Reply to author
Forward
0 new messages