全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4304 10
2011-04-20
各位SAS大侠,我正在做一个关于基金业绩方面的研究,需要对数据进行移动分组回归。数据简化的例子如下:

fundcode     date                       rif             rmf
1                  2004-01-01           0.5          0.4
1                  2004-01-02           0.7          0.8
1                  2004-01-03           0.5          0.8
1                  2004-01-04           0.4          0.9
...                 ...                           ...            ....
2                  2004-01-01           0.7          0.4
2                  2004-01-02           0.6           0.8
2                 2004-01-03            0.4          0.8
2                  2004-01-04           0.3          0.9

...                 ...                           ...            ....

数据就一直这样下去,大约有200多个基金,每个基金的日期数目不等(因为有的上市早有的上市晚,不都是从2004.1.1开始的),现在我想对每只基金移动的30天分组回归,即对1号基金分别做从2004.1.1 开始30天一个回归,然后1号基金从2004.1.2开始30天的回归。。。一直到1号基金移动30天回归完毕之后,做2号基金的。

这个应该是需要分组吧,但是不知道该怎么分啊。。。想了N久也米有解决的办法,特向各位大侠请教。希望得到各位赐教,小妹感激不尽!!!!   
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-20 22:52:08
一个想法(处理的有点复杂),不确定是否一定能用,供参考:
%macro x;
        %let n=0;
        %do i=1 %to 30;
                %let n=%eval(&n+1);
                data dsn&n;
                        set your_org_dsn;
                        * stkcd=你的股票/基金代码变量;
                        * date=你的时间变量;
                        * Al_B;
                        by stkcd;
                                if first.stkcd date2=date else date2=lag(date2);
                                if date>date2+&n and date<date2+29+&n;
                        *        Al_E;
                        *        不是很确定你的意思,所以上面这部分(Al_B to Al_E)也可能是下面一段;
                        *        if date>'01jan2004'd+&n and date<'30jan2004'd+&n;
                run;
                ods listing close;
                *        ParameterEstimates是系统的表名不能改;
                *        也可使用outest进行输出,看你想要什么样的结果;
                ods output ParameterEstimates=dsn_out&n;
                *        其他一些输出选项,取决于个人;
                *        ods output RSquare=dsnrsq&n;
                *        ods output NObs=NObs&n;
                proc reg data=dsn&n;
                        model DV=IV;
                        by stkcd;
                run;
                ods listing;
        %end;
        proc sql;
                create table _null_ like dsn_out&n;
        quit;
        data dsn_out_full;
                set _null_;
        run;
        *        合并输出结果;
        %do i=1 %to 30;
                        data dsn_out_full;
                        set dsn_out_full dsn_out&n;
                run;
        %end;
%mend x;
%x;
二维码

扫码加我 拉你入群

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

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

2011-4-21 00:56:31
1# mandyshi
请各位老师前辈们多多指导。谢谢。
data funds;
input code date : anydtdte10. rif rmf;
format date date9.;
datalines;
1 2004-01-01 0.5 0.4
1 2004-01-02 0.7 0.8
1 2004-01-03 0.5 0.8
1 2004-01-04 0.4 0.9
2 2004-01-01 0.7 0.4
2 2004-01-02 0.6 0.8
2 2004-01-03 0.4 0.8
2 2004-01-04 0.3 0.9
;
run;
%macro funds ;
%let start= %sysfunc(mdy(01,01,2004));
%let end=%eval((%eval(&start)+4));
%do date=&start %to &end;
%put _user_;
%do code=1 %to 2;
proc reg data=funds (where=(code=&code and date=&date));
model code=rif;
model code=rmf;
run;
%end;
%end;
%mend;
%funds;

二维码

扫码加我 拉你入群

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

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

2011-4-21 00:58:33
2# rpg163
学习了。谢谢
二维码

扫码加我 拉你入群

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

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

2011-4-21 09:47:46
谢谢2楼3楼,我先尝试下,看看行不。
二维码

扫码加我 拉你入群

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

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

2011-4-21 12:31:25
2# rpg163 我补充一下问题哈,因为基金在周六日不交易,没有数据,还有神马五一十一春节之类的都不交易。。。我想用30个交易日的数据,应该怎么办呢?
数据如下:

Fundcd     Clsdt        Naps
000001  2004-01-02  1.046
000001  2004-01-05  1.091
000001  2004-01-06  1.109
000001  2004-01-07  1.113
000001  2004-01-08  1.125
000001  2004-01-09  1.115
000001  2004-01-12  1.138
000001  2004-01-13  1.132
000001  2004-01-14  1.116
000001  2004-01-15  1.119
。。。。
表里一共有200多个基金,都是这样的数据,但是可能每个基金的最初clsdt不是2004-01-02.
可不可以每个基金分组分成下面这样的:

000001  2004.1.2-2004.2.24(第一个30个交易日);
000001  2004.1.5-2004.2.25(第二个30个交易日);



每个基金都像这样分组。是不是很复杂啊?弄了好久还是没弄出来,我有点抑郁了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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