Multiple group analysis with correlat... PreviousNext
Mplus Discussion > Confirmatory Factor Analysis >
 Sarah Phillips posted on Tuesday, October 14, 2014 - 6:43 am

I'm doing a multi-group CFA to test for measurement invariance for a one-factor model with a few correlated residuals. Because this model is somewhat different than all the examples I've read, I want to make sure that I'm specifying my models correctly.

The basic model I'm testing is:

outcome by i1-i7;
i1 with i2;
i6 with i7;

My specific questions are below:

1) When I test for equal factor loadings, am I correct that my model should be:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;

Group 1:
i1 with i2;
i6 with i7;

2) Likewise, when I move on to test for equal intercepts, should my model be:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;

Group 1:
i1 with i2;
i6 with i7;

3) Then, does it make sense to test that the correlated residuals are equal across groups without testing the invariance of the remaining residual variances-- i.e. something like:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;

Group 1:

Or should I do:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;
i1-i7 (1-7);

Group 1:

Or should I do the model without the residual variances and then the residual variances?

Thanks so much for your help!

 Bengt O. Muthen posted on Tuesday, October 14, 2014 - 5:21 pm
I wouldn't bother with group-invariant residual variances or covariances, but let them vary. And if you have group-varying residual variances, it doesn't make much sense to have group-invariant covariances because covariances are on scales that relate to the scales of variances.
 Sarah Phillips posted on Wednesday, October 15, 2014 - 6:26 am
Thanks, Bengt. This is helpful. For steps 1 and 2 (equal factor loadings and intercepts), am I correct that my code will allow the residual variances and covariances to vary across groups?

I'm testing:

1) Equal factor loadings:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;

Group 1:
i1 with i2;
i6 with i7;

2) Equal intercepts:

Model: outcome by i1-i7;
i1 with i2;
i6 with i7;

Group 1:
i1 with i2;
i6 with i7;
 Bengt O. Muthen posted on Wednesday, October 15, 2014 - 2:03 pm
Yes. You can also see this easily in TECH1.
 Rasha Qudisat posted on Thursday, October 22, 2015 - 8:00 pm
Dr. Muthen,
I am trying to find the interaction between observed variable and latent variable, and the model includes correlated errors between the observed variable. When I run the model, I receive a msg “Covariances for categorical, censored, count or nominal variables with other observed variables
are not allowed. For covariances between categorical variables, specify PARAMETERIZATION=RESCOV in the ANALYSIS command.” However, when I use this prameterization, I receive another msg “Categorical variables are not allowed as factor indicators for PARAMETERIZATION=RESCOV.”
Any suggestions how I can fix the syntax to develp the interaction?
Below is my syntax

Type = Random;
E By E1 E2 E4 E5 ;
IN By IN1 IN3 IN4 ;
O By O1 O2 O3 O4;
Q By Q1 Q2 Q3 Q4 Q5 Q6;
DNA by E IN O Q;
Shame By S4 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16;
Guilt by G1 G2 G3 G4 G5 G7 G8 G9 G10 G12 G13 G14 G15 G16;
S15 WITH S12;
S16 WITH S7;
S16 WITH S8;
S16 WITH S13;
G3 WITH S11;
G4 WITH S11;

DNA on Shame Guilt;
Guilt with shame;

DNA on Shame Guilt Gender ShamexGender GuiltxGender;
GuiltxGender | Guilt xwith Gender;
ShamexGender | Shame xwith Gender;
 Linda K. Muthen posted on Friday, October 23, 2015 - 11:20 am
RESCOV is for mixture models. To specify a residual covariance using categorical outcomes and maximum likelihood estimation, say

f BY g4@1 s11;
f@1; [f@0];

The residual covariance is found in the factor loading for s11. Each residual covariance requires one dimension of integration which may make your model unrealistic.
 Rasha Qudisat posted on Friday, October 23, 2015 - 12:22 pm
Thank you Dr. Muthen,
Do you mean I should account for each residual covaraince? my model has 26 residual covrainces between the observed variables, and I put here only the first 8 due to space limitation in the comment box.

Should I do something like this?
Shame By S4;
Shame by S6@1 S7;
shame by S8@ S7;
Shame by S9 S10 S11 S16;
Guilt By G16@1 S7 S8 G5;

does this implies cross loadings between items of guilt and items of shame?

 Linda K. Muthen posted on Saturday, October 24, 2015 - 8:08 am
A cross-loading is when an indicator loads on more than one factor, for example,

f1 BY y1 y2 y3;
f2 BY y4 y2 y5;

Here y2 loads on two factors.

If you need 26 residual covariances, I would think your CFA is not well specified. I would do an EFA to see what factors the data find and try to understand the difference between that and the CFA.

It is not realistic to have a model with 26 dimensions of integration which would be required with 26 residual covariances.
 Grace Icenogle posted on Wednesday, July 27, 2016 - 4:16 pm
Drs. Muthen,
I am testing for scalar invariance of a 1 factor, 10-item scale (binary indicators) across 8 groups. 3 of the indicators are reverse coded and I am allowing their residuals to correlate. The configural model looks fine, but the scalar model is not converging (despite 50,000 iterations). It seems this has to do with the correlated residuals because when I exclude them from the scalar model, it converges. I'm at a loss as far as what I've done wrong. Is this an error in syntax, or is there a substantive reason I cannot include correlated residuals in the scalar model?

F1 BY i1* (L1)
i10R (L10);


[i1$1] (T1);
[i10R$1] (T10);

i2R WITH i6R;
i2R WITH i10R;
i6R WITH i10R;


{i1@1}; !Scale factors fixed to 1

MODEL G2: !Syntax identical for all remaining groups

Thank you!

 Bengt O. Muthen posted on Wednesday, July 27, 2016 - 5:36 pm
Please send your output with TECH1 and iterations=100 to Support along with your license number. Also send the output from the scalar run without the residual covariances.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Enable HTML code in message
Automatically activate URLs in message