编程的目的是:将每个股票(300多个)从第1个交易日(不同股票不一样)到第n个交易日(n=10~1200)的股票价格看做y变量,将大盘指数看做x变量,做回归,得出自变量的系数,系数的p值,回归的拟合优度。并将这些结果以及每次计算的时间、股票代码做成表格的形式呈现出来。
我已经编好了,但速度比较慢,而且越运行到后面就越慢,但是关闭SAS重新开始,就快些了。
一共要做240000多次回归,如果按照这速度。。。1年才能做完啊。。。希望高手帮忙优化!争取答辩之前做出来呀!
%macro yy(code,date);
/*创建一个新数据集,用于存放从原始数据beta中提取的需要回归的数据*/
data data&code&date;
set beta;
where code=&code and date<=&date;
/*将回归结果显示到数据集中*/
ods listing close;
ods output parameterestimates(match_all persist=proc)=Estimates&code&date;
ods output fitstatistics(match_all persist=proc)=fitstatistics&code&date;
/*做回归*/
proc reg data=data&code&date;
model prc=idx ;
run;
/*对目标数据集中加入两个变量:时间和股票代码*/
data Estimates&code&date;
set Estimates&code&date;
code=&code;
date=&date;
run;
data fitstatistics&code&date;
set fitstatistics&code&date;
code=&code;
date=&date;
run;
/*删除数据集中多余的变量,并保存到optimize文件夹中*/
data optimize.Est;
set Estimates&code&date optimize.Est;
drop _Run_ Model DF _proc_ dependent;
run;
data optimize.fits;
set fitstatistics&code&date optimize.fits;
drop _Proc_ _Run_ Model Label1 cValue1 nValue1 dependent;
run;
ods listing;
/*删除所有的临时数据集*/
proc datasets library=work kill nolist; quit;
%mend yy;
%include "E:\optimize\yy2.txt";
run;
quit;
yy2.txt:(大概内容如下)
%yy( 600603 , 19971201 );%yy( 600603 , 19971202 );%yy( 600603 , 19971203 );%yy( 600603 , 19971204 );%yy( 600603 , 19971205 );%yy( 600603 , 19971208 );%yy( 600603 , 19971209 );%yy( 600603 , 19971210 );%yy( 600603 , 19971211 );%yy( 600603 , 19971212 );%yy( 600603 , 19971215 );