Constrained Estimation Using Program Code
The CALIS procedure offers a very flexible way to constrain parameter
estimates. You can use your own programming statements to express
special properties of the parameter estimates. This tool is also present
in McDonald's COSAN
implementation but is considerably easier to use in the CALIS procedure.
PROC CALIS is able to compute analytic first and secondorder
derivatives that you would have to specify using the COSAN program.
There are also three PROC CALIS statements you can use:
 the BOUNDS statement, to specify simple bounds on
the parameters used in the optimization process
 the LINCON statement, to specify general linear equality
and inequality constraints on the parameters used in the
optimization process
 the NLINCON statement, to specify general nonlinear equality
and inequality constraints on the parameters used in the
optimization process. The variables listed in the NLINCON
statement must be specified in the program code.
There are some traditional ways to enforce parameter
constraints by using parameter transformations
(McDonald 1980).
 Onesided boundary constraints:
For example, the parameter q_{k} should be at least
as large (or at most as small) as a given constant
value a (or b),
This inequality constraint can be expressed as an
equality constraint

q_{k} = a + x^{2}_{j} or q_{k} = b  x^{2}_{j}
in which the fundamental parameter x_{j} is unconstrained.
 Twosided boundary constraints:
For example, the parameter q_{k} should be located
between two given constant values a and b, a < b,
This inequality constraint can be expressed as an
equality constraint
in which the fundamental parameter x_{j} is unconstrained.
 Onesided order constraints:
For example, the parameters q_{1} , ... , q_{k} should be
ordered in the form
These inequality constraints can be expressed as a set of
equality constraints

q_{1} = x_{1} , q_{2} = x_{1} + x^{2}_{2} , ... , q_{k} = x_{1} + x^{2}_{k}
in which the fundamental parameters x_{1} , ... , x_{k} are
unconstrained.
 Twosided order constraints:
For example, the parameters q_{1} , ... , q_{k} should be
ordered in the form
These inequality constraints can be expressed as a set of
equality constraints

q_{1} = x_{1} , q_{2} = q_{1} + x^{2}_{2} , ... , q_{k} = q_{k1} + x^{2}_{k}
in which the fundamental parameters x_{1} , ... , x_{k} are
unconstrained.
 Linear equation constraints:
For example, the parameters q_{1}, q_{2}, q_{3} should
be linearly constrained in the form

q_{1} + q_{2} + q_{3} = a
which can be expressed in the form of three explicit equations
in which the fundamental parameters x_{1} and x_{2} are unconstrained:

q_{1} = x_{1} , q_{2} = x_{2} , q_{3} = a  x_{1}  x_{2}
Refer to McDonald (1980) and Browne (1982)
for further notes on reparameterizing techniques. If the optimization
problem is not too large to apply the LevenbergMarquardt or NewtonRaphson
algorithm, boundary constraints should be requested by the BOUNDS
statement rather than by reparameterizing code.
If the problem is so large that you must use a quasiNewton
or conjugate gradient algorithm, reparameterizing techniques
may be more efficient than the BOUNDS statement.
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.