0

我在使用以下 %macro 进行回归时遇到问题。

基本上,我希望它在 i=j、i=1 到 12 和 j=1 到 12 时运行。

  %macro reg(num=);
    %do i=1 %to #
    %do j=1 %to #
    proc reg data=ccy.eur; *Specify Currency Data Set Here;
    model Ft_leadSt&i = Ft_St&j;
    where &i=&j;
    ods output parameterestimates (persist) =dpara1;
    run;
    %end;
%end;
%mend;
%reg(num=12)

问题是当 i=9 和 j=9 时我的输出似乎停止了。我一直无法弄清楚为什么?

在此处输入图像描述

数据截图

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

我会在没有双循环且只有 1 条PROC REG语句的情况下重写它:

  %macro reg(num=);
    proc reg data=ccy.eur; *Specify Currency Data Set Here;
    ods output parameterestimates (persist) =dpara1;
    var FT_leads1 - FT_leads&n FT_St1 - FT_St&n;
    %do i=1 %to #
       _&i: model Ft_leadSt&i = Ft_St&i;
       run;
    %end;
    quit;
  %mend;
%reg(num=12)

确保数据集中有这些变量。

于 2017-12-05T19:16:57.123 回答