Hi everyone,
I am trying using proc calis with path statement to depict one very simple SEM with two latent factors (X and Y) which each has 6 indicators, and X predicts Y with the following code.
proc calis ;
path
T1_X -> x1-x6,
T1_y -> y1-y6,
T1_x -> T1_y;
fitindex noindextype on(only)=[chisq df cfi BENTLERNNFI rmsea srmsr bentlercfi probchi];
run;
However, I found that the degree of freedom for SAS is 51, which is not the same when I use the AMOS and Mplus (df = 53).
But the esimate is almost the same with the Mplus.
Why the df is not the same?
The DF are different between CALIS and Mplus because CALIS does not automatically constrain path coefficients or variances. The model that you ran does not have a stable solution. That is, you should have received the following note in the output: "Covariance matrix for the estimates is not full rank." When working with latent variables, it is necessary to add constraints to make the model interpretable. That is, one of the loadings for each variable should be constrained to one (though it's also possible to constrain the latent variables to each have a variance of one, that is not recommended for endogenous latent variables). For example, the following code constrains the path T1_X --> x1 to 1 and the path T1_y --> y1 to 1 (which I believe matches the Mplus default).
proc calis;
path
T1_X -> x1-x6 = 1,
T1_y -> y1-y6 = 1,
T1_x -> T1_y;
fitindex noindextype on(only)=[chisq df cfi BENTLERNNFI rmsea srmsr bentlercfi probchi];
run;
Making this change will reduce the DF to 51, matching Mplus and Amos. However, the choice of path to constrain is not arbitrary. Rather, you should constrain the path for the indicator variable that provides the best measure of the latent variable. This will yield results that are more interpretable.
The DF are different between CALIS and Mplus because CALIS does not automatically constrain path coefficients or variances. The model that you ran does not have a stable solution. That is, you should have received the following note in the output: "Covariance matrix for the estimates is not full rank." When working with latent variables, it is necessary to add constraints to make the model interpretable. That is, one of the loadings for each variable should be constrained to one (though it's also possible to constrain the latent variables to each have a variance of one, that is not recommended for endogenous latent variables). For example, the following code constrains the path T1_X --> x1 to 1 and the path T1_y --> y1 to 1 (which I believe matches the Mplus default).
proc calis;
path
T1_X -> x1-x6 = 1,
T1_y -> y1-y6 = 1,
T1_x -> T1_y;
fitindex noindextype on(only)=[chisq df cfi BENTLERNNFI rmsea srmsr bentlercfi probchi];
run;
Making this change will reduce the DF to 51, matching Mplus and Amos. However, the choice of path to constrain is not arbitrary. Rather, you should constrain the path for the indicator variable that provides the best measure of the latent variable. This will yield results that are more interpretable.
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.