重回帰分析と AIC/BIC

複数説明変数の重回帰、AIC/BICによるモデル選択、ステップワイズ法を一気に押さえます。

2つ以上の説明変数で目的変数を予測する重回帰分析。 AIC/BIC によるモデル選択は DS検定で頻出。

白峰 リリ(普段) 白峰 リリ

単純な線形回帰だと変数1つだけど、現実は複数の要因が絡むよね?

神楽 モニカ 先生(笑顔) 神楽 モニカ 先生

その通り。 複数の説明変数を扱うのが重回帰(多変量解析の代表)。 y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε で表されるわ。

紅林 かえで(普段) 紅林 かえで

問題は『どの変数を使うべきか』。 説明変数を増やすほどR²は上がるけれど、過学習しやすくなる。 そこでAICとBICでモデルを比較するの。

藍沢 しずく(普段) 藍沢 しずく

AIC・BICって、何の略ですかぁ?

紅林 かえで(普段) 紅林 かえで

AIC=Akaike Information Criterion(赤池情報量基準)、BIC=Bayesian Information Criterion(ベイズ情報量基準)。 両方とも『小さいほど良いモデル』を示す指標。

白峰 リリ(普段) 白峰 リリ

計算式ってどうなってるの?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

AIC = -2·log(尤度) + 2·(パラメータ数)、 BIC = -2·log(尤度) + log(n)·(パラメータ数)。 どちらも『当てはまりの良さ』と『モデルの複雑さ』のバランスで評価するの。

紅林 かえで(普段) 紅林 かえで

BIC は罰則項に log(n) が入るので、サンプルサイズが大きいほどパラメータ数に対するペナルティが厳しくなる。 AIC より変数選択が保守的になる傾向ね。

藍沢 しずく(普段) 藍沢 しずく

どっちを使えばいいんですかぁ?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

予測精度重視ならAIC、 真のモデルに近づけたいならBIC、 という使い分けが目安ね。 実務ではAICがよく使われるのよ。

白峰 リリ(普段) 白峰 リリ

変数選択って自動でやれるの?

紅林 かえで(普段) 紅林 かえで

ステップワイズ法が有名。 (1)前進選択、(2)後退削除、(3)前進後退の3パターンで、AIC/BICが最小になる組み合わせを探す。 ただし多重共線性には別途注意。

藍沢 しずく(普段) 藍沢 しずく

重回帰の注意点ありますかぁ?

神楽 モニカ 先生(普段) 神楽 モニカ 先生

(1)説明変数同士の{kw('多重共線性')}、(2){kw('外れ値')}、(3)残差の正規性・等分散性、(4)サンプルサイズの目安(変数1つにつき10サンプル以上)、を意識して。

紅林 かえで(普段) 紅林 かえで

DS検定★では『AICとBICの違い』『AICの罰則項はパラメータ数の2倍』が頻出よ。

import statsmodels.api as sm

X = sm.add_constant(df[['x1', 'x2', 'x3']])  # 切片を追加
y = df['y']

model = sm.OLS(y, X).fit()
print(model.summary())
print(f'AIC: {model.aic:.2f}')
print(f'BIC: {model.bic:.2f}')
print(f'Adjusted R²: {model.rsquared_adj:.3f}')

確認クイズ

AIC と BIC の違いとして正しいのはどれか。

  1. 両者は同じ式
  2. AIC は罰則項に log(n) を含み、BIC は 2 倍を含む
  3. BIC の罰則項に log(n) が入るため、サンプルサイズが大きいと変数選択が保守的になる
  4. AIC は分類専用、BIC は回帰専用
こたえを見る

正解: 3. BIC の罰則項に log(n) が入るため、サンプルサイズが大きいと変数選択が保守的になる

BIC の罰則項に log(n) が入るため、サンプルサイズが大きいと変数選択が保守的になる。 AIC は 2k のシンプルな罰則、BIC は log(n)·k で n が大きいほど罰則が大きくなり、結果的により少ない変数を選ぶ傾向があります。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。