全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
906 0
2021-12-05
用sas做BSADF,这是我的编程,但是这只是跑一次,我就需要跑好几个小时,我还需要生成数据找临界值,需要跑两千次重复的实验,应该怎么做呀,直接跑感觉电脑都要整坏,有没有大佬提供下思路或者经验!!!可以有偿!/* options nonotes nosource error=1; */
Data a1(label="指数月收益");
Infile 'D:\网站下载\上证月收益.txt' delimiter = '09'x Missover Dsd lrecl=32767 firstobs=2 ;
Format IdxCd $12.;
Format TrdDt YYMMDD10.;
Format ClPr 19.2;
Format IdxMonRet 10.4;
Informat IdxCd $12.;
Informat TrdDt YYMMDD10.;
Informat ClPr 19.2;
Informat IdxMonRet 10.4;
Label IdxCd="指数代码";
Label TrdDt="交易日期";
Label ClPr="收盘价";
Label IdxMonRet="指数月收益率";
Input  IdxCd $  TrdDt  ClPr  IdxMonRet ;
Run;
data a2;
set a1;
format date yymon7.;
num=_n_;/*加一个列数*/
run;
%macro gundong;
%do i=0 %to 229;
%do j=0 %to 229-&i.;
data b1;set a2;if 0+&j.<num<=254-&i.;
keep TrdDt ClPr num;
run;
proc arima data=b1;
identify var=ClPr stationarity=(adf=0);
ods output StationarityTests=s1;
run;quit;
data s2;
set s1;keep Tau ;if _n_ =3;
run;/*提取tau值,第三排*/
proc datasets library=work nolist;
                append base=s3 data=s2;
           quit;/*合并tau值*/
%end;
proc means data=s3  Max;
var tau;
output out=s4 max=max1;
quit;/*求最大值,提取最大值*/
data _null_;set b1 end=last; if last then do;call symputx("TrdDt1",TrdDt);end;run;
data s5;
set s4;
y=&TrdDt1 ;format y yymmdd10.;keep max1 y;
run;/*data _null_;set b1 end=last; if last then do;call symputx("tau1",tau);end;run;/*把tau变量最后一行的值赋值给tau1宏变量*//*加日期*/
proc datasets library=work nolist;
                append base=s6 data=s5;
           quit;/*合并tau值*/
proc datasets library=work nolist;
         delete s3;
     quit;
%end;
%mend gundong;
%gundong;



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群