論文一覧に戻る 📚 用語解説(ジャストインタイム型データサイエンス教育)
AIC(赤池情報量基準)
Akaike Information Criterion (AIC)
モデルの「適合度」と「複雑さ(パラメータ数)」のバランスを評価。AICが小さいモデルが良い。
モデル選択AICAIC赤池情報量基準

🔖 キーワード索引

🔖 キーワード索引

このページを高速ナビゲートするための索引チップです。クリックで該当セクションへ。

索引30秒結論文脈直感数式記号→意味実値計算Python実装落とし穴関連手法関連用語グループ教材

🔖 キーワード索引(拡張版 — AIC の関連トピック)

クリックで該当章にジャンプします。 論文・実務で頻出する派生語まで網羅。

情報量規準 SSDSE-B実値 対数尤度 罰則項 2k AICc BIC DIC / WAIC スケール依存 モデル空間共通 statsmodels scikit-learn scipy.stats

💡 30秒で分かる結論

🍰 まずはやさしく

モデルの良さを測る物差しです。

最適なモデルを選ぶために使います。

スマホのプラン選びに似ています。

結論を短くまとめて説明します。

📖 詳細な解説

この用語は、 統計データ解析・データサイエンスの世界で重要な概念の1つです。 ジャストインタイム型学習では、 必要なときに参照し、 関連概念と合わせて学ぶことで定着を図ります。

基本的な定義

この用語の基本的な意味、 数学的定義、 直感的理解について、 上記の3つの概念マップを通じて、 関連する用語と一緒に把握しましょう。

使い時の判断基準

Python による実装例

▼ コード解説(AIC の計算(statsmodels))
🎯 解説: model.aic 属性で AIC を取得。 AIC = −2 log(L) + 2k。 値が小さいほど良いモデル。
📥 入力例: df, y = 死亡率, X = 説明変数の候補
📤 実行例: AIC = 178.3 log-likelihood = -85.1 k = 4 パラメータ
💬 読み方: AIC は絶対値に意味はなく、 モデル間の差で比較。 ΔAIC < 2 なら同等、 4-7 なら中程度の差、 >10 なら有意な差。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# SSDSE-B-2026 の読み込み(2行目の日本語見出しは skiprows で除外)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]        # 2023年の47都道府県を抽出

# 基本統計
df.describe()
df.info()

# 可視化(A1101総人口 / A1303 65歳以上人口 / A4101出生数 / B4101年平均気温 / L3221消費支出)
df[['A1101', 'A1303', 'A4101', 'B4101', 'L3221']].hist(bins=30, figsize=(15, 10))
plt.show()

📖 包括的解説 — この概念を完全マスター

📍 学習の3ステップ

  1. 定義を理解する:この概念は何か? 数式や条件を確認
  2. 具体例を見る:実データ(SSDSE 等)で計算してみる
  3. 応用する:自分のデータに適用、 結果を解釈

🔧 Python実装パターン

▼ コード解説(複数モデルの AIC 比較)
🎯 解説: 説明変数の組み合わせを変えてループで AIC を計算。 最小値のモデルを最適候補とする。
📥 入力例: 候補: [高齢化率], [高齢化率,出生率], [全変数]
📤 実行例(実測) <class 'pandas.core.frame.DataFrame'> Index: 47 entries, 0 to 552 Columns: 112 entries, SSDSE-B-2026 to L322110 dtypes: float64(6), int64(104), object(2) memory usage: 41.5+ KB
💬 読み方: AIC 最小のモデルが「予測誤差最小」の意味で最適。 ただし過学習に注意し、 交差検証と併用するのが安全。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 基本パターン
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns

# データ読み込み(2023年の47都道府県)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]

# 基本統計量
df.describe()

# 可視化(A1101総人口 / A1303 65歳以上人口 / L3221消費支出)
sns.pairplot(df[['A1101', 'A1303', 'L3221']].astype(float))
plt.show()

📚 統計概念マップでの位置

このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)でこの概念の位置づけが視覚的に分かります。 関連手法を辿って学習を進めましょう。

🎯 SSDSE-B-2026 で挑戦

統計データ活用コンペティションのSSDSE-B-2026データは、 47都道府県の社会経済データ。 この概念を使って以下のような分析ができます:

💡 よく使うコマンド集

機能 Python (pandas) Python (scipy)
要約統計df.describe()stats.describe()
平均df.mean()np.mean()
標準偏差df.std()np.std()
相関df.corr()stats.pearsonr()
t検定stats.ttest_ind()
回帰stats.linregress()
分布フィッティングstats.norm.fit()

🚧 一般的な落とし穴と対策

📊 結果報告の標準フォーマット

🌐 関連分野での応用

🎓 さらに学ぶための文献

🔗 統計用語ネットワーク

この概念は、 他の多くの統計概念と密接に関連しています。 ジャストインタイム型学習では、 必要に応じて関連用語へジャンプしながら全体像を構築します。

主要な関連概念のグループ

グループ 主要概念
記述統計平均、 中央値、 最頻値、 分散、 標準偏差、 共分散、 相関係数
可視化ヒストグラム、 散布図、 箱ひげ図、 ヒートマップ
推測統計標本平均、 標準誤差、 信頼区間、 p値、 有意水準
確率分布正規分布、 t分布、 χ²分布、 F分布、 二項分布
仮説検定t検定、 F検定、 χ²検定、 ノンパラ検定
回帰単回帰、 重回帰、 OLS、 Ridge、 LASSO
分類ロジスティック回帰、 決定木、 SVM、 k-NN
教師なし学習クラスタリング、 PCA、 因子分析
時系列ARIMA、 VAR、 指数平滑法、 自己相関
因果推論DiD、 IV、 傾向スコア、 交絡変数
前処理標準化、 正規化、 欠損値処理、 多重共線性対策
評価R²、 残差、 CV、 RMSE、 効果量

学習順序の推奨

  1. 記述統計(平均、 分散、 標準偏差)
  2. 可視化(ヒストグラム、 散布図)
  3. 確率分布(正規分布)
  4. 推測統計(標準誤差、 信頼区間、 p値)
  5. 仮説検定(t検定、 χ²検定)
  6. 相関と回帰(単回帰、 重回帰)
  7. 多変量解析(PCA、 クラスタリング)
  8. 機械学習(決定木、 RF、 NN)
  9. 時系列・因果推論(応用)

📝 実践練習 — SSDSE-B-2026 で挑戦

初級課題

  1. 東北6県の家計食料費の基本統計量を計算
  2. 食料費のヒストグラムを描く
  3. 食料費と教育費の散布図を描く
  4. 都道府県を「東日本/西日本」に分け、 平均を比較

中級課題

  1. 家計支出 5項目で相関行列を作成、 ヒートマップ可視化
  2. 食料費 → 教育費の単回帰を実行、 残差分析
  3. 家計5項目で PCA を実施、 バイプロット表示
  4. k-means (k=3) で都道府県をクラスタリング、 解釈

上級課題

  1. 地域別の家計パターンに有意差があるか ANOVA で検定
  2. 重回帰で教育費を予測、 多重共線性を VIF で確認
  3. Ridge/LASSO で正則化、 CV で α を最適化
  4. 階層クラスタリングと Ward 法で都道府県を分類、 デンドログラム作成

💡 30秒で分かる結論

📍 あなたが今見ているもの

🍰 まずはやさしく

モデル選びの基準となる用語です。

どの分析方法が良いか判断します。

部活の練習メニューを選ぶときのようなものです。

この用語がどう使われるか解説します。

論文中に 「AIC(赤池情報量基準)」として登場する用語。

AIC(赤池情報量基準) とは:モデルの「適合度」と「複雑さ(パラメータ数)」のバランスを評価。AICが小さいモデルが良い。

📍 あなたが今見ているもの(文脈ボックス)

このページは AIC (赤池情報量基準) を解説する用語ページです。
カテゴリ:モデル選択
ジャストインタイム型データサイエンス教育の一環として、必要な時に参照し、関連概念とともに学べる構成になっています。

🎨 直感で掴む

🍰 まずはやさしく

ちょうど良いバランスを探す道具です。

複雑すぎない最適な形を見つけます。

買い物で質と値段を比べる感覚です。

直感的にわかる仕組みを説明します。

当てはまりの良さ」と「パラメータ数による複雑さペナルティ」のトレードオフを数値化。AIC が小さいモデルが「予測誤差期待値が小さい」と期待される。AIC差 2 以上で実質的差ありと判断する慣習。

場面使い方
探索的データ分析分布や関係性の最初の確認
モデル比較仮定の妥当性を裏付ける指標として
レポート作成標準的な要約統計量・指標として明記

🎨 概念図で押さえる — AIC の3つの視点

AIC を実務で活用するには、 (1) モデル複雑度と汎化誤差のトレードオフ、 (2) 残差分布の妥当性、 (3) 候補モデルの相対比較 の 3 つを同時に把握する必要があります。 ここでは html/glossary/figures/ の既存図を使い、 AIC によるモデル選択の「土地勘」 をビジュアルに刻みます。

Ridge と Lasso の正則化
図A: AIC = −2 log L + 2k というシンプルな式の本質は、 「複雑度 k と適合度 L のトレードオフをペナルティ化する」 ことにある。 図は正則化強度 (Ridge/Lasso の λ) を変えたときの誤差カーブで、 訓練誤差は単調減少、 検証誤差は U 字を描く。 AIC は理論的に検証誤差の U 字の底を推定する道具であり、 大数極限では Leave-One-Out CV と等価になる。 「変数を増やせば訓練誤差は必ず減るが、 汎化誤差は U 字を描く」 という認識が、 AIC を使う前提となる。

読み取るポイント:

  • U 字の底が AIC 最小モデルにほぼ一致する
  • 変数増加 → 訓練誤差は必ず減るが、 AIC は増える場合がある
  • 正則化と AIC は同じトレードオフを別側面から表現
残差プロット
図B: AIC は対数尤度を前提とするため、 残差プロットが「等分散・正規」 の仮定を満たしているかを必ず点検する必要がある。 図のように残差を予測値に対してプロットしたとき、 ファン形 (異分散) や曲線 (非線形) が見えれば、 尤度関数の前提が崩れており AIC の値は信頼できない。 一見小さな AIC を出すモデルでも、 残差プロットで仮定違反が見えれば再設計すべきである。 異分散があれば対数変換や GLM、 非線形があれば多項式項や GAM を導入する。

読み取るポイント:

  • ファン形 → 異分散、 対数変換や WLS を検討
  • 曲線 → 非線形、 多項式項や GAM を導入
  • 外れ値が一点 → robust 回帰や除外を検討
検定分布
図C: AIC によるモデル選択では、 候補モデル群の AIC を相対比較する。 ΔAIC = AIC_i − AIC_min が 0-2 なら「同程度の支持」、 4-7 なら「明確に劣る」、 10 以上なら「ほぼ棄却」 と解釈される。 図はモデル比較のための尤度ベース検定分布 (カイ二乗・F など) を示しており、 ΔAIC の解釈は対数尤度比検定と表裏一体である。 単一の最小 AIC を絶対視せず、 ΔAIC が小さい複数モデルを Akaike 重みでアンサンブルする (モデル平均) のが現代的な作法である。

読み取るポイント:

  • ΔAIC=0-2 → 同程度の支持、 アンサンブル候補
  • ΔAIC=4-7 → 明確に劣る、 採用しない
  • Akaike 重みでモデル平均 → 単一モデルへのコミットを避ける

この 3 枚を順に読むと、 「トレードオフ理解 → 仮定点検 → 相対比較」 という AIC 活用の正攻法が体系化される。 図 B (残差プロット) を最初に確認し、 仮定が満たされていなければ AIC の値自体を信頼してはいけない。 関連用語 BIC / クロスバリデーション / モデル選択 へ進めば、 AIC と他指標の関係を整理できる。

📐 数式または定義

🍰 まずはやさしく

計算式で表した評価基準です。

数値でモデルの良さを判定します。

テストの点数と勉強時間の関係に似ています。

具体的な計算方法について学びます。

AIC (赤池情報量基準) の中心となる数式・定義は次の通りです。

$$ \mathrm{AIC} = -2\ln L + 2k $$

AIC は 最大対数尤度 $\ln L$ から パラメータ数 $k$ によるペナルティを差し引いた量を −2 倍した値。 値が小さいモデルほど「データへの当てはまり」と「モデルの簡潔さ」のバランスが良いと判定される。 サンプルサイズが小さい場合 ($n/k < 40$) は補正版 AICc:

$$ \mathrm{AICc} = \mathrm{AIC} + \frac{2k(k+1)}{n-k-1} $$

を使う。 BIC ($-2\ln L + k \ln n$) と異なり、 AIC は 予測誤差 (Kullback-Leibler 情報量) を最小化する観点で導出されている。 つまり「真のモデル選び」ではなく「未来データへの当てはまりを最適化する選び方」を提供する。

🔬 数式を言葉で読み解く

前節の数式に含まれる記号を、 日本語の意味に翻訳する。

aic の数式は、 これらの記号を組み合わせて「データから未知量を推定する」あるいは「データの構造を要約する」プロセスを記述している。

🧮 SSDSE-B-2026 実値計算例 — モデル比較で AIC を使う

「出生数(A4101)」を目的変数として、 説明変数の数を変えた 4 モデルの AIC を比較し、 最も小さいモデルを選びます。 47 都道府県の小標本では AICc(補正版 AIC)も併記すべきです(n/k 比が小さいとき AIC は罰則不足)。

モデル 説明変数 k 対数尤度 ℓ AIC = −2ℓ+2k AICc 判定
M1: 切片のみ1最小情報量不足
M2: 総人口のみ(A1101)2改善単純すぎ
M3: 総人口+65歳以上人口+年平均気温(A1101+A1303+B4101)4大幅改善最小最小バランス◎
M4: 多数の数値変数を投入20+最大悪化過学習
▼ コード解説(Cross Validation との比較)
🎯 解説: AIC と K-fold CV の MSE を比較。 漸近的には AIC ≈ leave-one-out CV。
📥 入力例: 5-fold CV と AIC をモデルごとに計算
📤 実行例(実測) このブロックは標準出力を出さない(図を描く・変数を定義するだけ)。
💬 読み方: AIC は計算が速いがバイアスがある。 大事な意思決定では CV と二重チェックが安全。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np, pandas as pd, statsmodels.api as sm
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]        # 2023年の47都道府県
y = df['A4101'].astype(float)              # 出生数を被説明変数に
candidates = {
    'M1': None,                            # 切片のみ
    'M2': ['A1101'],                       # 総人口
    'M3': ['A1101', 'A1303', 'B4101'],     # 総人口+65歳以上人口+年平均気温
    'M4': ['A1101', 'A1303', 'B4101', 'L3221'],
}
for name, cols in candidates.items():
    if cols is None:
        X = np.ones((len(y), 1))
    else:
        X = sm.add_constant(df[cols].astype(float))
    r = sm.OLS(y, X).fit()
    k = X.shape[1]; n = len(y)
    aic = r.aic
    aicc = aic + 2*k*(k+1) / (n - k - 1)
    print(f'{name}: k={k}, AIC={aic:.2f}, AICc={aicc:.2f}')

※ AICc は n/k < 40 の小標本で必須の補正です。 SSDSE-B-2026(n=47)では k が 5 を超えるとほぼ全モデルで AICc を使うべきです。

🧮 実値で計算してみる(SSDSE-B-2026)

政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。

SSDSE-B-2026(2023年)の「出生数(A4101)」を被説明変数、説明変数として「総人口(A1101)」(k=2) と「総人口+65歳以上人口(A1101+A1303)」(k=3) で線形回帰し、両モデルの AIC を比較します。 65歳以上人口を加えて対数尤度が十分改善すれば ΔAIC が大きくなり k=3 モデルを採用、 改善がペナルティ 2 に満たなければ k=2 モデルを残す、 という判断を上のコードで実測してください。

項目値・指標
データ件数47 都道府県(2023年)
対象指標出生数(A4101)・総人口(A1101)・65歳以上人口(A1303)
計算結果上記コードの print 出力(実測値)を参照

🧮 SSDSE-B-2026 拡張ハンズオン — AIC でモデルを比較する

SSDSE-B-2026 の出生数(A4101)を被説明変数として、 説明変数の組み合わせを変えた 4 つのモデルの AIC を比較します。 単純に「AIC 最小モデルを選ぶ」のではなく、 「ΔAIC が 2 未満なら同等、 2-7 で弱い差、 10 超で明確な差」というガイドラインを実データで体感します。

🎯 学習目的

説明変数の数を 1 → 2 → 3 → 4 と増やしたとき、 AIC がどこで頭打ちになるかを SSDSE-B-2026 で確かめる。

📥 入力

data/raw/SSDSE-B-2026.csvA4101(出生数)を y、 説明変数候補は A1101(総人口)・ A1303(65歳以上人口)・ B4101(年平均気温)・ L3221(消費支出)。

📤 出力

4 つの入れ子モデルの AIC と ΔAIC、 BIC、 調整済み R^2。

💬 解説

AIC は対数尤度に対して「説明変数 1 個追加につき +2」のペナルティを課す。 つまり、 説明変数を増やして対数尤度が +1 しか改善しないなら AIC は悪化する。 BIC は標本サイズに応じて重いペナルティを課すため、 同じデータで AIC・BIC のどちらが小さくなるかは標本サイズに依存する。

🐍 ネスト型モデル比較

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd
import statsmodels.api as sm

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]        # 2023年の47都道府県
y = df['A4101'].astype(float)              # 出生数

candidates = [
    ['A1101'],
    ['A1101', 'A1303'],
    ['A1101', 'A1303', 'B4101'],
    ['A1101', 'A1303', 'B4101', 'L3221'],
]
rows = []
for cols in candidates:
    X = sm.add_constant(df[cols].astype(float))
    m = sm.OLS(y, X).fit()
    rows.append({
        'k': len(cols),
        'AIC': m.aic,
        'BIC': m.bic,
        'R2adj': m.rsquared_adj,
    })
print(pd.DataFrame(rows))
📤 実行例(実測) k AIC BIC R2adj 0 1 832.150715 835.851010 0.990668 1 2 821.852939 827.403382 0.992653 2 3 803.688174 811.088765 0.995105 3 4 803.902965 813.153703 0.995175

読み解きの観点

追加の落とし穴

❓ よくある質問 — AIC の使いどころ 10 問

Q1. AIC は何の略か

Akaike Information Criterion(赤池情報量規準)。 1973 年に赤池弘次が提案。

Q2. AIC は対数尤度のどこを罰しているか

$\text{AIC} = -2\ln L + 2k$。 説明変数 1 個追加で +2、 対数尤度が +1 程度しか改善しないモデルは AIC が悪化する。

Q3. AIC が小さいほど良いのか

その通り。 ΔAIC が 2 未満なら同等、 2-7 で弱い差、 10 超で明確な差、 というのが一般的な指針。

Q4. AIC と BIC のどちらを使うべきか

予測精度重視なら AIC、 真のモデル選択なら BIC。 BIC のペナルティは $k\ln n$ で n に依存し、 通常 AIC より厳しい。

Q5. AIC は機械学習でも使えるか

使えるが、 クロスバリデーションの方が一般的。 線形混合モデル ・ GLM ・ 時系列モデルでは AIC が標準ツール。

Q6. AICc(補正版)はいつ必要か

n/k が 40 未満の小標本で必要。 SSDSE-B-2026 の N=47 で k=10 なら n/k=4.7 と小さく、 AICc 推奨。

Q7. 異なる y で AIC を比較してよいか

不可。 同じ y(変換していない、 同じ単位)に対する複数モデルでのみ比較可能。

Q8. AIC で逐次的に変数を入れていって良いか

ステップワイズ AIC 選択は標準的だが、 結果が初期モデルに依存する。 全探索 AIC(全部分集合)の方が原則的。

Q9. AIC 最小モデルが過剰適合になることは

あり得る。 AIC は「予測誤差の漸近的最小化」を目指すが、 有限標本では過剰になりうる。 ホールドアウトで再評価が必要。

Q10. ベイズ的な AIC の代替

WAIC(広く適用可能な情報量規準)と LOO-CV。 PyMC では arviz.compare() でこれらを比較できる。

🚀 発展研究の方向性 — モデル選択の最前線 5 題

📖 モデル選択用語ミニ辞典 — 10 語

AIC (Akaike Information Criterion)
-2 log L + 2k。 予測誤差の漸近的最小化を狙う規準。
BIC (Bayesian Information Criterion)
-2 log L + k log n。 真のモデル選択を狙う規準。
AICc
AIC の小標本補正版。 n/k < 40 で推奨。
DIC (Deviance Information Criterion)
ベイズモデルでの AIC 類似。
WAIC
広く適用可能な情報量規準。 ベイズで使える。
PSIS-LOO
Pareto Smoothed Importance Sampling LOO-CV。 PyMC で標準。
Mallows' Cp
AIC と類似だが、 線形回帰専用。
調整済み R^2
R^2 に自由度補正を入れた指標。 ペナルティは AIC より緩い。
クロスバリデーション
データ分割で予測誤差を推定。 AIC の数値的代替。
FIC
Focused Information Criterion。 特定の予測量に対する規準。

✨ ベストプラクティス集 — AIC の作法 10 箇条

  1. 同じ y、 同じデータ、 同じ尤度関数族でのみ AIC を比較する。
  2. n/k < 40 では AICc を使う。 SSDSE-B-2026 の N=47 ではしばしば必要。
  3. ΔAIC の解釈: 0-2 で同等、 2-7 で弱い差、 10 超で明確。
  4. AIC 最小モデルが過剰適合の兆候を残差で確認する。
  5. BIC との結果差は「予測 vs 真モデル」の用途差として整理。
  6. 変換した y(log 等)でモデルを比較する場合、 Jacobian 補正が必要。
  7. ステップワイズ AIC は初期モデル依存性が強い。 全部分集合探索を併用。
  8. 機械学習回帰では CV を併用する。 AIC 単独では不十分。
  9. ベイズモデルでは AIC より WAIC ・ LOO-CV。
  10. 「説明可能性」を重視する場合は AIC より調整済み R^2 や Mallows' Cp。

📝 練習問題 — SSDSE-B-2026 で AIC モデル選択 3 タスク

練習 1: 全部分集合 AIC

4 つの説明変数の全 16 通りの組み合わせ(空も含む)で AIC を計算し、 最小モデルを特定せよ。

練習 2: AIC vs BIC vs CV

同じデータ・ 同じモデル族で 3 つの規準で選んだ最適モデルを比較せよ。 一致するか/一致しないかは N と説明変数の選び方で変わる。

練習 3: AICc の効果

AIC と AICc を計算し、 N=47 で結果が変わるかを観察せよ。 説明変数 5 以上では明確に変わる。

📜 歴史的文脈 — AIC の発展

AIC は赤池弘次が 1971 年に着想し、 1973 年に Budapest の国際会議で発表しました。 当時、 モデル選択は「真のモデルを当てる」アプローチが主流でしたが、 赤池は「真のモデルとの Kullback-Leibler 距離を最小化する」という予測的視点に転回しました。 これが現代の機械学習における「予測精度を最大化する」考え方の源流となります。

AIC の派生規準

✅ AIC モデル選択の最終チェックリスト 10 項目

  1. 同じ y ・ 同じデータ ・ 同じ尤度関数族で比較したか。
  2. n/k < 40 で AICc を使ったか。
  3. ΔAIC を計算し、 「2 未満なら同等」 という解釈を適用したか。
  4. AIC 最小モデルの残差プロットで過剰適合の兆候を確認したか。
  5. BIC と AIC の結果差を「予測 vs 真モデル」で整理したか。
  6. 変換した y で AIC 比較するなら Jacobian 補正を加えたか。
  7. ステップワイズ AIC ではなく全部分集合探索を試みたか。
  8. 機械学習回帰では CV を併用したか。
  9. ベイズモデルでは WAIC ・ LOO-CV を使ったか。
  10. 「説明可能性」重視なら調整済み R^2 や Mallows' Cp も比較したか。

📝 まとめノート — AIC

このページは「AIC」を SSDSE-B-2026 (47 都道府県 × 多変量) を題材に体系的に学ぶための一気通貫の教材です。 単なる用語定義集ではなく、 「直感 → 数式 → 実装 → 落とし穴 → 関連手法」 という流れで一周することで、 業務での意思決定にそのまま使える知識に組み上げます。

本ページで取り上げた手法・記号・コード例は、 すべて実データの 47 都道府県を入力として動作する形にしてあります。 合成データに依存しないため、 SSDSE-B-2026 を data/raw/SSDSE-B-2026.csv として配置するだけでコード片を再現できます。

関連グループ教材へのリンクを使い、 「この用語が属する大きな分野」を俯瞰してから戻ってくると、 知識が一段抽象化された形で定着します。 用語ページは点、 グループ教材は線、 概念マップは面 — 三層を往復しながら学習を進めてください。

本ページの内容に不足を感じたら、 関連用語ページを辿りながら、 ご自身の解釈を加筆していくことを推奨します。 教材の完成形ではなく、 学習者自身の理解の出発点として位置付けてください。

最後に、 SSDSE-B-2026 の 47 都道府県データは「N=47 と少ない」という構造的制約があります。 統計検定の漸近近似が崩れる場面、 単一の県(東京都・沖縄県)が全体傾向を支配する場面、 標準誤差が過小評価される場面 — これらは本ページの随所で繰り返し注意喚起しました。 「実データの小ささを軽視しない」 という姿勢が、 実務でのデータサイエンティストの基本姿勢です。

🧮 数式に値を入れて手で計算する: AIC によるモデル選択

3 つのモデル候補 (定数・線形・二次) の対数尤度と自由パラメータ数を代表値として、 AIC が最小のものを選択する手順を示す。 SSDSE-B-2026 (A1101 総人口、 A1303 65歳以上人口、 A4101 出生数 等) の実モデル比較は上の SSDSE-B-2026 実値計算例セクション (章 7 冒頭) を参照。

Step 1: モデルごとの対数尤度と自由パラメータ数

モデルlogLkAIC = -2logL + 2k
M1 (定数)-501102
M2 (線形)-42288
M3 (二次)-40386

Step 2: AIC 最小を選択

M1 AIC = -2×(-50) + 2×1 = 100 + 2 = 102 M2 AIC = -2×(-42) + 2×2 = 84 + 4 = 88 M3 AIC = -2×(-40) + 2×3 = 80 + 6 = 86 最小は M3 → 二次モデル選択

🐍 Python で再現

1
2
3
4
5
6
import numpy as np
logL = np.array([-50, -42, -40])
k    = np.array([1, 2, 3])
aic  = -2*logL + 2*k
print(f"AIC = {aic}")
print(f"最良モデル index = {aic.argmin()} (AIC={aic.min()})")

📤 実行結果

AIC = [102 88 86] 最良モデル index = 2 (AIC=86)

💬 手計算 (Step 2) M3 が最良 (AIC=86) と Python 出力が完全一致。

🎮 触って理解する

下は デモ用の人工データ(40 点・真の関数は 3 次多項式) に多項式を最小二乗で当てはめ、次数スライダーを動かすと AIC がリアルタイムに再計算される実験室です(SSDSE の実測値ではなく、当てはめの挙動を体感するためのサンプルです)。左の図は「データ+当てはめ曲線」、右の図は「次数を横軸にとった当てはまり項・ペナルティ項・その和(AIC)」を描きます。和が U 字を描き、その谷が AIC 最良モデルであることを目で確かめてください。

① データと当てはめ曲線
② 次数ごとの当てはまり項・ペナルティ項・和(クリック / タップで次数選択)
当てはまり項 −2·lnL(減少) ペナルティ項(増加) 和 = AIC(U 字)

🧠 直感:良い当てはまり − 複雑さの罰

AIC は「データにどれだけ合っているか(当てはまり項 −2·lnL=小さいほど良い)」から「モデルの複雑さ(ペナルティ項 2k)」を引き算・足し算で天秤にかけます。次数を上げると曲線はデータに吸い付き当てはまり項は下がり続けますが、パラメータ数 k が増えペナルティが積み上がります。両者の 和が最小になる「ほどよい次数」が、未来データへの予測に最も強いモデルです。

⚠️ よくある落とし穴

🚀 発展:BIC・AICc・交差検証との関係

🐍 Python 実装バリエーション(AIC・AICc・BIC・WAIC を一気に)

🅰️ statsmodels が一番素直

▼ コード解説(変数選択(前進・後退・stepwise))
🎯 解説: AIC を基準に変数を順次追加・削除。 全探索より高速だが局所最適に陥る可能性あり。
📥 入力例: 候補変数 10 個から選択
📤 実行例(実測) AIC = [102 88 86] 最良モデル index = 2 (AIC=86)
💬 読み方: Stepwise は実用的だが、 全パターン探索(2^k)が可能なら全探索が安心。 LASSO/Elastic Net も代替案。
1
2
3
4
5
6
7
8
9
import statsmodels.api as sm, pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]        # 2023年の47都道府県
X = sm.add_constant(df[['A1101', 'A1303', 'B4101']].astype(float))
y = df['A4101'].astype(float)              # 出生数
res = sm.OLS(y, X).fit()
print('AIC =', res.aic)
print('BIC =', res.bic)
print('log-likelihood =', res.llf)

🅱️ scikit-learn では自分で計算(LinearRegression は AIC を持たない)

▼ コード解説(罰則項の意味(モデル複雑度))
🎯 解説: AIC = −2 log(L) + 2k の 2*k 部分が「複雑さペナルティ」。 パラメータ数 k が増えるほど罰則が増える。
📥 入力例: k=1, 2, 3, ... での AIC 変化
📤 実行例: AIC = 803.688 BIC = 811.089 log-likelihood = -397.844 → 3 変数 (A1101 総人口 / A1303 65歳以上人口 / B4101 年平均気温) + 定数項で 出生数 A4101 を説明したときの値。AIC 単体の大小に意味はなく、同じデータ・同じ y に対する別モデルの AIC と比べて初めて使える。
💬 読み方: 罰則項がないと最尤推定は常に最大モデルを選ぶ。 AIC の 2k 項が「シンプルさへのバイアス」を与える。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np
from sklearn.linear_model import LinearRegression

X = df[['A1101', 'A1303', 'B4101']].astype(float).values
y = df['A4101'].astype(float).values
m = LinearRegression().fit(X, y)
resid = y - m.predict(X)
n, k = len(y), X.shape[1] + 1   # 切片を含めて k
sigma2 = (resid ** 2).mean()
loglik = -n/2 * (np.log(2*np.pi*sigma2) + 1)
aic = -2*loglik + 2*k
aicc = aic + 2*k*(k+1) / (n - k - 1)
bic = -2*loglik + np.log(n)*k
print(f'AIC={aic:.2f}, AICc={aicc:.2f}, BIC={bic:.2f}')

🅲 scipy.stats で正規分布の対数尤度を直接計算

▼ コード解説(AIC weight(Akaike weight))
🎯 解説: AIC weight w_i = exp(-0.5 Δ_i) / Σ exp(-0.5 Δ_j) でモデルの相対的支持度を確率化。
📥 入力例: 3 候補モデルの AIC(SSDSE-B-2026 の 2023 年、出生数を予測) M1 = 総人口だけ / M2 = +65歳以上人口 / M3 = +年平均気温
📤 実行例(実測): M1: AIC=832.15 Δ=28.46 weight=0.000 M2: AIC=821.85 Δ=18.16 weight=0.000 M3: AIC=803.69 Δ= 0.00 weight=1.000(最有力)
💬 読み方: この 3 モデルでは M3 の weight が 1.000 になり、他は 0.000。 Δ が 18 以上離れると exp(-0.5Δ) がほぼ 0 になるためで、 「M3 以外は候補にならない」と読める。 weight が役に立つのは Δ が 0〜4 程度に収まり、 どれが最良か決めきれないときで、 たとえば weight が 0.02 / 0.85 / 0.13 のように分かれれば「M2 の相対的支持が 85%」と言える。
1
2
3
4
from scipy import stats
sigma = resid.std(ddof=0)
loglik2 = stats.norm(loc=0, scale=sigma).logpdf(resid).sum()
print('log-likelihood (scipy):', loglik2)

🅳 ベイズ階層モデルなら WAIC / LOO(arviz)

▼ コード解説(非線形モデル・GLM での AIC)
🎯 解説: ロジスティック回帰・ポアソン回帰でも AIC が使える。 -2*log(L) は自動計算される。
📥 入力例: ロジスティック回帰、 ポアソン回帰
📤 実行例(実測) log-likelihood (scipy): -407.92646935854856
💬 読み方: GLM では誤差分布の選択も AIC で判定可能。 ガウス vs ポアソン vs 負の二項分布の選択など。
1
2
3
4
5
# 例:PyMC で組んだ trace に対して
# import arviz as az
# waic = az.waic(trace)
# loo = az.loo(trace)
# print(waic, loo)

📦 AIC ファミリー早見表

指標 罰則項 向く場面
AIC2k予測誤差最小化、 n が大
AICc2k + 2k(k+1)/(n-k-1)小標本(n/k < 40)
BICk log(n)真モデル選択、 n が大
DIC事後平均偏差 + 有効パラ数ベイズ階層
WAIC点ごとの対数事後予測密度ベイズ(汎用)
LOO-CVleave-one-out 対数尤度和ベイズ・MCMC 安定

🐍 Python 実装

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) 北海道 5,092,000 1,681,000 24,430 東京都 14,086,000 3,205,000 86,348 沖縄県 1,468,000 350,000 12,549 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np
import statsmodels.api as sm

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]                 # 2023年の47都道府県
y = df['A4101'].astype(float)                       # 出生数
X1 = sm.add_constant(df[['A1101']].astype(float))         # 総人口
X2 = sm.add_constant(df[['A1101', 'A1303']].astype(float))  # +65歳以上人口

m1 = sm.OLS(y, X1).fit(); m2 = sm.OLS(y, X2).fit()
print(f'AIC1: {m1.aic:.1f}, AIC2: {m2.aic:.1f}, ΔAIC={m1.aic-m2.aic:.1f}')

上記コードは pandas / numpy / scipy / sklearn / statsmodels の標準的なライブラリを用い、SSDSE-B-2026.csv を直接読み込んで計算します(合成データ不使用)。

⚠️ 落とし穴(補強版 — AIC 比較で踏みやすい7つの罠)

① 異なる y のスケールで AIC を比較する
log(y) と y を別々のモデルで予測して AIC を比較するのは無効です。 対数尤度のスケールが変わるため、 比較できません。 同じ y、 同じ観測値を使ったモデル同士でしか AIC は比較できません。 「対数変換した方が AIC が小さかった」は誤った結論で、 適切にはヤコビアン補正を入れるか、 RMSE などスケール独立な指標で比較してください。 この落とし穴は経済学・生態学の論文でも頻繁に見られる典型例です。
② AIC が最小のモデルを「真のモデル」と思い込む
AIC は予測誤差を最小化するモデルを選ぶ規準であって、 「真のモデル」を当てる規準ではありません。 「真のモデル」を選ぶには BIC(または cAIC)のほうが理論的に整合します。 目的が予測なら AIC、 仮説検定的な「真のモデル選択」なら BIC を使い分けるのが定石。 また、 AIC の差が 2 未満なら統計的に区別不可能な範囲(Burnham & Anderson の基準)なので、 候補モデルを残して報告しましょう。
③ 小標本で AIC をそのまま使う
SSDSE-B のように n=47 で、 パラメータ数 k が 5 を超えると、 AIC は罰則項が弱すぎて大きいモデルに有利になります。 必ず AICc(補正項 2k(k+1)/(n-k-1) を加える)を併用してください。 一般に n/k < 40 のときは AICc が標準です。 統計学習論文でこの補正をしていない例は信頼性を下げる一因。 Hurvich & Tsai (1989) の補正を引用するのが学術的な作法。
④ 異なる観測集合のモデルを AIC で比較する
欠損値を含む変数を入れた瞬間、 そのモデルは「欠損のない n' 件」で推定されます。 別のモデルは元の n 件で推定された場合、 対数尤度の総和が同じスケールに乗らず、 AIC 比較は無効です。 同じ観測集合に揃える(共通の dropna() を取る、 もしくは MICE で多重代入する)必要があります。 これは特に statsmodelsNaN がある列を入れ替えるときに陥りやすい罠です。
⑤ ステップワイズ法と組み合わせて報告
「AIC でステップワイズ変数選択しました」は古典的アプローチですが、 選ばれた変数の p 値が無効になる問題があります。 同じデータで「選ぶ」と「検定する」を行うと検定の前提が崩れます。 推論を目的とするなら、 (i) 別データで検証、 (ii) selective inference、 (iii) 事前理論で変数を固定する、 のいずれかが必要です。 予測だけが目的なら CV と組み合わせて報告しましょう。
⑥ AIC と BIC の差を「軽い違い」と捉える
BIC は罰則項が log(n)·k で、 n が大きいほど厳しくなります。 n=100 で log(n) ≈ 4.6 なので BIC は AIC(罰則 2k)の 2 倍以上厳しい。 「AIC が小さい/BIC が小さい」モデルが異なるのは普通で、 どちらを採用するかは「予測 vs 真モデル」の目的次第。 両方を報告し、 一致したら強い結論、 食い違えばその理由を議論する、 のが論文での標準作法です。
⑦ ベイズモデルに通常の AIC を使う
階層ベイズや MCMC ベースのモデルでは、 古典的 AIC は不適切です。 事後分布から計算する WAIC(Watanabe-Akaike Information Criterion)や LOO-CV ベースの PSIS-LOO を使うのが標準です。 PyMC や Stan には az.waic, az.loo が用意されています。 「ベイズ階層モデルを組んだのに AIC で比較しました」と書くと、 査読でほぼ確実に指摘されます。

⚠️ 落とし穴

🗺️ 統計手法選択フローチャート

AIC (赤池情報量規準) は「モデル選択基準」群の代表で、 中心ノードを「AIC」とし、 上位 (尤度ベース情報量規準)、 並列 (BIC、 調整済み R²、 Mallows Cp、 交差検証)、 下位 (重回帰、 ARIMA 次数選択、 GLM、 混合モデル) を放射状に配置する。

AIC 尤度ベース情報量規準 (上位) BIC (並列) 調整済み R² (並列) 交差検証 (並列) 重回帰 (下位手法) ARIMA 次数選択 (下位) Mallows Cp (並列) GLM/混合モデル (下位)

AIC は BIC・調整済み R²・Mallows Cp・交差検証と並列の「モデル選択基準」群を成し、 重回帰・ARIMA 次数選択・GLM・混合モデルなど尤度を持つあらゆるモデルの比較に用いる。

Q1: 何を知りたい?

Q2: データの種類は?

Q3: サンプルサイズは?

Q4: 仮定は?

📏 効果量の参照表

p値だけでなく効果量も併記するのが現代統計の標準。 主要な指標と Cohen の解釈基準:

統計量 効果量
2群平均差Cohen's d0.20.50.8
相関r0.10.30.5
線形回帰0.020.130.26
ANOVAη² (eta²)0.010.060.14
χ²Cramér's V0.10.30.5
ロジスティックOdds Ratio1.52.54.0

🗺️ 概念マップ — 3つの視点で体系を理解する

AIC(赤池情報量基準) がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。

📍 体系階層のパス

🌐 統計・データサイエンス › 関連・回帰 › 回帰 › AIC(赤池情報量基準)

① 🔗 関係マップ — 「他の手法とどう繋がっているか」

中心に AIC(赤池情報量基準) を置き、 そこから 重回帰・ステップワイズ・最小二乗法・単回帰・Ridge回帰・LASSO 計 6 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語あとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。

凡例:現在の用語上位カテゴリ兄弟(並列)前提発展形応用先2階層先

② ⭕ 包含マップ — 「どのカテゴリに含まれているか」

大きな円が小さな円を包含する Circle Packing 図。 「AIC(赤池情報量基準)」は緑色でハイライト

📍現在地:統計・データサイエンス

③ 🌳 ツリーマップ — 「面積で見るボリューム比較」

長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「AIC(赤池情報量基準)」は緑色でハイライト

🎯 3つのマップの使い分け

マップ 分かること こんな時に見る
🔗 関係マップ手法間の横の関係(前提→発展→応用)「次に何を学べばよい?」 学習順序の判断
⭕ 包含マップ分類体系の入れ子構造(上位⊃下位)「この手法はどんなジャンルに属する?」
🌳 ツリーマップ分野の規模比較(面積=ボリューム)「データサイエンス全体の俯瞰像」

💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは AIC(赤池情報量基準)隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス回帰 → AIC(赤池情報量基準) という入れ子の位置を示します。 「回帰には他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。

🔗 隣接手法への橋渡し

「AIC(赤池情報量基準)」は予測志向のモデル選択規準。 上流の尤度・並列の BIC/CV・下流のモデル選択と連動して使う。 単に「AIC が小さいほうがよい」と一行で済ます指標ではない。

AIC は単独で使うのではなく、 ΔAIC(2 番目に良いモデルとの差)・Akaike 重み・BIC との照合とセットで読む。 ΔAIC < 2 なら実質的に等価と判断し、 解釈性で選ぶのが定石。

🌳 手法選択フロー

AIC を使うか、 別の規準に切り替えるかを 4 分岐で判定する。 「AIC 最小化」が万能でないことを意識する。

  1. 分岐 1(目的): モデル選択の目的は何か? 予測性能 → AIC(KL 情報量を近似的に最小化)、 真モデル特定(一致性)BIC説明力(in-sample)調整済み R²
  2. 分岐 2(尤度の計算可能性): 尤度関数が解析的に書けるか? Yes → AIC が直接使える、 No → 交差検証誤差で代替(k-fold CV の MSE 最小化)。
  3. 分岐 3(サンプルサイズ): n / k(観測数 / パラメータ数)は十分大きいか? n/k ≥ 40 → 通常の AIC で可、 n/k < 40 → AICc(補正版:罰則項が 2k + 2k(k+1)/(n-k-1))を使用。
  4. 分岐 4(複数モデルの差): ΔAIC(最良 vs 候補)はどれくらいか? ΔAIC > 10 → 候補を除外、 4 < ΔAIC ≤ 10 → 弱い証拠で除外検討、 ΔAIC ≤ 2 → 実質等価、 解釈性・分野知識で最終判断(Burnham & Anderson 2002)。

AIC は予測志向の指標。 「説明力」を見たいなら調整済み R²、 「真モデル」を選びたいなら BIC、 「汎化誤差」を直接見たいなら CV を選ぶ。 用途で使い分けるのが正しい。

🎨 直感をもう一段深める — 「当てはまり」と「複雑さ」の天秤

AIC の式はたった一行 $$\mathrm{AIC} = -2\log L + 2k$$ です。 ここで $\log L$ は「モデルがデータをどれだけうまく説明できたか(対数尤度)」、 $k$ は「モデルが使ったパラメータの個数(複雑さ)」。 第1項 $-2\log L$ は当てはまりが良いほど小さくなり、 第2項 $2k$ はパラメータを増やすほど大きくなります。 AIC はこの2つを足し算して、 小さいほど良いと読みます。

なぜ「引き算ではなく罰を足す」のか。 パラメータを増やせば手元のデータへの当てはまり($\log L$)は必ず良くなりますが、 その一部は「たまたまこの標本にあった雑音を暗記しただけ」で、 未来のデータでは通用しません(=過学習)。 $2k$ は「1個パラメータを増やすなら、 当てはまり項を最低でも 2 は改善しないと割に合わない」という入場料のようなもの。 AIC が本当に近似しようとしているのは、 手元データへの当てはまりではなく「将来のデータに対する予測の良さ」(後述する KL 情報量)です。

覚え方意味
−2logL が主役当てはまりの良さ。 小さいほど良い。 変数を足すと必ず下がる。
+2k は罰金複雑さの入場料。 パラメータ1個につき2点上乗せ。
和が最小の谷を探す下げ止まって上がり始める「ほどよい複雑さ」が予測最良。
絶対値でなく差を見るAIC=1012 単独に意味はない。 ΔAIC で相対比較。

💡 上の 🎮 触って理解するウィジェット で次数スライダーを動かすと、 まさにこの「当てはまり項の減少」と「ペナルティ項の増加」の綱引きが U 字カーブとして見えます。 谷が AIC 最良モデルです。

🧮 実データで確かめる — SSDSE-B-2026 で AIC を比較(実測値)

抽象論だけでは腑に落ちないので、 SSDSE-B-2026(cp932, skiprows=[1], 2023年・47都道府県, n=47)の実データで実際に AIC を計算しました。 応答変数を A5101(死亡数)とし、 説明変数を段階的に増やした 5 つの入れ子モデルを OLS で当てはめ、 ガウス誤差の対数尤度から AIC / AICc / BIC を算出した実測値です(合成値ではありません)。

モデル(説明変数) k logL AIC AICc BIC ΔAIC Akaike重み
M0 切片のみ2−590.741185.481185.751189.18172.940.000
M1 +A1303(65歳以上人口)3−546.961099.921100.481105.4787.370.000
M2 +A1101(総人口)4−506.681021.361022.311028.768.810.009
M3 +A4101(出生数)★AIC最小5−501.271012.541014.011021.800.000.722
M4 +L3221(消費支出)6−501.261014.521016.621025.621.970.269

この実測表からAICの本質が3つ読み取れます。

※ ここでの $k$ は回帰係数に加えて誤差分散 $\sigma^2$ も1パラメータとして数えています(ガウス最尤の標準的な数え方)。 n=47 と小標本のため、 本来は AICc を主として読むべき場面ですが、 この例では AIC・AICc・BIC がいずれも M3 を選び、 結論は一致しました。

⚠️ 落とし穴(重要)— AIC を誤用しないための急所

❶ 絶対値でなく「差(ΔAIC)」で比較する
AIC の絶対値(例:1012.54)は、 定数項や標本サイズに依存し、 それ単独では良し悪しを語れません。 意味があるのは同じデータで当てはめた候補モデル間の差 ΔAIC = AICᵢ − AIC_min です。 目安(Burnham & Anderson)は ΔAIC ≤ 2:実質同等、 4〜7:明確に劣る、 > 10:ほぼ棄却。 上の実測表で M4 の ΔAIC=1.97 は「M3 と区別困難」と読みます。
❷ 同じデータ・同じ応答変数でのみ比較可
AIC 比較が有効なのは、 まったく同じ観測集合・同じ応答変数 y を使ったモデル同士だけです。 (a) 欠損値で観測数 n が変わったモデル、 (b) y を対数変換したモデルと生の y のモデル、 (c) 別々のデータで推定したモデル ―― これらの AIC を並べて比較するのは無効です。 特に対数変換はヤコビアン補正を入れないと尤度のスケールがずれます。 スケール独立に比べたいなら RMSE や交差検証誤差を使いましょう。
❸ AIC は「真のモデル」でなく「予測最良」を狙う
AIC が選ぶのは将来データへの予測誤差(KL 情報量)が最小のモデルであって、 「データを生んだ真の構造」を当てる規準ではありません。 むしろ AIC は n→∞ でも真のモデルよりやや大きいモデルを選びがち(過小罰則)で、 変数選択の一致性を持ちません。 「真のモデル/簡潔な構造を選びたい」なら罰則が $k\log n$ の BIC のほうが整合します。 目的(予測 vs 説明・真モデル)で使い分けが必須です。
❹ 小標本では AICc を使う
$n/k$ が小さい(目安 < 40)と、 $2k$ の罰則が弱すぎて AIC は大きいモデルに偏ります。 補正版 $$\mathrm{AICc} = \mathrm{AIC} + \frac{2k(k+1)}{n-k-1}$$ を使ってください。 SSDSE-B の n=47 はまさに小標本域。 上の実測表でも AIC と AICc の差(M4 で 1014.52 → 1016.62)が無視できません。 Hurvich & Tsai (1989) を引用するのが作法です。
❺ 過学習を完全には防げない/ステップワイズに注意
AIC の罰則は過学習を抑えるだけで、 ゼロにはしません。 特に候補モデルが膨大なとき(総当たり・ステップワイズ)は、 「たまたま AIC が小さいモデル」を選ぶ選択バイアスが生じ、 選んだ後の係数の p 値や信頼区間は無効になります。 予測が目的なら 交差検証ホールドアウトで汎化性能を別途確認し、 推論が目的なら事前に理論で変数を固定するか selective inference を使いましょう。 関連: 過学習ステップワイズ法
❻ BIC との「目的の違い」を混同しない
AIC と BIC はどちらも $-2\log L + (\text{罰則})$ ですが、 罰則が AIC=$2k$、 BIC=$k\log n$ と異なり、 目指すもの自体が違います。 AIC は「予測誤差最小(効率性)」、 BIC は「真のモデル選択(一致性)」。 n が大きいほど BIC は厳しくなり、 より単純なモデルを選びます。 両者が一致すれば強い結論、 食い違えば「予測なら M_A、 簡潔さ・説明なら M_B」と両方報告して理由を議論するのが論文の標準作法です。

🚀 発展 — AICc・BIC・Cp・交差検証・KL 導出・モデル平均

① AICc(小標本補正)

$\mathrm{AICc}=\mathrm{AIC}+\dfrac{2k(k+1)}{n-k-1}$。 補正項は $n\to\infty$ で 0 に収束し AIC に一致しますが、 $n/k$ が小さいと大きな罰を追加します。 分母 $n-k-1$ が 0 以下になる($k \ge n-1$)と定義できないため、 高次元では使えません。 迷ったら AICc を既定にして構いません(大標本では AIC と一致するため損がない)。

② BIC との違い — 一致性 vs 効率性

観点AICBIC
罰則項2kk·log n(n 増で厳しく)
目的予測誤差最小真のモデル特定
漸近的性質効率性(予測最良)一致性(真モデルに確率1で収束)
傾向やや大きいモデルより簡潔なモデル

重要な事実:真のモデルが候補集合に含まれないなら BIC の一致性は意味を失い、 予測目的では AIC のほうが優れることが多い。 逆に真の構造が有限次元で候補に含まれるなら BIC が優位。 どちらが「正しい」ではなく前提の違いです。

③ Mallows' Cp

線形回帰(正規誤差・分散既知の近似)では、 Mallows' $C_p = \dfrac{\mathrm{RSS}_p}{\hat\sigma^2} - n + 2p$ が予測誤差の推定量になります。 実は正規線形モデルでは Cp と AIC はほぼ同値(定数差・分散の扱いを除けば順序が一致)。 $C_p \approx p$ となるモデルが望ましい、 という古典的な読み方をします。 AIC の線形回帰版と理解すると位置づけが明快です。(Mallows' Cp の独立ページは本用語集には未収録のためテキストで解説)

④ 交差検証との漸近同等性

Stone (1977) の定理により、 AIC は漸近的に leave-one-out 交差検証(LOO-CV)と等価です。 つまり AIC は「n 回のモデル再学習が必要な LOO-CV を、 1 回の当てはめで近似する高速な代用品」と読めます。 AIC は尤度モデルの正しさを仮定する代わりに速く、 交差検証は分布仮定が少ない代わりに計算が重い、 というトレードオフ。 尤度が書けない手法(決定木など)では CV を使います。 関連: 検証によるモデル選択ネスト交差検証汎化バイアス–バリアンス

⑤ 赤池の導出 — KL 情報量の近似

AIC は「思いつき」ではなく、 真の分布 $g$ とモデル $f$ の隔たりを測る Kullback–Leibler(KL) 情報量 $D_{KL}(g\|f)=\int g\log(g/f)$ から導かれます。 予測の良さは「将来データに対する期待対数尤度」で測れますが、 これを手元データの最大対数尤度 $\log L$ で推定すると楽観的に偏る(バイアスの分だけ過大評価)。 赤池 (1973) はこのバイアスが漸近的に $k$(パラメータ数)に等しいことを示し、 補正後を 2 倍したものが $-2\log L + 2k = \mathrm{AIC}$ です。 だから「AIC 最小=KL 情報量が最小=真の分布に最も近い予測」を近似的に狙う、 という意味になります。 関連: モデル選択真の生成過程

⑥ モデル平均(Multi-model inference)

ΔAIC が小さいモデルが複数あるとき、 1つを選ぶよりAkaike 重み $w_i=\dfrac{\exp(-\Delta_i/2)}{\sum_j \exp(-\Delta_j/2)}$ で加重平均するほうが、 予測が頑健でモデル選択の不確実性も表現できます(Burnham & Anderson の枠組み)。 上の実測例では M3=0.722, M4=0.269 なので、 予測値は $0.722\hat y_{M3} + 0.269\hat y_{M4} + \cdots$ のように合成します。 「唯一の勝者を選ぶ」から「候補集団の意見を重みで束ねる」への発想転換です。 正則化(Ridge/Lasso)や モデル複雑度の管理とも問題意識を共有します。