Message/Author 


Hello Dr. Muthen, I am trying to run a thirdorder factor CFA with TWO secondorder factors both of which have TWO firstorder factors each. I understand that this model is not directly identified but I have substantive reasons to suggest such a model. Moreover, I have come across articles where similar models were run. Could you please advice on the appropriate syntax to use that would return an output without errors? For the secondorder model, this is the syntax I feel is most reasonable: Model: f1 by sglse41 sglse42 sglse67 sglse76 sglse100 sglse30 sglse40 sglse55 sglse83 sglse92 sglse97 sglse102; f2 by sglse3 sglse17 sglse25 sglse68 sglse35 sglse58 sglse78 sglse84 sglse94 sglse96 sglse98; f3 by f1* f2; f3@1; Output: Sampstat standardized mod; For the thirdorder model, this is the syntax I feel is most reasonable: Model: f1 by sglse3 sglse17 sglse25 sglse68; f2 by sglse41 sglse42 sglse67 sglse76 sglse100; f3 by sglse35 sglse58 sglse78 sglse84 sglse94 sglse96 sglse98; f4 by sglse30 sglse40 sglse55 sglse83 sglse92 sglse97 sglse102; f5 by f1* f2; f6 by f3* f4; f7 by f5* f6; f5@1; f6@1; f7@1; Output: Sampstat standardized mod; 


A secondorder factor must have a minimum of three firstorder factors to be identified unless you place a restriction on the model such as having both factor loadings equal to one. The model with three secondorder factors may be identified by borrowing from other parts of the model. 


Thank you very much. Your suggestion solved the problem. 


Hello Dr. Muthen, After constraining the two firstorder factors to 1, I observed that the fit indices for both the twofactor model and the secondorder model are exactly the same. Does this matter or does it indicate an error somewhere? Model: f1 by sglse41 sglse42 sglse67 sglse76 sglse100 sglse30 sglse40 sglse55 sglse83 sglse92 sglse97 sglse102; f2 by sglse3 sglse17 sglse25 sglse68 sglse35 sglse58 sglse78 sglse84 sglse94 sglse96 sglse98; f3 by f1@1 f2@1; Output: Sampstat standardized mod; 


There are no degrees of freedom for the secondorder factor. You cannot asses the fit of it above the fit of the firstorder factors. You would need at least four firstorder indicators. 


Thank you 

Jiyeon So posted on Monday, May 11, 2015  9:56 am



Hi Dr. Muthen, I am testing similar models (from the case above) and want to see if a CFA model with a single factor on the 3rd order has equivalent or better model fit compared to a 2nd order. Here goes the syntax:  3rd order unidimensional model: Pervasive by SS1 SS2 SS3 SS4; Redundancy by SS6 SS7 SS8; Exhaustion by SS11 SS12 SS13; Tedium by SS14 SS15 SS16; Perception by pervasive redundancy; Experience by exhaustion tedium; Fatigue by perception experience; While the model fit reported in the output for the 3rd order CFA is good, I observed a heywood case, in which one of the standardized factor loadings (fatigue to perception) is over 1.00 (1.01) and the residual variance for that indicator is negative (  .02). I think this is identification issue caused by the 3rd order factor having only two indicators in the 2nd order. I've tried inserting equality constraint on the two factor loadings from the 3rd order factor to the two 2nd order factors but it doesn't help (and the output actually shows unequal coefficients  so the program seems to not reflect the constraint i've placed). This is the equality constraint i added to the 3rd order CFA. fatigue by experience perception (1); Your advice on this situation would be greatly appreciated! Thank you very much in advance. Jiyeon 


Setting those loadings equal does not resolve it because you are trying to estimate 1 loading and 1 factor variance from only 1 piece of covariance information. You need to fix both loadings at 1. 

Jiyeon So posted on Tuesday, May 12, 2015  9:15 am



Thank you Dr. Bengt for your feedback. That makes sense. I used the following syntax in an effort to fix both loadings at 1.00. Fatigue by perception@1 experience@1; However, the output still shows standardized factor loading of 1.24 (for fatigue > perception) and negative residual variance for perception (.53). I still have a warning stating that "the latent variable covariance matrix is not positive definite..... problem involving variable perception." Could you direct me to what i can try now? Thank you very much in advance. Jiyeon 


Even if you fix a raw loading at 1 you get a standardized loading different from 1 because the IV and DV variances may not be 1. In some cases you might want to fix the negative residual at zero. Which would say that perception is the same as fatigue. But remember that a 2indicator model is not a strong model. 


Hello, I'm running a higherorder CFA model and need to work with the standardized loadings in MODEL CONSTRAINT (Schmid–Leiman transformation ...). Given that I can get: . . . f1 BY i_1 (lam_1) . . . i_k (lam_k) ; f2 BY . . . f3 BY . . . lam_1 (ve_1) ; . . . lam_k (ve_k) ; f_HO BY F1 (lamho1) F2 (lamho2) F3 (lamho3) ; f1 (fv1) ; f2 (fv2) ; f3 (fv3) ; fHO (f_ho_v) ; ... how do I calculate the lam_z_k estimates in MODEL CONSTRAINT (since the 'usual' equation is not suitable)? Thanks. 


I don't know what you mean by the lam_z_k estimates or the usual equation. 


Hi Bengt, Sorry ... lam_z_k would be the standardized estimate obtained by the ‘usual equation’ (used in a regular/simple CFA): lam_z_k = SQRT(lam_k**2 * fv) / SQRT( (lam_k **2 * vf) + ve_k) ; To be concrete, if I specify (focusing just on item 6 belonging to factor 2, for instance): f2 BY i6 (lam6); fHO BY f1 (lamho1) f2 (lamho2) f3 (lamho3); i6 (ve6); f2 (vf2); fHO (vfho); MODEL CONSTRAINT: NEW (... l6 ...); l6 = SQRT(lam6**2 * vf2) / SQRT( (lam6**2 * vf2) + ve6) ; ... I get (output): F2 BY i6 1.268 ... FHO BY F2 0.895 ... Variances FHO 0.845 ... Residual Var i6 0.956 ... F2 0.284 ... New/Addit Param L6 0.569 ... STDYX Standardiz i6 0.786 ... I know there’s something missing in the above equation to get from 0.569 to 0.786 (which would be the same in a basic, singleorder CFA). This must be trivial, but I’m not figuring it out. Your help would be much appreciated. Btw, Happy Holidays to you all. 


First note that you can give only one label per row. Second, note the with the higherorder factor fHO, f2 refers to the residual variance not the variance of f2. So in Model Constraint replace vf2 with lamho2**2*vfho+vf2; 


Yes, labels are one per row in the real *inp; shown above was only due to some editing to fit the msg space limit. It worked (of course). Thanks so much. 

Back to top 