【发布时间】:2014-03-25 22:20:21
【问题描述】:
我有以下格式的数据集: M 行 2K 列的表。 我的列是变量对:X_i、Y_i,行是观察值。
我想执行许多线性回归:每对列一个 (Y_i ~ X_i) 并获得结果。
我知道如何使用数组访问特定列,如下所示:
data Xs_Ys_data (drop=i);
array Xs[60] X1-X60;
array Ys[60] Y1-Y60;
我也知道如何拟合单个线性回归模型,如下所示:
proc reg data=some_data;
model y = x;
output out=out_lin_reg;
run;
而且我对循环的概念很熟悉:
do i=1 to 60;
Xs[i] .......;
end;
如何将这三者结合起来得到我需要的东西?
谢谢!
P.S - 我在这里问了一个关于不同格式的类似问题:
SAS reading a file in long format
更新:
我已经设法使用这样的宏创建回归:
%macro mylogit();
%do i = 1 %to 60;
proc reg data=Xs_Ys_data;
model Y&i = X&i;
run;
%end;
%mend;
%mylogit()
现在我不确定如何将结果导出到单个表中...
【问题讨论】:
-
答案是你不知道。以长格式执行回归。另一种选择是将变量提取到宏字符串中,但这更难做到,而且在任何情况下都会占用您的计算机资源。
-
嗨乔,它似乎与宏一起使用。完成此操作后,是否有一种简单的方法可以将参数估计值保存在单个表中?谢谢!
-
再一次,通过正确的做法。该宏将运行 60 次回归,这将需要很长时间并创建 60 个表,然后您必须将它们附加在一起。以长格式构造它(你表明你已经有了这个)并使用 BY 语句。
标签: sas linear-regression