我必须使用超过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;
?
答案 0 :(得分: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;
如果添加“options mprint;”在代码的顶部,宏输出将被写入日志,以便您可以看到它正在做什么。