The HPNLMOD Procedure

RESTRICT Statement

  • RESTRICT restriction1 <, restriction2 …>;

The RESTRICT statement imposes linear restrictions on the model’s parameters estimates. You can specify any number of RESTRICT statements.

Each restriction is written as an expression, optionally followed by an equality operator (=) or an inequality operator (<, >, <=, >=), followed by a second expression as follows:

  • expression <operator expression>

The operator can be =, <, >, <= , or >=. The operator and second expression are optional. When they are omitted, the operator defaults to = and the second expression defaults to the value 0.

Restriction expressions can be composed of parameter names, arithmetic operators, functions, and constants. Comparison operators (such as = or <) and logical operators (such as &) cannot be used in RESTRICT statement expressions. Parameters that are named in restriction expressions must be among the parameters that are estimated by the model. Restriction expressions cannot refer to other variables that are defined in the program or the DATA= data set. The restriction expressions must be linear functions of the parameters.

The following example illustrates how to use the RESTRICT statement to impose a linear constraint on parameters:

 proc hpnlmod;
    parms alpha beta;
    f = (x/alpha + beta)**2
    model y ~ residual(f);
    restrict beta < 2*(alpha + constant('pi'));
run;

The preceding RESTRICT statement represents the following model constraint:

\[  \beta < 2(\alpha +\pi )  \]