Statistics SAS:如何为300多个外部变量修改Proc模型

Statistics SAS:如何为300多个外部变量修改Proc模型,statistics,sas,regression,Statistics,Sas,Regression,我必须用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=

我必须用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时间虚拟,名为
tdum1
tdum390
,我如何避免写
r\u invest=b0+b1*r\u int+b2*r\u gnp+b3*tdum1……b390*tdum390

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

%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;

如果在代码顶部添加“options mprint;”,则宏输出将写入日志,这样您就可以看到它在做什么。

太好了!谢谢!