全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10331 15
2011-12-15
现有一个一元回归模型,有很多数据,但是不想按往常的用所有数据计算,每次回归用12个数据,每次向前移一个数据,数据是月数据,即每次向前移一个月,准备算出很多个回归系数?在sas中编这样的程序怎么使用循环?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-12-15 21:15:17
proc expand??
二维码

扫码加我 拉你入群

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

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

2011-12-15 21:28:09
%macro rollreg(datain=);

  %do firstmonth = 200101 %to 2004012;
    %let lastmonth = %eval( &firstmonth + 12);
    data temp; set &datain;
      where &firstmonth<= month <= &lastmonth;
    proc reg data=temp;
       * add your model statement here;
    run;
  %end;

%mend rollreg(datain=);

%rollreg(data=YOURDATANAME); 参考人大经济论坛~
二维码

扫码加我 拉你入群

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

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

2011-12-16 07:41:59
这就是传说中的rolling regress吗?
二维码

扫码加我 拉你入群

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

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

2011-12-18 02:24:57
Reshape your data then use reg to estimate all of them. It is faster, simpler in logic. Here is an example.

data testdata;
   do date=today()-29 to today();
      x1=rannor(123);x2=rannor(123);err=rannor(123);
          y=1+2*x1+0.5*x2+err;
          output;
        end;
format date yymmdd10.;
run;

data rollddata;
   do p1=1 to n-11;
      do p2=p1 to p1+11;
             set testdata point=p2 nobs=n;
                 output;
          end;
        end;
        stop;
run;

proc reg data=rollddata outest=parm noprint;
by p1;
model y=x1 x2;
run;
quit;

proc print data=parm;
run;

proc means data=parm n mean std;
var Intercept       x1         x2
;
run;
二维码

扫码加我 拉你入群

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

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

2012-2-16 00:21:43
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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