SAS中的动态滚动窗口用于相关计算

时间:2014-05-05 12:10:47

标签: sas

问题:我的数据集如下 -

Comp    date    time         returns
1    12-Aug-97  10:23:38    0.919292648
1    12-Aug-97  10:59:43    0.204139521
1    13-Aug-97  11:03:12    0.31909242
1    14-Aug-97  11:10:02    0.989339371
1    14-Aug-97  11:19:27    0.08394389
1    15-Aug-97  11:56:17    0.481199854
1    16-Aug-97  13:53:45    0.140404929
1    17-Aug-97  10:09:03    0.538569786
2    14-Aug-97  11:43:49    0.427344962
2    14-Aug-97  11:48:32    0.154836294
2    15-Aug-97  14:03:47    0.445415114
2    15-Aug-97  9:38:59     0.696953041
2    15-Aug-97  13:59:23    0.577391987
2    15-Aug-97  9:10:12     0.750949097
2    15-Aug-97  10:22:38    0.077787596
2    15-Aug-97  11:07:57    0.515822161
2    16-Aug-97  11:37:26    0.862673945
2    17-Aug-97  11:42:33    0.400670247
2    19-Aug-97  11:59:34    0.109279307

这些只是每个公司在日期和时间级别的股价回报。 我需要计算每个Comp和日期值组合在10天内返回的自相关(1度)。如您所见,我的时间序列不连续,周末和公众假期休息。在这种情况下,如果我需要10天的范围,我不能使用intnk函数,因为在日期列添加10天可能包括星期六/星期日我没有数据和因此,我的自相关值将受到损害。如何使此范围动态化?

我发现这个问题Calculating rolling correlations in SAS我认为可能会有所帮助,但话又说明,存在同样的问题。

1 个答案:

答案 0 :(得分:0)

您可以使用INTERVALDS系统选项定义符合您需求的自定义时间间隔。有关详细信息,请参阅this article

基本概念是您创建一个包含所有可能日期(或日期时间)的数据集,并为每个日期时间定义一个间隔值,然后在使用特定间隔名称时通过系统选项告诉SAS使用该数据集。然后照常使用INTNX

否则,您可以只执行PROC FREQ数据以获取唯一的日期,然后使用它来创建日期计数器;然后,您可以使用SQL来获取日期比当前日期少10的行,而不是使用fromDate创建intnx