SAS中单个数据集的几个回归

时间:2014-03-25 13:41:06

标签: sas linear-regression

我有以下格式的数据集: 一个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()

现在我不确定如何将结果导出到单个表中......

1 个答案:

答案 0 :(得分:0)

你的宏中有这个:

  proc reg data=Xs_Ys_data;
      model Y&i = X&i;
  run;

所以改为创建:

data x_y_Data;
set xs_yx_data;
array xs x1-x60;
array yx y1-y60;
do iter = 1 to dim(xs);
x=xs[iter];
y=ys[iter];
output;
end;
run;

proc reg data=X_Y_data;
    by iter;
    model Y = X;
run;

然后添加输出语句,但通常会获得结果数据集。现在你得到1个输出表,包含所有60次迭代(仍然是60个打印输出),如果你想创建一个打印输出,你可以从输出数据集构建它。