我有以下格式的数据集: 一个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()
现在我不确定如何将结果导出到单个表中......
答案 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个打印输出),如果你想创建一个打印输出,你可以从输出数据集构建它。