| /*房屋按揭*/ |
| /*生成滞后i期的数据*/ |
| %macro lagvars; |
| data B; |
| set STRESS.A; |
| x1_0=x1;x2_0=x2;x3_0=x3; |
| %do i=1 %to 10; |
| x1_&i.=lag(x1_%eval(&i.-1)); |
| x2_&i.=lag(x2_%eval(&i.-1)); |
| x3_&i.=lag(x3_%eval(&i.-1)); |
| %end; |
| y_1=lag(y); |
| run; |
| %mend; |
| %lagvars; |
|
|
| /*不同滞后期组合回归*/ |
| %macro mdlsel; |
| data param; |
| run; |
| %do i=0 %to 10;%do j=0 %to 10;%do k=0 %to 10; |
| proc reg data=B(where=("200607"<=OBS_YM<="201506")) outest=et noprint; |
| model y=x1_&i. x2_&j. x3_&k. y_1/selection=stepwise sls=0.05 sle=0.05; |
| quit; |
| data est; |
| set et(keep=x1_&i. x2_&j. x3_&k. y_1 rename=(x1_&i.=x1 x2_&j.=x2 x3_&k.=x3)); |
| i=&i.;j=&j.;k=&k.; |
| run; |
| data param; |
| set param est; |
| run; |
| %end;%end;%end; |
| data param; |
| set param; |
| sel=(x1<0)*(x2<0)*(x3>0); |
| run; |
| data paramspd; |
| set param(where=(sel=1)); |
| ord=sum(i,j,k); |
| mx=max(i,j,k); |
| run; |
| proc sort data=paramspd; |
| by mx; |
| run; |
| %mend; |
| %mdlsel; |
| /*最终回归模型*/ |
| proc reg data=B(where=("200607"<=OBS_YM<="201506")) outest=et; |
| model y=y_1 |
| X1_0 X2_0 X3_6 /; |
| quit; |