Getting Started Example for PROC SYSLIN
/*--------------------------------------------------------------
SAS Sample Library
Name: sysgs.sas
Description: Example program from SAS/ETS User's Guide,
The SYSLIN Procedure
Title: Getting Started Example for PROC SYSLIN
Product: SAS/ETS Software
Keys: interdependent system
of linear regression equations
PROC: SYSLIN
Notes:
--------------------------------------------------------------*/
data in;
label q = "Quantity"
p = "Price"
s = "Price of Substitutes"
y = "Income"
u = "Unit Cost";
drop i e1 e2;
p = 0; q = 0;
do i = 1 to 60;
y = 1 + .05*i + .15*rannor(123);
u = 2 + .05*rannor(123) + .05*rannor(123);
s = 4 - .001*(i-10)*(i-110) + .5*rannor(123);
e1 = .15 * rannor(123);
e2 = .15 * rannor(123);
demandx = 1 + .3 * y + .35 * s + e1;
supplyx = -1 - 1 * u + e2 - .4*e1;
q = 1.4/2.15 * demandx + .75/2.15 * supplyx;
p = ( - q + supplyx ) / -1.4;
output;
end;
run;
/*-- OLS Estimation --*/
proc syslin data=in;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- Two-Stage Least Squares Estimation --*/
proc syslin data=in 2sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- K-Class Estimation --*/
proc syslin data=in k=.5;
endogenous p;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- Seemingly Unrelated Regression --*/
proc syslin data=in sur;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- Three-Stage Least Squares Estimation --*/
proc syslin data=in 3sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- Full-Information Maximum Likelihood Estimation --*/
proc syslin data=in fiml;
endogenous p q;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- Reduced-Form 3SLS Estimation --*/
proc syslin data=in 3sls reduced;
endogenous p;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
run;
/*-- 3SLS Estimation with Restrictions --*/
proc syslin data=in 3sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
peq015: restrict p = .015;
supply: model q = p u;
yeq01u: srestrict demand.y = .01 * supply.u;
run;
/*-- 3SLS Estimation with Tests --*/
proc syslin data=in 3sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
test_1: test p = .015;
supply: model q = p u;
run;
proc syslin data=in 3sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
supply: model q = p u;
stest1: stest demand.y = .01 * supply.u;
run;
/*--- Saving Output Data from 3SLS Estimation ---*/
proc syslin data=in out=pred 3sls;
endogenous p;
instruments y u s;
demand: model q = p y s;
output predicted=q_demand;
supply: model q = p u;
output predicted=q_supply;
run;
/*-- Producing Plots --*/
proc syslin data=in 2sls out=out;
endogenous p;
instruments y u s;
demand: model q = p y s;
output residual=residual_q;
run;
proc sgplot data=out;
scatter x=p y=residual_q;
refline 0 / axis=y;
run;
proc sgplot data=out;
scatter x=y y=residual_q;
refline 0 / axis=y;
run;
proc sgplot data=out;
scatter x=s y=residual_q;
refline 0 / axis=y;
run;