The QLIM Procedure
Example 27.6 Types of Tobit Models
(View the complete code for this example.)
The following five examples show how to estimate different types of Tobit models (see the section Types of Tobit Models). Output 27.6.1 through Output 27.6.5 show the results of the corresponding programs.
Type 1 Tobit
title1 'Estimating a Type 1 Tobit Model';
data a1;
keep y x;
do i = 1 to 500;
x = rannor( 19283 );
u = rannor( 19283 );
yl = 1 + 2 * x + u;
if ( yl > 0 ) then y = yl;
else y = 0;
output;
end;
run;
/*-- Type 1 Tobit --*/ proc qlim data=a1 method=qn; model y = x; endogenous y ~ censored(lb=0); run;
Output 27.6.1: Type 1 Tobit
Type 2 Tobit
title1 'Estimating a Type 2 Tobit Model';
data a2;
keep y1 y2 x1 x2;
do i = 1 to 500;
x1 = rannor( 19283 );
x2 = rannor( 19283 );
u1 = rannor( 19283 );
u2 = rannor( 19283 );
y1l = 1 + 2 * x1 + 3 * x2 + u1;
y2l = 3 + 4 * x1 - 2 * x2 + u1*.2 + u2;
if ( y1l > 0 ) then y1 = 1;
else y1 = 0;
if ( y1l > 0 ) then y2 = y2l;
else y2 = 0;
output;
end;
run;
/*-- Type 2 Tobit --*/ proc qlim data=a2 method=qn; model y1 = x1 x2 / discrete; model y2 = x1 x2 / select(y1=1); run;
Output 27.6.2: Type 2 Tobit
| Parameter Estimates | |||||
|---|---|---|---|---|---|
| Parameter | DF | Estimate | Standard Error | t Value | Approx Pr > |t| |
| y2.Intercept | 1 | 3.066992 | 0.106903 | 28.69 | <.0001 |
| y2.x1 | 1 | 4.004874 | 0.072043 | 55.59 | <.0001 |
| y2.x2 | 1 | -2.079352 | 0.087544 | -23.75 | <.0001 |
| _Sigma.y2 | 1 | 0.940559 | 0.039321 | 23.92 | <.0001 |
| y1.Intercept | 1 | 1.017140 | 0.154975 | 6.56 | <.0001 |
| y1.x1 | 1 | 2.253080 | 0.256097 | 8.80 | <.0001 |
| y1.x2 | 1 | 3.305140 | 0.343695 | 9.62 | <.0001 |
| _Rho | 1 | 0.292992 | 0.210073 | 1.39 | 0.1631 |
Type 3 Tobit
title1 'Estimating a Type 3 Tobit Model';
data a3;
keep y1 y2 x1 x2;
do i = 1 to 500;
x1 = rannor( 19283 );
x2 = rannor( 19283 );
u1 = rannor( 19283 );
u2 = rannor( 19283 );
y1l = 1 + 2 * x1 + 3 * x2 + u1;
y2l = 3 + 4 * x1 - 2 * x2 + u1*.2 + u2;
if ( y1l > 0 ) then y1 = y1l;
else y1 = 0;
if ( y1l > 0 ) then y2 = y2l;
else y2 = 0;
output;
end;
run;
/*-- Type 3 Tobit --*/ proc qlim data=a3 method=qn; model y1 = x1 x2 / censored(lb=0); model y2 = x1 x2 / select(y1>0); run;
Output 27.6.3: Type 3 Tobit
| Parameter Estimates | |||||
|---|---|---|---|---|---|
| Parameter | DF | Estimate | Standard Error | t Value | Approx Pr > |t| |
| y2.Intercept | 1 | 3.081206 | 0.080121 | 38.46 | <.0001 |
| y2.x1 | 1 | 3.998361 | 0.063734 | 62.73 | <.0001 |
| y2.x2 | 1 | -2.088280 | 0.072876 | -28.66 | <.0001 |
| _Sigma.y2 | 1 | 0.939799 | 0.039047 | 24.07 | <.0001 |
| y1.Intercept | 1 | 0.981975 | 0.067351 | 14.58 | <.0001 |
| y1.x1 | 1 | 2.032675 | 0.059363 | 34.24 | <.0001 |
| y1.x2 | 1 | 2.976609 | 0.065584 | 45.39 | <.0001 |
| _Sigma.y1 | 1 | 0.969968 | 0.039795 | 24.37 | <.0001 |
| _Rho | 1 | 0.226281 | 0.057672 | 3.92 | <.0001 |
Type 4 Tobit
title1 'Estimating a Type 4 Tobit Model';
data a4;
keep y1 y2 y3 x1 x2;
do i = 1 to 500;
x1 = rannor( 19283 );
x2 = rannor( 19283 );
u1 = rannor( 19283 );
u2 = rannor( 19283 );
u3 = rannor( 19283 );
y1l = 1 + 2 * x1 + 3 * x2 + u1;
y2l = 3 + 4 * x1 - 2 * x2 + u1*.2 + u2;
y3l = 0 - 1 * x1 + 1 * x2 + u1*.1 - u2*.5 + u3*.5;
if ( y1l > 0 ) then y1 = y1l;
else y1 = 0;
if ( y1l > 0 ) then y2 = y2l;
else y2 = 0;
if ( y1l <= 0 ) then y3 = y3l;
else y3 = 0;
output;
end;
run;
/*-- Type 4 Tobit --*/ proc qlim data=a4 method=qn; model y1 = x1 x2 / censored(lb=0); model y2 = x1 x2 / select(y1>0); model y3 = x1 x2 / select(y1<=0); run;
Output 27.6.4: Type 4 Tobit
| Parameter Estimates | |||||
|---|---|---|---|---|---|
| Parameter | DF | Estimate | Standard Error | t Value | Approx Pr > |t| |
| y2.Intercept | 1 | 2.894656 | 0.076079 | 38.05 | <.0001 |
| y2.x1 | 1 | 4.072704 | 0.062675 | 64.98 | <.0001 |
| y2.x2 | 1 | -1.901163 | 0.076874 | -24.73 | <.0001 |
| _Sigma.y2 | 1 | 0.981655 | 0.039564 | 24.81 | <.0001 |
| y3.Intercept | 1 | 0.064594 | 0.179441 | 0.36 | 0.7189 |
| y3.x1 | 1 | -0.938384 | 0.096570 | -9.72 | <.0001 |
| y3.x2 | 1 | 1.035798 | 0.123104 | 8.41 | <.0001 |
| _Sigma.y3 | 1 | 0.743124 | 0.038240 | 19.43 | <.0001 |
| y1.Intercept | 1 | 0.987370 | 0.067861 | 14.55 | <.0001 |
| y1.x1 | 1 | 2.050408 | 0.060819 | 33.71 | <.0001 |
| y1.x2 | 1 | 2.982190 | 0.072552 | 41.10 | <.0001 |
| _Sigma.y1 | 1 | 1.032473 | 0.040971 | 25.20 | <.0001 |
| _Rho.y1.y2 | 1 | 0.291587 | 0.053436 | 5.46 | <.0001 |
| _Rho.y1.y3 | 1 | -0.031665 | 0.260057 | -0.12 | 0.9031 |
Type 5 Tobit
title1 'Estimating a Type 5 Tobit Model';
data a5;
keep y1 y2 y3 x1 x2;
do i = 1 to 500;
x1 = rannor( 19283 );
x2 = rannor( 19283 );
u1 = rannor( 19283 );
u2 = rannor( 19283 );
u3 = rannor( 19283 );
y1l = 1 + 2 * x1 + 3 * x2 + u1;
y2l = 3 + 4 * x1 - 2 * x2 + u1*.2 + u2;
y3l = 0 - 1 * x1 + 1 * x2 + u1*.1 - u2*.5 + u3*.5;
if ( y1l > 0 ) then y1 = 1;
else y1 = 0;
if ( y1l > 0 ) then y2 = y2l;
else y2 = 0;
if ( y1l <= 0 ) then y3 = y3l;
else y3 = 0;
output;
end;
run;
/*-- Type 5 Tobit --*/ proc qlim data=a5 method=qn; model y1 = x1 x2 / discrete; model y2 = x1 x2 / select(y1>0); model y3 = x1 x2 / select(y1<=0); run;
Output 27.6.5: Type 5 Tobit
| Parameter Estimates | |||||
|---|---|---|---|---|---|
| Parameter | DF | Estimate | Standard Error | t Value | Approx Pr > |t| |
| y2.Intercept | 1 | 2.887523 | 0.095193 | 30.33 | <.0001 |
| y2.x1 | 1 | 4.078926 | 0.069623 | 58.59 | <.0001 |
| y2.x2 | 1 | -1.898898 | 0.086578 | -21.93 | <.0001 |
| _Sigma.y2 | 1 | 0.983059 | 0.039987 | 24.58 | <.0001 |
| y3.Intercept | 1 | 0.071764 | 0.171522 | 0.42 | 0.6757 |
| y3.x1 | 1 | -0.935299 | 0.092843 | -10.07 | <.0001 |
| y3.x2 | 1 | 1.039954 | 0.120697 | 8.62 | <.0001 |
| _Sigma.y3 | 1 | 0.743083 | 0.038225 | 19.44 | <.0001 |
| y1.Intercept | 1 | 1.067578 | 0.142789 | 7.48 | <.0001 |
| y1.x1 | 1 | 2.068376 | 0.226020 | 9.15 | <.0001 |
| y1.x2 | 1 | 3.157385 | 0.314743 | 10.03 | <.0001 |
| _Rho.y1.y2 | 1 | 0.312369 | 0.177010 | 1.76 | 0.0776 |
| _Rho.y1.y3 | 1 | -0.018225 | 0.234886 | -0.08 | 0.9382 |
Copyright © SAS Institute Inc. All rights reserved.
Last updated: November 05, 2018