The CNTSELECT Procedure
RESTRICT Statement
RESTRICT restriction1 [, restriction2 …];
The RESTRICT statement imposes linear restrictions on the parameter estimates. You can specify any number of RESTRICT statements.
Each restriction is written either as a single linear equation or as a comma-separated list of two or more linear equations. A restriction equation consists of an expression, followed by an equality operator (=) or an inequality operator (<, >, <=, >=), followed by a second expression:
expression operator expression
The operator can be =, <, >, <=, or >=.
RESTRICT Statement Expressions
A restriction expression is composed of parameter names, constants, and the operators times (), plus (
), and minus (
). Each restriction expression must be a linear function of the parameters in the model. In addition, no grouping symbols (such as parentheses) are allowed, and the constant factor in any product can appear only on the left-hand side of the times (
) operator.
In the following example, the assumption is that you have a data table in which y is the count variable and x1–x3 are continuous variables. The PROC CNTSELECT program uses a RESTRICT statement to impose a restriction on the estimate for the parameter that is associated with the variable x2. Thus, in any solution that the optimizer finds, the solution must satisfy the condition that the parameter that is associated with the variable x2 is equal to 1.5:
proc cntselect data=mycas.exrestrict;
model y = x1-x3;
restrict x2=l.5;
run;
It is important to keep in mind that the parameters that are associated with the variables, not the variables themselves, are restricted. Thus, in the preceding RESTRICT statement, the variable name "x2" refers to the parameter that is associated with the variable x2, not to the variable itself.
Parameter names are shown in the Parameter column of the "Parameter Estimates" table. If a parameter name contains a blank or some other special character (such as "*", "-", "(", or ")"), then you must use the internal name of the parameter in order to refer to that parameter in the RESTRICT statement. You can specify the PRINTINTERNALNAMES option in the PROC CNTSELECT statement if you want to see the internal names of the parameters. When you specify the PRINTINTERNALNAMES option, an extra column is added to the "Parameter Estimates" table, which shows the internal name of each parameter.
For more information about how parameters are named, see the section Parameter Naming Conventions for the RESTRICT, TEST, BOUNDS, INIT, and PRIOR Statements.
Restrictions should be consistent and not redundant. All restriction equations in all RESTRICT statements are applied jointly.
The RESTRICT statement is not supported if a BAYES statement is also specified. In Bayesian analysis, the restrictions on parameters are usually introduced through the prior distribution.
RESTRICT Statement Examples
Examples of valid RESTRICT statements include the following:
restrict x1=0.1;
restrict a+b=l;
restrict a-b=0, b+c=1.5;
restrict 2*f=g+h, intercept+f=0;
Examples of invalid RESTRICT statements include the following:
restrict x1^2=4;
restrict x1*x3=4;
restrict x1/x3=2;
restrict sin(a)=0;
restrict a*0.5=l;
restrict 2*(f+h)=1;
In the first four examples of invalid RESTRICT statements, the equation is nonlinear. The fifth example is invalid because the constant factor (0.5) cannot appear on the right-hand side of the times () operator. The last example is invalid because grouping symbols are not allowed.
The set of restrictions must be consistent. For example, you cannot specify the following because the three restrictions are not consistent:
restrict f-g=0,
f-intercept=0,
g-intercept=1;
Lagrange multipliers are reported in the "Parameter Estimates" table for all the active linear constraints. They are identified by the names Restrict1, Restrict2, and so on. The probabilities of these Lagrange multipliers are computed using a beta distribution (LaMotte 1994). Nonactive (nonbinding) restrictions have no effect on the estimation results and are not noted in the output.
The following RESTRICT statement constrains the negative binomial dispersion parameter to 1, which restricts the conditional variance to be
:
restrict _Alpha = 1;