楼主: sxhawk
16645 8

[程序分享] 滚动回归的程序(rolling regression) [推广有奖]

  • 4关注
  • 1粉丝

博士生

2%

还不是VIP/贵宾

-

威望
0
论坛币
2451 个
通用积分
318.7362
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2047 点
帖子
129
精华
0
在线时间
326 小时
注册时间
2011-3-1
最后登录
2024-4-23

楼主
sxhawk 在职认证  发表于 2016-3-30 00:24:35 |只看作者 |坛友微信交流群|倒序 |AI写论文
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
看到有不少朋友寻求滚动回归的程序,对国外的讲解又没看懂,因此分享一个现成的程序,以及程序的英文原版来源。
首先滚动回归是指在回归的时候,对固定长度的时间窗口进行回归,并一直在时间序列上滚动。典型的应用是股票收益率CAPM模型回归,一般都采用36个月固定长度的数据来回归。下面的程序以此为例,样本包含所有股票的月度股票收益率,因此有股票和时间两个维度:

  1. proc sort data=stock;  /*** 一定要把数据先排序好 ***/
  2. by stkcd date;
  3. run;

  4. DATA rwin / view=rwin;
  5. array _X {36} _temporary_ ;  /*** 创建长度为36的数组,到时候把需要回归的数据放进去  ***/
  6. array _Y {36} _temporary_ ;
  7. set stock;
  8. by stkcd;
  9. retain N 0; /*** 利用N来识别不同股票,否则不同股票的数据会进入同一个数组,造成混乱 ***/
  10. N = ifn(first.stkcd,1,N+1); /*** 对于同一只股票,N按照时间顺序逐步+1,到下一只股票时,N重设为1 ***/
  11. I=mod(N-1,36)+1; /*** I用来获取数组中的位置;这三行的意思是,将头36个数据放入数组 ***/
  12. _X{I}=ret;
  13. _Y{I}=rm;
  14. if N>=36 then do I= 1 to 36; /*** 从第37个观测开始,数组自动往下移一位,将最早的观测剔除,加入最新的观测 ***/
  15. ret=_X{I};
  16. rm=_Y{I};
  17. output;
  18. end;
  19. run;
  20. proc reg data=rwin noprint outest=outvar; /*** 最后回归,获取回归结果 ***/
  21. by stkcd date;
  22. model ret=rm;
  23. quit;
复制代码
这个方法不需要用到宏,比较好理解。但是对于数据量非常大的,几百万行观测的,可能运行比较慢。
英文原文中还有其他方法,感兴趣可看原文 :
rolling regressions with SAS.pdf (181.46 KB)

二维码

扫码加我 拉你入群

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

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

关键词:regression regressio rolling regress 滚动回归 程序

已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
nkunku 发表于 2016-3-31 06:06:18 |只看作者 |坛友微信交流群
不错 谢谢楼主

使用道具

藤椅
quantlei 学生认证  发表于 2017-12-2 21:04:41 |只看作者 |坛友微信交流群
学习了谢谢

使用道具

板凳
menghanzhang 发表于 2018-10-14 22:28:47 |只看作者 |坛友微信交流群
谢谢!

使用道具

报纸
湘江7 发表于 2018-11-2 18:03:43 来自手机 |只看作者 |坛友微信交流群
谢谢,不过看不太懂(><)

使用道具

地板
水木心毅yu 发表于 2019-7-28 16:40:39 |只看作者 |坛友微信交流群
谢谢!!!

使用道具

7
delt 发表于 2019-10-2 21:41:19 来自手机 |只看作者 |坛友微信交流群
想问楼主个问题,做完了VEC模型和检验之后,想做个rolling回归,但是提示data in memory would be lost,要怎么解决呀

使用道具

8
liuxwyt 发表于 2019-10-15 14:16:25 |只看作者 |坛友微信交流群
在滚动回归中怎么保存残差项??

使用道具

9
mbibu 学生认证  发表于 2019-12-15 16:09:33 |只看作者 |坛友微信交流群
楼主您好,您写的滚动回归的代码给了我很大帮助,很谢谢。
我有一个问题,就是我回归之后,我的因变量在最后一列都为-1,想知道这样是正常的,还是有错

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 08:24