【问题标题】:How do I perform regression by month on the same SAS data set?如何在同一个 SAS 数据集上按月执行回归?
【发布时间】:2015-01-13 05:12:18
【问题描述】:

我的规格如下:

Proc reg data = liqfworld;
     Model x = y z ;

我需要对我的数据集中的每只股票执行此回归,该数据集中包含每日数据和每月数据。它按 SAS 格式的股票 ID 和日期排序。我是否需要一个宏来对同一数据集执行重复回归?我的最终目标是将每个股票和每个月的 y 系数转换为输出数据集。

感谢任何指针。谢谢。

编辑:澄清一下,我需要进行多次非滚动回归(每个月每个股票),而股票 ID 是按升序排序的,它们是这样的:83、94、105 等。

【问题讨论】:

  • 滚动回归通常有一个时间段,比如 6 个月,并且窗口会移动,即第一个窗口是 1-6 月,第二个窗口是 2-7 月。这是你想要做的,还是只是按月回归?
  • 我的错误。我的意思是每个股票每个月重复的每月回归。不重叠也不滚动。

标签: sas


【解决方案1】:

由于您的数据集已经按正确的顺序排序,您应该能够使用按组处理来执行此操作,而无需使用宏。如果您还没有月份变量,则需要首先从现有的日期变量中创建一个。我建议使用视图来执行此操作。

那么你应该可以这样做:

Proc reg data = liqfworld; 
Model x = y z ;
/*More statements within the proc reg as needed*/
by stock month;
run;

【讨论】:

  • 谢谢。但是我如何对每个月的每只股票进行单独的回归呢?目前,数据按股票 ID 排序,其中按日期排序。使用“按 id 月;”不太好用。
  • 您是否尝试过按照我的建议从您的日期变量创建月份变量?
  • 是的,让它工作。谢谢。有没有办法将每次迭代的 Y 的参数(系数)输出到数据集中而不是整个 tableout 输出?
  • 在proc reg前添加这一行:ods table parameterestimates=monthly_estimates;
猜你喜欢
  • 2018-05-14
  • 2014-07-20
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多