Higher-Order Confirmatory FA PreviousNext
Mplus Discussion > Confirmatory Factor Analysis >
Message/Author
 Morayo Ayodele posted on Saturday, June 30, 2012 - 2:25 pm
Hello Dr. Muthen,

I am trying to run a third-order factor CFA with TWO second-order factors both of which have TWO first-order 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 second-order 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 third-order 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;
 Linda K. Muthen posted on Sunday, July 01, 2012 - 10:45 am
A second-order factor must have a minimum of three first-order 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 second-order factors may be identified by borrowing from other parts of the model.
 Morayo Ayodele posted on Tuesday, July 03, 2012 - 10:23 am
Thank you very much. Your suggestion solved the problem.
 Morayo Ayodele posted on Friday, July 06, 2012 - 8:57 am
Hello Dr. Muthen,

After constraining the two first-order factors to 1, I observed that the fit indices for both the two-factor model and the second-order 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;
 Linda K. Muthen posted on Friday, July 06, 2012 - 11:06 am
There are no degrees of freedom for the second-order factor. You cannot asses the fit of it above the fit of the first-order factors. You would need at least four first-order indicators.
 Morayo Ayodele posted on Sunday, July 08, 2012 - 10:48 am
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
 Bengt O. Muthen posted on Monday, May 11, 2015 - 6:13 pm
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
 Bengt O. Muthen posted on Tuesday, May 12, 2015 - 5:35 pm
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 2-indicator model is not a strong model.
 Michael Reichenheim posted on Thursday, December 15, 2016 - 2:53 pm
Hello,

I'm running a higher-order 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.
 Bengt O. Muthen posted on Friday, December 16, 2016 - 5:32 pm
I don't know what you mean by the lam_z_k estimates or the usual equation.
 Michael Reichenheim posted on Saturday, December 17, 2016 - 5:36 am
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, single-order CFA). This must be trivial, but I’m not figuring it out. Your help would be much appreciated.

Btw, Happy Holidays to you all.
 Bengt O. Muthen posted on Monday, December 19, 2016 - 5:57 pm
First note that you can give only one label per row.

Second, note the with the higher-order factor fHO, f2 refers to the residual variance not the variance of f2. So in Model Constraint replace vf2 with

lamho2**2*vfho+vf2;
 Michael Reichenheim posted on Tuesday, December 20, 2016 - 1:31 am
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.
 Dong Shuyang posted on Friday, February 21, 2020 - 8:30 am
Hi,

I encountered some problems when estimating the correlations between the first-order factor and other observables. Could you please give me some advice?

The model is something like this:
F1 by x1-x4;
F2 by x5-x9;
F3 by x10-x13;
WARM by F1* F2 F3;
WARM@1;

F1 with a b c d;
F2 with a b c d;
F3 with a b c d;

In the unstandardized model results, the factor loading of "WARM by F2" is smaller than 1, so I could see the output for the unstandardized results of "F2 with a b c d". However, in the standardized model results, the factor loading of "WARM by F2" is larger than 1, so no results were shown.

Then I tried to add the following constraint (F2@0) to the original model:

F1 by x1-x4;
F2 by x5-x9;

F2@0;

F3 by x10-x13;
WARM by F1* F2 F3;
WARM@1;

F1 with a b c d;
F2 with a b c d;
F3 with a b c d;

But still, I could only see the unstandardized results for "F2 with a b c d" and no standardized results.

Is there any solution to this problem if I want to see the standardized model results of "F2 with a b c d"?

Thank you!

Shuyang
 Bengt O. Muthen posted on Friday, February 21, 2020 - 3:48 pm
It is not clear that you have set up the model correctly - send the output to Support along with your license number.
 Brandon Goldstein posted on Tuesday, May 19, 2020 - 11:35 am
Hello,
I am trying to determine whether it is possible to free the first parameters in a higher order CFA.

For instance, a model as follows will not converge:

F1 By x1*-x5;
F2 By x6*-x10;
F3 By x11*-x15;
F4 By x16*-x20;
F1@1;
F2@1;
F3@1;
F4@1;

F6 By F1*-F4;
F6@0;

Any suggestions are appreciated.
 Bengt O. Muthen posted on Wednesday, May 20, 2020 - 5:09 pm
I assume you mean F6@1.
 Brandon Goldstein posted on Thursday, May 21, 2020 - 1:16 pm
Yes exactly, my mistake F6@1.

Any ideas as to why this type of model would not converge? Thank you.
 Bengt O. Muthen posted on Thursday, May 21, 2020 - 4:25 pm
Yes, that should work. Send output to Support along with your license number if you can't get it going.
Back to top
Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action: