線形回帰における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プロシジャ:
|
|