In addition to the many important feature enhancements of the CALIS procedure since SAS/STAT 9.22, there have also been some rudimentary changes in the procedure. To help users make a smoother transition from earlier versions (SAS/STAT 9.2 or earlier), this section describes some of the major changes of the CALIS procedure since SAS/STAT 9.22.
Table 29.1 lists some important changes in the default analysis type and parameterization since SAS/STAT 9.22. Some items that did not change are also included to make the scope of the changes clear. Notice that the part of this table about default parameterization applies only to models that have functional relations between variables. This class of functional models includes the following types of models: FACTOR, LINEQS, LISMOD, PATH, and RAM, although LISMOD and PATH models did not exist prior to SAS/STAT 9.22. This table does not apply to the default parameterization of the COSAN and MSTRUCT models. For these models, see the descriptions in the COSAN and MSTRUCT statements, or see the sections The MSTRUCT Model and The COSAN Model.
Table 29.1: Default Analysis Type and Parameterization
Default Setting |
SAS/STAT 9.22 or Later |
Prior to SAS/STAT 9.22 |
---|---|---|
Analysis type |
Covariance analysis |
Correlation analysis |
Variances of independent factors and errors |
Free parameters |
Zero variances |
Variances of independent observed variables |
Free parameters |
Free parameters |
Covariances between independent factors |
Free parameters |
Fixed zeros |
Covariances between error variables |
Fixed zeros |
Fixed zeros |
Covariances between independent |
Free parameters |
Free parameters |
1. The exploratory FACTOR model is an exception. Covariances between unrotated factors are set to zeros by default.
Covariance structure analysis is the default analysis type in SAS/STAT 9.22 or later.
Covariance structure analysis has been the default since SAS/STAT 9.22. The statistical theory for structural equation modeling has been developed largely for covariance structures rather than correlation structures. Also, most practical structural equation models nowadays are concerned with covariance structures. Therefore, the default analysis type with covariance structure analysis is more reasonable. You must now use the CORR option for correlation structure analysis.
Variances of any types of variables are free parameters by default in SAS/STAT 9.22 or later.
Variances of any types of variables are assumed to be free parameters in almost all applications for functional models. Prior to SAS/STAT 9.22, default variances of independent factors and errors were set to fixed zeros. This default has changed since SAS/STAT 9.22. Variances of any types of variables in functional models are now free parameters by default. This eliminates the need to specify these commonly assumed variance parameters.
Covariances between all exogenous variables (factors or observed variables), except for error variables, are free parameters by default in functional models in SAS/STAT 9.22 or later.
Since SAS/STAT 9.22, covariances between all exogenous variables, except for error variables, are free parameters by default in functional models such as LINEQS, LISMOD, PATH, RAM, and confirmatory FACTOR models. In exploratory FACTOR models, covariances between unrotated factors are set to zeros by default. This change of default setting reflects the structural equation modeling practice much better. The default covariances between error variables, or between errors and other exogenous variables, are fixed at zero in all versions. Also, the default covariances between independent observed variables are free parameters in all versions.
Certainly, you can override all default parameters by specifying various statements in SAS/STAT 9.22 or later. You can use the PVAR , RAM , VARIANCE , or specific MATRIX statement to override default fixed or free variance parameters. You can use the COV , PCOV , RAM , or specific MATRIX statement to override default fixed or free covariance parameters.
Like many other SAS procedures, PROC CALIS enables you to use the VAR statement to define the set of observed variables in the data set for analysis. Unlike many other SAS procedures, PROC CALIS has other statements for more flexible model specifications. Because you can specify observed variables in these model specification statements and in the VAR statement with PROC CALIS, a question might arise when the set of observed variables specified in the VAR statement is not exactly the same as the set of observed variables specified in the model specification statements. Which set of observed variables does PROC CALIS use for analysis? The answer might depend on which version of PROC CALIS you use.
For observed variables that are specified in both the VAR statement and at least one of the model specification statements (such as the LINEQS, PATH, RAM, COV, PCOV, PVAR, STD, and VARIANCE statements), PROC CALIS recognizes the observed variables without any difficulty (that is, if they actually exist in the data set) no matter which SAS version you are using.
For observed variables that are specified only in the model specification statements and not in the VAR statement specifications (if the VAR statement is used at all), PROC CALIS does not recognize the observed variables as they are because the VAR statement has been used to preselect the legitimate set of observed variables to analyze. In most models, these observed variables are instead treated as latent variables. Again, this behavior is the same for all versions of PROC CALIS. If mistreating observed variables as latent variables is a major concern, a simple solution is not to use the VAR statement at all. This ensures that PROC CALIS uses all the observed variable as they are if they are specified in the model specification statements.
Finally, for observed variables that are specified only in the VAR statement and not in any of the model specification statements, the behavior depends on which SAS version you are using. Prior to SAS/STAT 9.22, PROC CALIS simply ignored these observed variables. For SAS/STAT 9.22 or later, PROC CALIS still includes these observed variables for analysis. In this case, PROC CALIS treats these "extra" variables as exogenous variables in the model so that some default parameterization applies. See the section Default Analysis Type and Default Parameterization for explanations of why this could be useful.
Prior to SAS/STAT 9.22, LINEQS was the most popular modeling language supported by PROC CALIS. Since then, PROC CALIS has implemented a new syntax system that does not require the use of parameter names. Together with the change in default parameterization and some basic modeling methods, the specification of LINEQS models becomes much simpler and intuitive in SAS/STAT 9.22 or later. Table 29.2 lists the major syntax changes in LINEQS model specifications, followed by some notes.
Table 29.2: Changes in the LINEQS Model Syntax
Syntax |
SAS/STAT 9.22 or Later |
Prior to SAS/STAT 9.22 |
---|---|---|
Free parameter specifications |
Parameter names optional |
Parameter names required |
Error terms in equations |
Required |
Not required |
Mean structure analysis |
With the MEANSTR option |
With the UCOV and AUG options |
Intercept parameter specifications |
With the |
With the |
Mean parameter specifications |
With the MEAN statement specifications |
As covariances between variables and the |
Treatment of short parameter lists |
Free parameters after the last parameter specification |
Replicating the last parameter specification |
Parameter-prefix notation |
With two trailing underscores ( |
With the suffix ':' |
The explanations of these changes are as follows:
The use of parameter names for free parameters is optional in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you must use parameter names to specify free parameters. In SAS/STAT 9.22 or later, the use of parameter names is optional. For example, prior to SAS/STAT 9.22, you might use the following LINEQS model specifications:
lineqs A = x1 * B + x2(.5) * C + E1; std B = var_b, C = var_c(1.2); cov B C = cov_b_c;
In SAS/STAT 9.22 or later, you can simply use the following:
lineqs A = * B + (.5) * C + E1; variance B, C = (1.2); cov B C;
This example shows that the parameter names x1
, x2
, var_b
, var_c
, and cov_b_c
for free parameters are not necessary in SAS/STAT 9.22 or later. PROC CALIS generates names for these unnamed free parameters
automatically. Also, you can specify initial estimates in parentheses without using parameter names. Certainly, you can still
use parameter names wherever you want to, especially when you need to constrain parameters by referring to their names. Notice
that the STD statement prior to SAS/STAT 9.22 has a more meaningful alias, VARIANCE, in SAS/STAT 9.22 or later.
An error term is required in each equation in the LINEQS statement in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you can set an equation in the LINEQS statement without providing an error term such as the following:
lineqs A = x1 * F1;
This means that A
is perfectly predicted from F1
without an error. In SAS/STAT 9.22 or later, you need to provide an error term in each question, and the preceding specification
is not syntactically valid. If a perfect relationship is indeed desirable, you can equivalently set the corresponding error
variance to zero. For example, the following specification in SAS/STAT 9.22 or later achieves the purpose of specifying a
perfect relationship between A
and F1
:
lineqs A = x1 * F1 + E1; variance E1 = 0.;
In the VARIANCE statement, the error variance of E1
is fixed at zero, resulting in a perfect relationship between A
and F1
.
Mean structure analysis is invoked by the MEANSTR option in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you use the AUG and UCOV options together in the PROC CALIS statement to invoke the analysis of mean structures. These two options became obsolete in SAS/STAT 9.22. This change actually reflects more than a name change. Prior to SAS/STAT 9.22, mean structures are analyzed as augmented covariance structures in the uncorrected covariance matrix (hence the AUG and UCOV options). There are many problems with this "augmented" matrix approach. In SAS/STAT 9.22 or later, the augmented matrix was abandoned in favor of the direct parameterization approach for the mean structures. Now you must use the MEANSTR option in the PROC CALIS statement to invoke the analysis of mean structures. Alternatively, you can specify the intercepts directly in the LINEQS statement or specify the means directly in the MEAN statement. See the next two items for more information.
Intercept parameters are set as the coefficient effects of the Intercept
variable in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you specify the intercept variable in the equations of the LINEQS statement by using the special "variable"
named 'INTERCEP'. For example, in the following specification, a1
is the intercept parameter for the equation with dependent variable A
:
proc calis ucov aug; lineqs A = a1 * INTERCEP + b1 * B + E1;
In SAS/STAT 9.22 or later, although 'INTERCEP' is still accepted by PROC CALIS, a more meaningful alias 'Intercept' is also supported, as shown in the following:
proc calis; lineqs A = a1 * Intercept + b1 * B + E1;
Intercept
or INTERCEP
can be typed in uppercase, lowercase, or mixed case in all versions. In addition, with the use of the Intercept
variable in the LINEQS statement specification, mean structure analysis is automatically invoked for all parts of the model
without the need to use the MEANSTR option in the PROC CALIS statement in SAS/STAT 9.22 or later.
Mean parameters are specified directly in the MEAN statement in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you need to specify mean parameters as covariances between the corresponding variables and the INTERCEP
variable. For example, the following statements specify the mean parameters, mean_b
and mean_c
, of variables B
and C
, respectively:
proc calis ucov aug; lineqs A = a1 * INTERCEP + b1 * B + b2 * C + E1; cov B INTERCEP = mean_b (3), C INTERCEP = mean_c;
In SAS/STAT 9.22 or later, you can specify these mean parameters directly in the MEAN statement, as in the following example:
proc calis; lineqs A = a1 * Intercept + b1 * B + b2 * C + E1; mean B = mean_b (3), C = mean_c;
This way, the types of parameters that are being specified are clearer.
Short parameter lists do not generate constrained parameters in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, if you provide a shorter parameter list than expected, the last parameter specified is replicated
automatically. For example, the following specification results in replicating varx
as the variance parameters for variables x2
–x10
:
std x1-x10 = var0 varx;
This means that all variances for the last nine variables in the list are constrained to be the same. In SAS/STAT 9.22 or
later, this is not the case. That is, var0
and varx
are the variance parameters for x1
and x2
, respectively, while the variances for x3
–x10
are treated as unconstrained free parameters.
If you want to constrain the remaining parameters to be the same in the current version of PROC CALIS, you can use the following
continuation syntax [...]
at the end of the parameter list:
std x1-x10 = var0 varx [...];
The continuation syntax [...]
repeats the specification of varx
for all the remaining variance parameters for x3
–x10
.
The parameter-prefix uses a new notation in SAS/STAT 9.22 or later.
Prior to SAS/STAT 9.22, you can use the parameter-prefix to generate parameter names as in the following example:
lineqs A = x: * B + x: * C + E1; std B = var:, C = var: ;
In SAS/STAT 9.22 or later, you must replace the ':' notation with two trailing underscores, '__
', as in the following:
lineqs A = x__ * B + x__ * C + E1; variance B = var__, C = var__;
Both versions generate parameter names by appending unique integers to the prefix, as if the following has been specified:
lineqs A = x1 * B + x2 * C + E1; variance B = var1, C = var2;
In SAS/STAT 9.22 or later, you can even omit the parameter-prefix altogether. For example, you can specify the following with a null parameter-prefix:
lineqs A = __ * B + __ * C + E1; variance B = __, C = __;
In this case, PROC CALIS uses the internal prefix '_Parm' to generate names, as if the following has been specified:
lineqs A = _Parm1 * B + _Parm2 * C + E1; variance B = _Parm3, C = _Parm4;