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