楼主: 按时地方
3753 9

[原创博文] SAS中rolling怎么做? [推广有奖]

  • 0关注
  • 1粉丝

博士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
352 个
通用积分
0
学术水平
11 点
热心指数
9 点
信用等级
6 点
经验
4299 点
帖子
190
精华
0
在线时间
270 小时
注册时间
2005-7-28
最后登录
2022-8-11

100论坛币
RT,具体问题如下,现在样本期为1年,每月进行rolling,要算当前日期的前一年某个事件发生时(示性函数=1)股票收益率的方差,这个要怎么编呢?

关键词:rolling roll ING Lin ROL 收益率 样本

回帖推荐

jintianxiu 发表于8楼  查看完整内容

data a; input n r sic value date ddmmyy8.; format date ddmmyy10.; cards; 1 0.1 1 109 01-01-10 2 0.2 1 209 01-02-10 3 0.3 1 167 01-03-10 4 0.1 2 123 01-04-10 5 0.2 2 200 01-05-10 6 0.3 2 210 01-06-10 7 0.4 2 342 02-07-10 8 0.12 1 223 02-08-10 1 0.29 1 560 02-09-10 ; run; data a; set a; month= month (date); run; %macro rollreg(datain=); % ...

本帖被以下文库推荐

沙发
denver 发表于 2011-12-17 12:01:07 |只看作者 |坛友微信交流群
Denver大家一起读Paper系列索引贴:
https://bbs.pinggu.org/thread-1430892-1-1.html

使用道具

藤椅
按时地方 发表于 2011-12-18 09:31:22 |只看作者 |坛友微信交流群
denver 发表于 2011-12-17 12:01
http://www.ats.ucla.edu/stat/sas/code/rollsd.htm

可以参照这个程序
虽然,已于9月份自己编出来,还是非常感谢版主的链接,以后可以直接问你哈

使用道具

板凳
jintianxiu 发表于 2011-12-19 20:21:38 |只看作者 |坛友微信交流群
按时地方 发表于 2011-12-18 09:31
虽然,已于9月份自己编出来,还是非常感谢版主的链接,以后可以直接问你哈
楼主 你好,能不能share一下你的程序呢,小弟也有类似的困扰。不胜感激!!

使用道具

报纸
按时地方 发表于 2011-12-20 00:54:14 |只看作者 |坛友微信交流群
jintianxiu 发表于 2011-12-19 20:21
楼主 你好,能不能share一下你的程序呢,小弟也有类似的困扰。不胜感激!!
你可以看看denver版主帖的链接,我当时也是用宏来做的,思想差不多

使用道具

地板
jintianxiu 发表于 2011-12-20 19:29:23 |只看作者 |坛友微信交流群
按时地方 发表于 2011-12-20 00:54
你可以看看denver版主帖的链接,我当时也是用宏来做的,思想差不多
嗯,是这样的,我参考过denver的程序了,result 和 log显示是对的。但是一直苦于table中只有最后一次回归的结果,总是有问题。没有办法继续使用这个roll回归的结果,做进一步分析。所以希望看看您当时的具体事例,是怎么样导出结果到data table中的。如帮助,不胜感激!!

使用道具

7
按时地方 发表于 2011-12-20 20:48:29 |只看作者 |坛友微信交流群
jintianxiu 发表于 2011-12-20 19:29
嗯,是这样的,我参考过denver的程序了,result 和 log显示是对的。但是一直苦于table中只有最后一次回归 ...
我大概明白你的意思了。 我的基本思路是这样的,在每个循环的时候生成一个temp,然后每次结束都把这个set到另外一个data里面,比如
data work.combine;
set work.combine work.temp;
...
run;

使用道具

8
jintianxiu 发表于 2011-12-20 21:21:24 |只看作者 |坛友微信交流群
按时地方 发表于 2011-12-20 20:48
我大概明白你的意思了。 我的基本思路是这样的,在每个循环的时候生成一个temp,然后每次结束都把这个set ...
data a;
input n r sic value date ddmmyy8.;
format date ddmmyy10.;
cards;
1  0.1  1   109 01-01-10
2  0.2  1   209 01-02-10
3  0.3  1   167 01-03-10
4  0.1  2   123 01-04-10
5  0.2  2   200 01-05-10
6  0.3  2   210 01-06-10
7  0.4  2   342 02-07-10
8  0.12 1   223 02-08-10
1  0.29 1   560 02-09-10
;
run;
data a;
set a;
month= month (date);
run;

%macro rollreg(datain=);

  %do firstmonth = 1 %to 9;
    %let lastmonth = %eval( &firstmonth + 3);
    data combine; set &datain combine;
      where &firstmonth<= month <= &lastmonth;
    proc reg data=combine outest = resul edf;
       model r = value sic ;
           by n year
    run;
  %end;

%mend rollreg(datain=);

%rollreg(datain=a); quit;我的程序又修改了 程序是这样的,但是仍然不能运行出结果。请指教~~谢谢
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

使用道具

9
按时地方 发表于 2011-12-21 09:16:53 |只看作者 |坛友微信交流群
你应该是想用月份来ROLLING,然后每个季度估计一次吧?
这样的话一般有两种方法,一个是给所有的observation加上一个count,那么你就只要用一个循环,还有一种就是用原先的年月,那么循环就要有两个
%macro rolling ;
%local j;
%do j= 1998 %to 2008;
%local i;
%do i= 1 %to 12;
data jpminch.rolling;
set jpminch.rollstock;
by stkcd year month;
if year=&j and month>=&i or  year=&j+3 and month<&i or year=&j+1 or year=&j+2;
run;
....
这是我做样本窗为3年得rolling,每月roll的程序部分
由于之前都是做模型,所以我也是这次问的时候才开始接触SAS,有不少地方我也是新手,呵呵,进一步交流可以用私信QQ效率比较高吧
...

使用道具

10
jintianxiu 发表于 2011-12-21 16:35:47 |只看作者 |坛友微信交流群
按时地方 发表于 2011-12-21 09:16
你应该是想用月份来ROLLING,然后每个季度估计一次吧?
这样的话一般有两种方法,一个是给所有的observati ...
你好,我还是被rollingreg bothering着。敢问您的Q是多少 ,想直接请教!!

使用道具

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

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

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

GMT+8, 2024-4-28 07:43