White の修正による標準誤差を出力する方法
[OS] ALL
[リリース] SAS System 8以降
[キーワード] REG, MODEL, HCCME=, ACOV, WHITE, standard error, White correction
[質問]線形回帰において、White の修正による標準誤差、t値、およびそれに対する p値を計算するにはどのようにしたらよいですか。
[回答]SAS 9.2 以降では、REG プロシジャで対応しています。MODEL ステートメントで WHITE オプションを指定してください。 次のサンプルを参考にしてください。
/* Econometric Analysis 5ed.(Greene) の Example11.2 */
DATA test;
INPUT MDR Acc Age Income Avgexp Ownrent Selfempl @@;
Incomesq=Income**2;
IF Avgexp>0;
DATALINES;
0 1 38 4.52 124.98 1 0 0 1 33 2.42 9.85 0 0
0 1 34 4.50 15.00 1 0 0 1 31 2.54 137.87 0 0
(中略)
0 1 26 5.00 451.20 1 0 0 1 46 5.50 251.52 1 0
;
RUN;
/* REGプロシジャによる例。SAS9.2 以降で利用可能 */
PROC REG DATA=test;
MODEL Avgexp=age ownrent income incomesq/ WHITE;
RUN;
QUIT;
/* MODELプロシジャによる例。SAS9.1以降で利用可能 */
PROC MODEL DATA=test;
PARMS Intercept b1 b2 b3 b4;
Avgexp=Intercept+b1*Age+b2*Ownrent+b3*Income+b4*Incomesq;
FIT Avgexp / OLS HCCME=0;
RUN;
QUIT;
/* REGプロシジャの結果からWhiteの修正による結果を計算する */
PROC REG DATA=test;
MODEL Avgexp=age ownrent income incomesq/ ACOV;
ODS OUTPUT ParameterEstimates=parmest ACovEst=whiteest
ANOVA=anovaout(WHERE=(source='Error'));
RUN;
QUIT;
/* Whiteの標準誤差を計算する */
DATA whiteest2;
SET whiteest;
ARRAY temp{*} _NUMERIC_;
DO i=1 TO DIM(temp);
IF VNAME(temp{i})=variable THEN StdErr=SQRT(temp{i});
END;
KEEP variable stderr;
RUN;
DATA white;
MERGE parmest whiteest2;
IF _N_=1 THEN SET anovaout(KEEP=DF RENAME=(DF=DF2));
tValue=Estimate/StdErr;
Probt=2*(1-PROBT(ABS(tValue),DF2));
DROP DF2;
RUN;
/* 結果のプリント */
TITLE4 "Parameter Estimates with White's correction";
PROC PRINT DATA=white LABEL;
RUN;
TITLE4;
|
|