Second Order CFA

3,718 views
Skip to first unread message

dpsc...@gmail.com

unread,
Apr 3, 2013, 11:18:11 AM4/3/13
to lav...@googlegroups.com
I have been using lavaan for basic CFA and SEM but this is the first time I have tried running just a second order CFA. With this data, I have successfully run the CFA without the higher order but now I am getting an error message, I am not sure if there is a problem with my code or if I should treat this like an sem. I am using MLM because the data is skewed. Any help would be appreciated, thanks!

> leader.model2<-'
 f1 =~ CARE1+CARE2+CARE3+CARE4+CARE5+
         CARE6+CARE7+CARE8+CARE9+CARE10
 f2 =~ COMP1+COMP2+COMP3+COMP4+COMP5+COMP6+COMP7+COMP8
 f3 =~ TRUST1+TRUST2+TRUST3+TRUST4+TRUST5+TRUST6
 f4 =~ f1+f2+f3
  '
> fit2<-cfa(leader.model2, estimator="MLM", data=c_data)
Warning messages:
1: In lavaan(model = leader.model2, data = c_data, estimator = "MLM",  :
  lavaan WARNING: some estimated variances are negative
2: In lavaan(model = leader.model2, data = c_data, estimator = "MLM",  :
  lavaan WARNING: covariance matrix of latent variables is not positive definite;. use inspect(fit,"cov.lv") to investigate.

yrosseel

unread,
Apr 5, 2013, 8:06:02 AM4/5/13
to lav...@googlegroups.com
On 04/03/2013 05:18 PM, dpsc...@gmail.com wrote:
> I have been using lavaan for basic CFA and SEM but this is the first
> time I have tried running just a second order CFA. With this data, I
> have successfully run the CFA without the higher order but now I am
> getting an error message, I am not sure if there is a problem with my
> code or if I should treat this like an sem. I am using MLM because the
> data is skewed. Any help would be appreciated, thanks!
>
> > leader.model2<-'
> f1 =~ CARE1+CARE2+CARE3+CARE4+CARE5+
> CARE6+CARE7+CARE8+CARE9+CARE10
> f2 =~ COMP1+COMP2+COMP3+COMP4+COMP5+COMP6+COMP7+COMP8
> f3 =~ TRUST1+TRUST2+TRUST3+TRUST4+TRUST5+TRUST6
> f4 =~ f1+f2+f3
> '

This is one of the quirks of CFA/SEM. In theory, this second-order model
should provide exactly the same fit as the (correlated) three-factor
model, since the number of free parameters is the same. But it often
fails. Sometimes, adding std.lv=TRUE may help, but not always.

Yves.

dpsc...@gmail.com

unread,
Apr 5, 2013, 11:05:29 AM4/5/13
to lav...@googlegroups.com
Thanks for your help. I added std.lv=TRUE but now I get a convergence error. Just to test, I tried the model with the default estimator and got the same convergence error message. Is this a sign that the data is a really poor fit for a single higher order factor? I ask because the data fit nicely for the three separate factors.


> leader.model2<-'
+   f1 =~ CARE1+CARE2+CARE3+CARE4+CARE5+
+ CARE6+CARE7+CARE8+CARE9+CARE10
+   f2 =~ COMP1+COMP2+COMP3+COMP4+COMP5+COMP6+COMP7+COMP8
+   f3 =~ TRUST1+TRUST2+TRUST3+TRUST4+TRUST5+TRUST6
+   f4 =~ f1+f2+f3
+   '
> fit2<-cfa(leader.model2, estimator="MLM", data=c_data, std.lv=TRUE)
Warning message:
In lavaan(model = leader.model2, data = c_data, std.lv = TRUE, estimator = "MLM",  :
  lavaan WARNING: model has NOT converged!
> summary(fit2, fit.measures=T)
** WARNING ** lavaan (0.5-12) did NOT converge after 949 iterations
** WARNING ** Estimates below are most likely unreliable

yrosseel

unread,
Apr 5, 2013, 11:15:40 AM4/5/13
to lav...@googlegroups.com
On 04/05/2013 05:05 PM, dpsc...@gmail.com wrote:
> Thanks for your help. I added std.lv=TRUE but now I get a convergence
> error. Just to test, I tried the model with the default estimator and
> got the same convergence error message. Is this a sign that the data is
> a really poor fit for a single higher order factor?

Yes.

Yves.

Reply all
Reply to author
Forward
0 new messages