線形回帰におけるAICに基づく変数選択
[OS] ALL
[リリース] ALL
[キーワード] AIC, model selection, REG, ADJRSQ
[質問]赤池の情報量規準(AIC)を使用した変数選択を、REGプロシジャで実現することは可能でしょうか。
[回答]REGプロシジャではいくつかの変数選択法が用意されています。たとえば、SELECTION=ADJRSQをMODELステートメントのオプションとして指定すると、調整済みR2乗値(調整済み寄与率)の大きい順にモデルがアウトプットへ出力されます。 AICに基づく変数選択法は、直接サポートされていませんが、線形回帰モデルにおいて説明変数(独立変数)の個数を固定して考えた上で、R2乗値(寄与率)の大きな順でモデルを並べた場合と、AICが小さい順にモデルを並べた場合を比較すると、それらの統計量の計算式から並び順は一致します。 この事実を応用すれば、たとえばAICに基づいて上位10個のモデルを選ぶときには、以下のようなプログラムで実質的にAICに基づく変数選択を行なうことができます。 例:REGプロシジャでのAICに基づく変数選択の例 %LET num=10; ODS LISTING CLOSE; ODS OUTPUT SubsetSelSummary=SummaryOut; PROC REG DATA=test; MODEL y=x1-x8 / SELECTION=RSQUARE AIC BEST=# RUN; QUIT; ODS LISTING; /* AIC でソート */ PROC SORT DATA=SummaryOut OUT=SortSummaryOut; BY AIC; RUN; /* アウトプット画面に出力 */ PROC PRINT DATA=SortSummaryOut(OBS=&num) LABEL NOOBS; VAR NumInModel Rsquare AIC VarsInModel; RUN; 上記プログラムの出力例 取り込んだ 変数の数 R2 乗 AIC モデルの独立変数 5 0.6064 -66.3777 x1 x2 x4 x7 x8 6 0.6071 -66.2663 x1 x2 x3 x4 x7 x8 6 0.6067 -65.2617 x1 x2 x4 x5 x7 x8 7 0.6075 -65.2402 x1 x2 x3 x4 x5 x7 x8 6 0.6064 -64.3902 x1 x2 x4 x6 x7 x8 7 0.6071 -64.2811 x1 x2 x3 x4 x6 x7 x8 7 0.6067 -63.2676 x1 x2 x4 x5 x6 x7 x8 8 0.6075 -63.2475 x1 x2 x3 x4 x5 x6 x7 x8 4 0.5960 -42.4039 x1 x2 x4 x7 5 0.5968 -42.3157 x1 x2 x3 x4 x7 なお、SAS 9.1.3では評価版、SAS 9.2では正規版となりますGLMSELECTプロシジャでは、AIC統計量を変数選択の判断基準とすることができます。たとえば、以下の記述となります。 例:GLMSELECTプロシジャでの変数選択 PROC GLMSELECT DATA=test; MODEL y=x1-x8 / SELECTION=stepwise(SELECT=aic); RUN; REGプロシジャ、正規版のGLMSELECTプロシジャにて算出されるAIC統計量についてですが、定義式が異なっていますので、ご留意ください。 REGプロシジャ、評価版GLMSELECTプロシジャ:
|