2013-10-28 25 views
0

我必須運行具有超過300個外生變量的Newey-West迴歸(由於多重滯後和時間虛擬變量)。這是運行SAS紐維西迴歸的典型方式:SAS:如何修改超過300個外生變量的Proc模型

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叫tdum1tdum390時間假,我怎麼能避免寫r_invest=b0 + b1*r_int + b2*r_gnp +b3*tdum1....b390*tdum390;

回答

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;」到您的代碼的頂部,然後宏輸出將被寫入日誌,以便您可以看到它在做什麼。

+0

太好了!非常感謝! – Plug4