楼主: 按时地方
4335 9

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

  • 0关注
  • 1粉丝

已卖:185份资源

博士生

30%

还不是VIP/贵宾

-

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

楼主
按时地方 发表于 2011-8-20 16:20:54 |AI写论文
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
拉您进交流群
GMT+8, 2026-1-4 05:39