0

我必须使用超过 300 个外生变量(由于多个滞后和时间虚拟变量)运行 Newey-West 回归。这是运行 SAS Newey-West 回归的典型方法:

proc model data=two;
     endo r_invest;
     exog r_int r_gnp;
     instruments _exog_;
     parms b0 b1 b2;
     r_invest=b0 + b1*r_int + b2*r_gnp;
     fit r_invest / gmm kernel=(bart,5,0) vardef=n;
     run;
     quit; 

说我有 390 次 dummy 被调用tdum1tdum390我怎样才能避免写r_invest=b0 + b1*r_int + b2*r_gnp +b3*tdum1....b390*tdum390;

4

1 回答 1

1

我不确定这个过程的确切语法,但是这个宏会写出你在代码下面的注释中列出的变量。您可以对其进行编辑以适合您需要的确切语法。

%macro writeOutMyVars();

    %do i=1 %to 390;
        + b%eval(&i+2)*tdum&i  
    %end;

%mend;

proc model data=two;
     endo r_invest;
     exog r_int r_gnp;
     instruments _exog_;
     parms b0 b1 b2;
     r_invest=b0 + b1*r_int + b2*r_gnp %writeOutMyVars(); ;
     fit r_invest / gmm kernel=(bart,5,0) vardef=n;
run;
quit;

如果添加“选项 mprint;” 到代码的顶部,然后宏输出将被写入日志,以便您可以看到它在做什么。

于 2013-10-30T12:34:48.757 回答