Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Stat Procs
- /
- Simple SEM using proc calis with path statement

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

3 weeks ago

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?

Accepted Solutions

Solution

Monday

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

a week ago

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.

All Replies

Solution

Monday

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

a week ago

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.