Turn on suggestions

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

Showing results for

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

Options

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

🔒 This topic is **solved** and **locked**.
Need further help from the community? Please
sign in and ask a **new** question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Posted 08-01-2017 03:45 AM
(1737 views)

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?

1 ACCEPTED SOLUTION

Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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.

1 REPLY 1

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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.

**Available on demand!**

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

What is ANOVA?

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.