SAS回归输出数据结构

时间:2017-05-19 20:36:16

标签: sas

我正在开展一项研究项目,要求我对1993年至2014年间每一天的市场回报率(数千家公司)进行线性回归。

数据类似于(这是虚拟数据):

| Ticker   | Time     | Stock Return | Market Return |
|----------|----------|--------------|---------------|
| Facebook | 12:00:01 | 1%           | 1.5%          |
| Facebook | 12:00:02 | 1.5%         | 2%            |
| ...      |          |              |               |
| Apple    | 12:00:01 | -0.5%        | 1.5%          |
| Apple    | 12:00:03 | -0.3%        | 2%            |

数据量非常大。每天大约有1.5 G的数据。这些数据有21年我需要分析并运行回归。

回归公式类似于

Stock_Return = beta * Market_Return + alpha 

其中beta和alpha是我们估计的两个系数。每个公司和每天的系数都不同。

现在,我的问题是,如何输出beta&每个公司的alpha和每天的数据结构?

我正在阅读SAS regression documentation,但似乎输出是文本而不是数据结构。

文档中的代码:

   proc reg;
      model y=x;
   run;

文档的输出:

enter image description here

我无法在每一天阅读每家公司的每个测试版。有成千上万的人。

因此,我想知道是否有办法将beta输出并提取到数据结构中?

我有OOP语言的背景(python和java)。因此SAS有时会让人感到困惑......

1 个答案:

答案 0 :(得分:1)

SAS在许多方面与面向对象编程语言非常相似,当然也具有函数式语言和4GL的特性。

在这种情况下,有一个对象:输出传递系统对象(ODS)。 SAS 9中产生打印输出的每个过程都通过输出传送系统产生,如果您知道对象的名称,通常可以通过ODS OUTPUT获得该输出。

您可以使用ODS TRACE查看特定过程产生的输出的名称。

data stocks;
  set sashelp.stocks;
run;

ods trace on;
proc reg data=stocks;
  by stock;
  model close=open;
run;
ods trace off;

记下日志中的名称。然后无论你想要什么输出,你只需用ODS OUTPUT语句包装proc。

因此,如果我想要参数估计,我可以抓住它们:

ods output ParameterEstimates=stockParams;
proc reg data=stocks;
  by stock;
  model close=open;
run;
ods output close;

如果您想要输出多个数据集,可以根据需要使用尽可能多的ODS OUTPUT语句。