Previous Page | Next Page

The CALIS Procedure

BOUNDS Statement
BOUNDS constraint <, constraint ...> ;
where constraint represents
< number operator > parameter-list < operator number >

You can use the BOUNDS statement to define boundary constraints for any parameter that has its name specified in a MATRIX, LINEQS, STD, COV, or RAM statement or that is used in the model of an INRAM= data set. Valid operators are , <, , >, and or, equivalently, LE, LT, GE, GT, and EQ. The following is an example of the BOUNDS statement:

   bounds        0.   <= a1-a9 x    <= 1. ,
                -1.   <= c2-c5            ,
                         b1-b10 y   >= 0. ;

You must separate boundary constraints with a comma, and you can specify more than one BOUNDS statement. The feasible region for a parameter is the intersection of all boundary constraints specified for that parameter; if a parameter has a maximum lower boundary constraint larger than its minimum upper bound, the parameter is set equal to the minimum of the upper bounds.

If you need to compute the values of the upper or lower bounds, create a TYPE=EST data set containing _TYPE_=’UPPERBD’ or _TYPE_=’LOWERBD’ observations and use it as an INEST= or INVAR= input data set in a later PROC CALIS run.

The BOUNDS statement can contain only parameter names and numerical constants. You cannot use the names of variables created in SAS programming statements.

The active set strategies made available in PROC CALIS cannot realize the strict inequality constraints < or >. For example, you cannot specify BOUNDS x > 0; to prevent infinite values for . Use BOUNDS x > 1E-8; instead.

If the CALIS procedure encounters negative diagonal elements in the central model matrices during the minimization process, serious convergence problems can occur. You can use the BOUNDS statement to constrain these parameters to nonnegative values. Using negative values in these locations can lead to a smaller value but uninterpretable estimates.

Previous Page | Next Page | Top of Page