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