楼主: 流氓兔贝贝
10428 15

[原创博文] 用sas怎么做滚动回归? [推广有奖]

  • 3关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
75 点
帖子
9
精华
0
在线时间
8 小时
注册时间
2011-10-20
最后登录
2013-3-11

楼主
流氓兔贝贝 发表于 2011-12-15 18:46:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
现有一个一元回归模型,有很多数据,但是不想按往常的用所有数据计算,每次回归用12个数据,每次向前移一个数据,数据是月数据,即每次向前移一个月,准备算出很多个回归系数?在sas中编这样的程序怎么使用循环?
二维码

扫码加我 拉你入群

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

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

关键词:滚动回归 怎么做 一元回归模型 回归模型 回归系数 程序 模型

回帖推荐

bobguy 发表于5楼  查看完整内容

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; outp ...

本帖被以下文库推荐

沙发
yugao1986 发表于 2011-12-15 21:15:17
proc expand??
三人行必有我师

藤椅
jintianxiu 发表于 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); 参考人大经济论坛~

板凳
tmdxyz 发表于 2011-12-16 07:41:59
这就是传说中的rolling regress吗?

报纸
bobguy 发表于 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;
已有 2 人评分经验 论坛币 收起 理由
yxp9156351 + 5 精彩帖子
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 8   查看全部评分

地板
solskja 发表于 2012-2-16 00:21:43
10年一梦,该醒了

7
流氓兔贝贝 发表于 2012-2-27 16:45:34
bobguy 发表于 2011-12-18 02:24
Reshape your data then use reg to estimate all of them. It is faster, simpler in logic. Here is an e ...
嗯,是这样,谢谢

8
liwenyanglipei 发表于 2012-2-28 02:51:39
谢谢热心的老师们 SAS菜鸟来学习了
yesterday is history.tomorrow is mystery,but today is a gift.

9
sunset1986 发表于 2012-3-1 11:06:53
data c (drop=i b1-b&p.);
set a;
if balance ne '.';
n+1;
array a[&p.] b1-b&p.;
a[1]=lag(balance);
do i=2 to &p.;
  a[i]=lag(a[i-1]);
end;
mean6=mean(of b1-b6);
mean12=mean(of b1-b12);
run;

以前写的一个程序,可以尝试一下
An honest tale speeds best being plainly told.
Cheers!

10
serenaakh 发表于 2012-4-6 21:55:21
bobguy 发表于 2011-12-18 02:24
Reshape your data then use reg to estimate all of them. It is faster, simpler in logic. Here is an e ...
我可以问一下 每次回归用5个数据,每次向后移一个数据~
数据是年数据,即每次向后移一年~
一直循环 的程序怎么写吗?
您方便就 麻烦帮帮忙~
https://bbs.pinggu.org/thread-1409889-1-1.html
这是我发的帖子~
么有人帮我~
你生活在一个可以没有我的世界,我居住在一个只有你的天空...

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 14:41