FRONTIER 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 (asterisk), plus (plus), and minus (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 (asterisk) operator.

The following statements illustrate the use of the RESTRICT statement:

proc frontier data=mylib.dataset;
   model y = x1-x10 / production type=exponential;
   restrict x1*2 <= x2 + x3;
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 names "x1", "x2", and "x3" refer to the parameters that are associated with the variables x1, x2, and x3, respectively, not to the variables themselves.

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 to refer to that parameter in the RESTRICT statement. You can specify the PRINTINTERNALNAMES option in the PROC FRONTIER statement if you want to see the internal names of the parameters. When you specify the PRINTINTERNALNAMES option, an extra column that shows the internal name of each parameter is added to the "Parameter Estimates" table.

For more information about how parameters are named, see the section Parameter Naming Conventions for the RESTRICT, TEST, BOUNDS, and INIT Statements.

All restriction equations in all RESTRICT statements are applied jointly.

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 (asterisk) operator. The last example is invalid because grouping symbols are prohibited.

The set of restrictions should be consistent and not redundant. For example, you cannot specify the following statement 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 test statistics and p-values for these restrictions are computed using the Lagrange multiplier test that is described in the section Tests on Parameters. Nonactive (nonbinding) restrictions have no effect on the estimation results and are not noted in the output.

Last updated: July 09, 2026