SAS:如何修改 300 多个外生变量的 Proc 模型



我必须运行具有 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_invest=b0 + b1*r_int + b2*r_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;",则宏输出将写入日志,以便您可以看到它在做什么。

最新更新