Hello everyone,
We are facing some issues conducting CFA with the lavaan package and hoped some of you might be able to help.
Context:
We are conducting a French validation study of a questionnaire (which already exists in English) that measures some features of a given behavior (e.g., awareness, controlability). It is composed of 11 or 12-items depending on its version and responses are made on 7-point Likert scales. The behavior to focus on is specified by the experimenter and can vary from study to study (e.g., some researchers might want to explore the features of smoking a cigarette whereas others might want to explore the ones of running).
We have recruited more than 500 participants for this study, who were divided into 6 subgroups that have to focus on different behaviors to respond to the questionnaire (e.g., washing hands, drinking coffee)
EFA conducted on previous studies revealed that a 3-factor solution might be suited to the data of the 11 and 12-iems versions of this questionnaire. An EFA conducted in this study, with the entire sample, also revealed that a 3-factor solution might be suited to the data, but some items are not loaded on the same factor as previously.
We have performed CFA with the entire sample regarding a one-factor model, a first 3-factor higher-order model and a first hierarchical model (based on EFA of previous studies) as well as alternative 3-factor higher-order and hierarchical models (based on EFA of this study). There was no particular problem with those analyses. However, we try to reproduce them on each subgroup and are sometimes receiving a warning "fit measures not available if model did not converge" and sometimes receiving a warning "computation of robust CFI / RMSEA failed". We would need some help to fix it.
It might be important to add two general information:
1)
The EFA of this study indicates that some items loaded significantly on more than one factor.
2)
Based on previous posts on this topic, we have checked the variance of each items and factors and none of them were null.
You’ll find below further information on each warning signal:
“Fit measure not available if model did not converge”This type of warning seems to appear mainly for the higher-order model. It can appear for the 3-factor solution that is based on EFA of previous studies and not with the one that is based on EFA of this study; but also the contrary ; or both.
In each case this warning is present, it appears that the latent variable estimate of one of the three factors is especially high compared to the two other ones (e.g., 300 vs 1 or 2)
Example of code: Ho3f_SRHI3PrendreDouche_11items <- '
Awareness =~ Q2Auto + Q3Cons + Q5Ref + Q10Pens
Controlability =~ Q4Biz + Q6Eff + Q8RendC + Q9Diff
Repetition =~ Q1Freq + Q7Rout + Q12Lgtps
SRHITotal =~ Awareness + Controlability + Repetition
Q1Freq ~~ Q2Auto
Q10Pens ~~ Q9Diff
Q8RendC ~~ Q12Lgtps'
fit_Ho3f_SRHI3PrendreDouche_11items <- cfa(Ho3f_SRHI3PrendreDouche_11items, data= Data3PrendreDouche,
std.lv=T, missing='direct', estimator='MLR')
summary(fit_Ho3f_SRHI3PrendreDouche_11items, fit.measures=T)"
Results associated with this code: Warning message:
In lavaan::lavaan(model = Ho3f_SRHI3PrendreDouche_11items, data = Data3PrendreDouche, :
lavaan WARNING:
the optimizer (NLMINB) claimed the model converged, but not all
elements of the gradient are (near) zero; the optimizer may not
have found a local solution use check.gradient = FALSE to skip
this check.
> summary(fit_Ho3f_SRHI3PrendreDouche_11items, fit.measures=T)
lavaan 0.6.16 did NOT end normally after 981 iterations
** WARNING ** Estimates below are most likely unreliable
Estimator ML
Optimization method NLMINB
Number of model parameters 39
Number of observations 83
Number of missing patterns 1
Parameter Estimates:
Standard errors Sandwich
Information bread Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|)
Awareness =~
Q2Auto 0.931 NA
Q3Cons 1.152 NA
Q5Ref 1.140 NA
Q10Pens 0.808 NA
Controlability =~
Q4Biz 0.633 NA
Q6Eff 0.632 NA
Q8RendC 0.500 NA
Q9Diff 0.487 NA
Repetition =~
Q1Freq 0.004 NA
Q7Rout 0.004 NA
Q12Lgtps 0.003 NA
SRHITotal =~
Awareness 1.274 NA
Controlability 2.396 NA
Repetition 315.852 NA
Covariances:
Estimate Std.Err z-value P(>|z|)
.Q2Auto ~~
.Q1Freq 0.559 NA
.Q10Pens ~~
.Q9Diff 1.031 NA
.Q8RendC ~~
.Q12Lgtps -0.680 NA
Intercepts:
Estimate Std.Err z-value P(>|z|)
.Q2Auto 5.277 NA
.Q3Cons 4.831 NA
.Q5Ref 4.916 NA
.Q10Pens 4.867 NA
.Q4Biz 5.169 NA
.Q6Eff 4.614 NA
.Q8RendC 3.976 NA
.Q9Diff 5.193 NA
.Q1Freq 5.639 NA
.Q7Rout 5.747 NA
.Q12Lgtps 5.916 NA
.Awareness 0.000
.Controlability 0.000
.Repetition 0.000
SRHITotal 0.000
Variances:
Estimate Std.Err z-value P(>|z|)
.Q2Auto 0.945 NA
.Q3Cons 0.706 NA
.Q5Ref 0.763 NA
.Q10Pens 1.948 NA
.Q4Biz 1.003 NA
.Q6Eff 1.160 NA
.Q8RendC 2.262 NA
.Q9Diff 2.087 NA
.Q1Freq 1.383 NA
.Q7Rout 1.100 NA
.Q12Lgtps 1.382 NA
.Awareness 1.000
.Controlability 1.000
.Repetition 1.000
SRHITotal 1.000
Warning message:
In lav_object_summary(object = object, header = header, fit.measures = fit.measures, :
lavaan WARNING: fit measures not available if model did not converge"
“Computation of robust CFI / RMSEA failed”:This type of warning seems to appear mainly for the hierarchical model. It can appear for the 3-factor solution that is based on EFA of previous studies and not with the one that is based on EFA of this study; but also the contrary ; or both.
Example of code :Hierar3fAlt_SRHI3LaverMain_11items <- 'SRHI =~ Q1Freq + Q2Auto + Q3Cons + Q4Biz + Q5Ref+ Q6Eff + Q7Rout + Q8RendC + Q9Diff + Q10Pens + Q12Lgtps
Awareness =~ Q3Cons + Q5Ref + Q8RendC + Q10Pens
Controlability =~ Q4Biz + Q6Eff + Q9Diff
Repetition =~ Q1Freq + Q2Auto + Q7Rout + Q12Lgtps
Q8RendC ~~ Q1Freq
Q8RendC ~~ Q12Lgtps
Q8RendC ~~ Q6Eff'
fit_Hierar3fAlt_SRHI3LaverMain_11items <- cfa(Hierar3fAlt_SRHI3LaverMain_11items, data= Data3LaverMain,
std.lv=T, missing='direct', estimator='MLR', orthogonal=T)
summary(fit_Hierar3fAlt_SRHI3LaverMain_11items, fit.measures=T)
Results associated with this code:Warning message:
In lav_object_post_check(object) :
lavaan WARNING: some estimated ov variances are negative
> summary(fit_Hierar3fAlt_SRHI3LaverMain_11items, fit.measures=T)
lavaan 0.6.16 ended normally after 7826 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 47
Number of observations 85
Number of missing patterns 1
Model Test User Model:
Standard Scaled
Test Statistic 46.988 36.878
Degrees of freedom 30 30
P-value (Chi-square) 0.025 0.181
Scaling correction factor 1.274
Yuan-Bentler correction (Mplus variant)
Model Test Baseline Model:
Test statistic 651.200 479.263
Degrees of freedom 55 55
P-value 0.000 0.000
Scaling correction factor 1.359
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.972 0.984
Tucker-Lewis Index (TLI) 0.948 0.970
Robust Comparative Fit Index (CFI) NA
Robust Tucker-Lewis Index (TLI) NA
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -1453.129 -1453.129
Scaling correction factor 1.241
for the MLR correction
Loglikelihood unrestricted model (H1) -1429.635 -1429.635
Scaling correction factor 1.254
for the MLR correction
Akaike (AIC) 3000.257 3000.257
Bayesian (BIC) 3115.062 3115.062
Sample-size adjusted Bayesian (SABIC) 2966.786 2966.786
Root Mean Square Error of Approximation:
RMSEA 0.082 0.052
90 Percent confidence interval - lower 0.030 0.000
90 Percent confidence interval - upper 0.125 0.097
P-value H_0: RMSEA <= 0.050 0.128 0.446
P-value H_0: RMSEA >= 0.080 0.554 0.171
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.036 0.036
Parameter Estimates:
Standard errors Sandwich
Information bread Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|)
SRHI =~
Q1Freq 0.864 0.179 4.834 0.000
Q2Auto 1.072 0.154 6.980 0.000
Q3Cons 1.303 0.117 11.138 0.000
Q4Biz 1.192 0.162 7.355 0.000
Q5Ref 1.234 0.131 9.399 0.000
Q6Eff 0.939 0.202 4.640 0.000
Q7Rout 1.037 0.176 5.879 0.000
Q8RendC 1.298 0.153 8.487 0.000
Q9Diff 1.223 0.127 9.644 0.000
Q10Pens 1.428 0.105 13.591 0.000
Q12Lgtps 0.980 0.175 5.603 0.000
Awareness =~
Q3Cons 0.593 0.270 2.198 0.028
Q5Ref 0.400 0.229 1.752 0.080
Q8RendC 0.643 0.302 2.126 0.033
Q10Pens -0.298 0.271 -1.102 0.271
Controlability =~
Q4Biz 0.518 0.343 1.512 0.131
Q6Eff 1.337 0.736 1.817 0.069
Q9Diff 0.284 0.165 1.718 0.086
Repetition =~
Q1Freq 35.747 0.532 67.148 0.000
Q2Auto 0.008 0.004 2.161 0.031
Q7Rout 0.005 0.003 1.517 0.129
Q12Lgtps 0.010 0.003 3.629 0.000
Covariances:
Estimate Std.Err z-value P(>|z|)
.Q1Freq ~~
.Q8RendC -0.379 0.135 -2.810 0.005
.Q8RendC ~~
.Q12Lgtps -0.354 0.153 -2.311 0.021
.Q6Eff ~~
.Q8RendC 0.362 0.276 1.315 0.188
SRHI ~~
Awareness 0.000
Controlability 0.000
Repetition 0.000
Awareness ~~
Controlability 0.000
Repetition 0.000
Controlability ~~
Repetition 0.000
Intercepts:
Estimate Std.Err z-value P(>|z|)
.Q1Freq 5.929 0.141 42.062 0.000
.Q2Auto 5.494 0.151 36.329 0.000
.Q3Cons 5.035 0.186 27.129 0.000
.Q4Biz 4.812 0.189 25.415 0.000
.Q5Ref 5.141 0.168 30.573 0.000
.Q6Eff 4.282 0.220 19.478 0.000
.Q7Rout 5.576 0.162 34.501 0.000
.Q8RendC 4.294 0.208 20.676 0.000
.Q9Diff 5.400 0.163 33.091 0.000
.Q10Pens 5.412 0.175 30.972 0.000
.Q12Lgtps 5.847 0.143 40.990 0.000
SRHI 0.000
Awareness 0.000
Controlability 0.000
Repetition 0.000
Variances:
Estimate Std.Err z-value P(>|z|)
.Q1Freq -1276.941 38.136 -33.484 0.000
.Q2Auto 0.796 0.191 4.161 0.000
.Q3Cons 0.878 0.318 2.756 0.006
.Q4Biz 1.358 0.378 3.592 0.000
.Q5Ref 0.720 0.188 3.823 0.000
.Q6Eff 1.439 1.994 0.722 0.471
.Q7Rout 1.146 0.365 3.139 0.002
.Q8RendC 1.481 0.375 3.954 0.000
.Q9Diff 0.687 0.179 3.837 0.000
.Q10Pens 0.466 0.239 1.949 0.051
.Q12Lgtps 0.768 0.110 6.999 0.000
SRHI 1.000
Awareness 1.000
Controlability 1.000
Repetition 1.000
Warning messages:
1: In lav_fit_cfi_lavobject(lavobject = object, fit.measures = fit.measures, :
lavaan WARNING: computation of robust CFI failed.
2: In lav_fit_rmsea_lavobject(lavobject = object, fit.measures = fit.measures, :
lavaan WARNING: computation of robust RMSEA failed.
Questions: Do some of you have an idea of where those problems might come from, how we can confirm that they come from there, and how we can fix them?
Thank you for the time you will dedicate to this message,
Sincerely yours,
Nicolas Kaczmarek