VARIANCE
assignment <, assignment …> ;
where assignment represents: var-list < =parameter-spec>
The VARIANCE statement specifies the variance parameters in connection with the LINEQS model. Notice that the VARIANCE statement is different from the VAR statement, which specifies variables for analysis. In previous versions of PROC CALIS, the STD statement name was used instead of the VARIANCE statement name. Although these two names result in the same functionalities, the VARIANCE statement name reflects the intended usages better.
In the LINEQS model, variance parameters are defined only for exogenous manifest and latent variables (including error and disturbance variables) in the model. Therefore, you cannot list any endogenous variables in the var-list list of the VARIANCE statement. You can specify no more than one VARIANCE statement for each LINEQS model.
In each assignment of the VARIANCE statement, you list the var-list whose variances you want to specify. Optionally, you can provide a list of parameter specifications (parameter-spec) after an equal sign for each var-list list.
You can specify the following five types of the parameters for the variances of the exogenous variables in the VARIANCE statement:
an unnamed free parameter
an initial value
a fixed value
a free parameter with a name provided
a free parameter with a name and initial value provided
Consider a LINEQS model with exogenous variables V1
, V2
, F1
, D2
, and E3
. The following VARIANCE statement illustrates the five types of parameter specifications in five assignments:
variance V1 , V2 = (.5), F1 = 1.0, D2 = dvar, E3 = evar(0.7);
In this statement, the variance of V1
is specified as an unnamed free parameter. For this variance, PROC CALIS generates a parameter name with the _Parm
prefix and appended with a unique integer (for example, _Parm1
). The variance of V2
is an unnamed free parameter with an initial value of 0.5. PROC CALIS also generates a parameter name for this variance.
The variance of F1
is a fixed value of 1.0. This value stays the same during the estimation. The variance of D2
is a free parameter named dvar
. The variance of E3
is a free parameter named evar
with an initial value of 0.7.
When you need to specify a long parameter name list, you can consider using the prefix-name specification for the parameter
list. For example, the following statement specifies 100 unique parameter names for the variances of E1
–E100
:
variance E1-E100 = 100 * evar__; /* evar with two trailing underscores */
In the VARIANCE statement, evar
_
_
is a prefix-name with the root evar
. The notation 100*
means this prefix-name is applied 100 times, resulting in a generation of the 100 unique parameter names evar001
, evar002
, …, evar100
.
The root of the prefix-name should have few characters so that the generated parameter name is not longer than 32 characters. To avoid unintentional equality constraints, the prefix-names should not coincide with other parameter names.
You can specify different types of parameters for the list of variances. For example, the following statement uses a list of parameters with mixed types:
variance E1-E6 = vp1 vp2(2.0) vp3 4. (.3) vp6(.4);
This is equivalent to the following specification:
variance E1 = vp1 E2 = vp2(2.0), E3 = vp3, E4 = 4. , E5 = (.3), E6 = vp6(.4);
Notice that an initial value followed after a parameter name is associated with the free parameter. For example, in the original
mixed list specification, the specification (2.0)
after vp2
is interpreted as the initial value for the parameter vp2
, but not as the initial estimate for the variance of E3
.
However, if you indeed want to specify that vp2
is a free parameter without an initial value and 2.0 is an initial estimate for the variance of E3
(while keeping all other things the same), you can use a null initial value specification for the parameter vp2
, as shown in the following statement:
variance E1-E6 = vp1 vp2() (2.0) 4. (.3) vp6(.4);
This way 2.0 becomes the initial estimate for the variance of E3
. Because a parameter list with mixed types might be confusing, you can break down the specifications into separate assignments to remove ambiguities. For example, you can use the following equivalent specification:
variance E1 = vp1 E2 = vp2, E3 = (2.), E4 = 4. , E5 = (.3), E6 = vp6(.4);
If you provide fewer parameters than the number of variances in the var-list list, all the remaining parameters are treated as unnamed free parameters. For example, the following specification assigns a fixed value of 1.0 to the variance of F1 while treating the other three variances as unnamed free parameters:
variance F1-F4 = 1.0;
This specification is equivalent to the following specification:
variance F1 = 1.0, F2-F4;
If you intend to fill up all values with the last parameter specification in the list, you can use the continuation syntax
[...]
, [..]
, or [.]
, as shown in the following example:
variance E1-E100 = 1.0 psi [...];
This means that the variance of E1
is fixed at 1.0, while the variances of E1
–E100
are all free parameter named psi
. All variances except that for E1
are thus constrained to be equal by using the same parameter name.
However, you must be careful not to provide too many parameters. For example, the following specification results in an error:
variance E1-E6 = 1.0 psi2-psi6 extra;
The parameters after psi6
are excessive.
In the LINEQS model, by default all variances of exogenous manifest and latent variables (including error and disturbance
variables) are free parameters. For these default free parameters, PROC CALIS generates the parameter names with the _Add
prefix and appended with unique integer suffixes. You can also use the VARIANCE statement specification to override these
default variance parameters in situations where you want to specify parameter constraints, provide initial or fixed values,
or make parameter references.
Because only exogenous variables can have variance parameters in the LINEQS model and all these exogenous variances are free parameters by default, there are no default fixed zeros for any variances in the LINEQS model.
If you define a new LINEQS model by using a reference (old) model in the REFMODEL statement, you might want to modify some parameter specifications from the VARIANCE statement of the reference model before transferring the specifications to the new model. To change a particular variance specification from the reference model, you can simply respecify the same variance with the desired parameter specification in the VARIANCE statement of the new model. To delete a particular variance parameter from the reference model, you can specify the desired variance with a missing value specification in the VARIANCE statement of the new model.
For example, suppose that the variance of V1
is specified in the reference model but you do not want this variance specification to be transferred to the new model, you
can use the following VARIANCE statement specification in the new model:
variance V1 = .;
Note that the missing value syntax is valid only when you use the REFMODEL statement. See the section Modifying a LINEQS Model from a Reference Model for a more detailed example of the LINEQS model respecification.
As discussed in a preceding section, PROC CALIS generates default free variance parameters for the LINEQS model if you do not specify them explicitly in the VARIANCE statement. When you use the REFMODEL statement for defining a reference model, these default free variance parameters in the old (reference) model are not transferred to the new model. Instead, the new model generates its own set of default free variance parameters after the new model is resolved from the reference model, the REFMODEL statement options, the RENAMEPARM statement, and the VARIANCE statement specifications in the new model. This also implies that if you want any of the variance parameters to be constrained across the models by means of the REFMODEL specification, you must specify them explicitly in the VARIANCE statement of the reference model so that the same variance specification is transferred to the new model.