The CALIS Procedure

REFMODEL Statement

  • REFMODEL model-number </ options>;

The REFMODEL statement is not a modeling language itself. It is a tool for referencing and modifying models. It is classified into one of the modeling languages because its role is similar to other modeling languages.

In the REFMODEL statement, you specify the model-number (between 1 and 9,999, inclusive) of the model you are making reference to. The reference model must be well-defined in the same PROC CALIS run. In the options, you can rename all the parameters in the reference model by adding a prefix or suffix so that the current model has a new set of parameters. The RENAMEPARM statement renames individual parameters in the reference model to new names. In the main model specification statement and the subsidiary model specification statements , you can respecify or modify the specific parts of the reference model. The specification of these statements must be compatible with the model type of the reference model.

Note: The REFMODEL statement does not simply copy model specifications from a reference model. If you do not change any of the parameter names of the reference model by any of the REFMODEL statement options, the REFMODEL statement copies only the explicit specifications from the reference model to the new model. However, the REFMODEL statement does not copy the default parameters from the reference model to the new model. For example, consider the following statements:

proc calis;
   group 1 / data=a1;
   group 2 / data=a2;
   model 1 / group=1;
      path x1 ===> x2;
   model 2 / group=2;
      refmodel 1;
run;

In this example, Model 2 makes reference to Model 1. This means that the path relationship between x1 and x2 as specified in Model 1 is exactly the same path relationship you want Model 2 to have. The path coefficients in these two models are constrained to be the same. However, the variance parameter of x1 and the error variance parameter for x2 are not constrained in these models. Rather, these two parameters are set by default in these models separately. If you intend to constrain all parameters in the two models, you can specify all the parameters in Model 1 explicitly and use the REFMODEL statement for Model 2, as shown in the following statements:

proc calis;
   group 1 / data=a1;
   group 2 / data=a2;
   model 1 / group=1;
      path x1 ===> x2;
      pvar x1 x2;
   model 2 / group=2;
      refmodel 1;
run;

This way Model 2 makes reference to all the explicitly specified parameters in Model 1. Hence the two models are completely constrained. However, a simpler way to fit exactly the same model to two groups is to use a single model definition, as shown in the following statements:

proc calis;
   group 1 / data=a1;
   group 2 / data=a2;
   model 1 / group=1,2;
      path x1 ===> x2;
run;

This specification has the same estimation results as those for the preceding specification.

When you also use one of the REFMODEL statement options, the REFMODEL statement is no longer a simple copy of explicit parameter specifications from the reference model. All parameters are renamed in the new model in the model referencing process. The following options are available in the REFMODEL statement:

ALLNEWPARMS

appends to the parameter names in the reference model with _mdl and then an integer suffix denoting the model number of the current model. For example, if qq is a parameter in the reference model for a current model with model number 3, then this option creates qq_mdl3 as a new parameter name.

PARM_PREFIX=prefix

inserts to all parameter names in the reference model with the prefix provided. For example, if qq is a parameter in the reference model for a current model, then PARM_PREFIX=pre_ creates pre_qq as a new parameter name.

PARM_SUFFIX=suffix

appends to all parameter names in the reference model with the suffix provided. For example, if qq is a parameter in the reference model for a current model, then PARM_SUFFIX=_suf creates qq_suf as a new parameter name.

Instead of renaming all parameters, you can also rename parameters individually by using the RENAMEPARM statement within the scope of the REFMODEL statement.

You can also add the main and subsidiary model specification statements to modify a particular part from the reference model. For example, you might like to add or delete some equations or paths, or to change a fixed parameter to a free parameter or vice versa in the new model. All can be done in the respecification in the main and subsidiary model specification statements within the scope of the MODEL statement to which the REFMODEL statement belongs. Naturally, the modeling language used in respecification must be the same as that of the reference model. See the individual statements for modeling languages for the syntax of respecification. Note that when you respecify models by using the main and subsidiary model specification statements together with the RENAMEPARM statement or the REFMODEL options for changing parameter names, the parameter name changes occur after respecifications.