モデル選択:AICの「2k」の2はどこから来たのか【第32回】

はじめに

第30章はモデル選択です。第16回の重回帰分析で「説明変数を増やすと決定係数は必ず上がる。無意味な変数を足しても上がる」という現象を見ました。あのとき置いた宿題を、この回で回収します。

学ぶ前の私の理解はこうでした。「AIC という指標があって、小さいほうが良いモデルらしい。パラメータ数に罰則がかかるので、複雑すぎるモデルは選ばれない」。実際に使ったこともあります。ただ、なぜ罰則が「パラメータ数の2倍」なのかは考えたこともありませんでした。2k2k22 は、どこから来た数字なのか。

結論から書くと、この 22(+k)(k)(+k) - (-k)22 でした。2logL-2\log L2-2 とは無関係です。訓練データでの誤差は kk のぶんだけ甘く出て、本当に知りたい新データでの誤差は kk のぶんだけ重く出る。その差が 2k2k です。20万回のシミュレーションで、小数第2位まで一致することを確かめました。ここが今回いちばんスッキリしたところです。

もう一つの山場は終盤にあります。AIC は尤度比検定と何が違うのかという疑問です。式を並べてみると、AIC でモデルを比べる操作は「第12回の尤度比検定で、棄却限界を χ2\chi^2 の5%点でなく 2Δk2\Delta k にしたもの」とぴったり一致しました。そこから「AIC に対応する有意水準」を逆算できます。Δk=1\Delta k = 1 なら 0.157。よく言われる「AIC は甘い」はここから来ています。ところが Δk\Delta k を増やすと対応する有意水準は下がり続け、Δk=8\Delta k = 8 で 0.042 と 5% を下回ります(厳密な交差点は Δk=7.12\Delta k = 7.12)。そこから先は AIC のほうが厳しいという逆転がありました。私は「AIC は甘い」を無条件の性質だと思っていたので、これは予想外でした。

そしてこの回には、ずっと後ろに引きずってきた薄気味悪い話があります。ステップワイズ法です。教科書には「批判が多い」と書いてあるのに、理由が列挙されるだけで納得できていませんでした。今回それを5つに分けて全部測りました。純粋なノイズだけのデータでステップワイズを回すと、自由度調整済み決定係数でも 0.145 という値が出ます。調整済みなら安全だと思っていたので、これは効きました。

さらに、5つの罪は同じ種類の問題ではなく、「選んだあとに推論をしたことの罪」「予測にも効く罪」「探索の限界」の3つに分かれると分かったのが、この回の構造的な収穫でした。そして「データを見て 0 か 1 で選ぶ」という操作そのものがコストの発生源だと分かると、ステップワイズ・第19回のラッソ・赤池ウェイトによる平均化が、一本の軸に並びます。

いつものように、出てくる数値はすべて自分で計算しています。χ2\chi^2 分布の確率とラッソは、この環境に scipy も scikit-learn も無いので自分で実装し、教科書の数値表や最小二乗法の解と突き合わせて検証しました。

この回で扱う用語

略語が多い回なので、先に並べておきます。

略語英語日本語ひとことで
AICAkaike Information Criterion赤池情報量規準2logL+2k-2\log L + 2k。新データでの予測誤差の推定量
BICBayesian Information Criterionベイズ情報量規準2logL+klogn-2\log L + k\log n。真のモデルを当てにいく
AICccorrected AIC有限修正 AICAIC に小標本用の追加罰則を足したもの
CpC_pMallows' CpC_pマローズの CpC_p回帰専用。σ2\sigma^2 を固定した AIC
CVCross Validation交差検証(交差確認)データを分けて、選ぶのに使わなかった側で評価する
LOOLeave-One-Out一個抜き1点だけ抜いて当てはめ、その1点を予測する。nn 回繰り返す
LOOCVLOO Cross Validation一個抜き交差検証LOO を使った交差検証。nn-fold CV と同じもの
PRESSPREdiction Sum of Squares予測残差平方和LOO の誤差二乗和。再計算せずに閉じた式で出る
RSSResidual Sum of Squares残差平方和(yiy^i)2\sum (y_i - \hat y_i)^2。当てはまりの悪さ
MSEMean Squared Error平均二乗誤差RSS を件数で割ったもの
VIFVariance Inflation Factor分散拡大係数第16回の多重共線性の指標

kk はパラメータ数、nn はデータの件数、LL は尤度です。

kk の数え方には流儀が2つあるので、先に整理しておきます。AIC の定義に忠実に数えるなら、正規分布の回帰では σ2\sigma^2 も推定しているのでこれも1つ数えます。説明変数 pp 本+切片+σ2\sigma^2k=p+2k = p + 2 です。いっぽう、このあと出てくる残差平方和を使った導出では「回帰係数の本数」だけを数えますp+1p + 1)。

紛らわしいのですが、実害はありません。どちらの流儀でも全モデルに同じ定数が足し引きされるだけなので、AIC の差は変わらないからです。そして後で見るように、AIC は絶対値ではなく差だけが意味を持ちます。以下では、どちらの数え方をしているかを都度明記します。


何に使うのか:決定係数の話の続き

第16回で見た現象をおさらいします。説明変数を増やすと決定係数 R2R^2 は必ず上がります。yy とまったく無関係な乱数を足しても上がります。だから「R2R^2 が大きいモデルを選ぶ」をやると、いつも「全部の変数を入れたモデル」が勝ってしまう。

これは「当てはまりの良さ」を手元のデータで測っているからです。手元のデータへの当てはまりは、変数を増やせばいくらでも良くできます。極端には、nn 個のデータに nn 個のパラメータを当てれば残差はゼロになります。

私たちが本当に知りたいのは別のことです。このモデルは、まだ見ていないデータをどれだけ当てるのか。 モデル選択の道具は全部、この一点に向けて作られています。やり方は大きく2つです。

考え方具体的な手法何をしているか
理論で補正するAIC・BIC・AICc・CpC_p手元の当てはまりが甘く出る量を数式で計算して、その分を引く
実際に測る交差検証・LOOデータを分けて、当てはめに使わなかった側で本当に測ってみる

そして道具の外側に、もっと重要な区別があります。第31回の最後に触れた話です。予測が目的なのか、説明が目的なのか。 同じデータでも、この2つで正反対の判断になります。予測が目的なら「効くかもしれない変数は入れておく」が正しく、説明が目的なら「本当に効いている変数だけ残す」が正しい。AIC と BIC は、まさにこの2つに対応しています。


過学習は「二手に分かれる」現象

まず現象を見ます。真の関数を3次式 1+2x1.2x2+0.25x31 + 2x - 1.2x^2 + 0.25x^3 とし、そこに標準偏差 0.6 の誤差を乗せた15点を用意しました。この15点に dd 次の多項式を当てはめ、手元の15点での誤差と、同じ仕組みで作った新しい4000点での誤差を両方測ります。

2枚のグラフ。左は横軸が多項式の次数0から12、縦軸が平均2乗誤差の対数目盛。訓練誤差は次数を上げると単調に下がり12次で0.011まで落ちる。検証誤差は3次と4次で最小0.414付近になり、その後上昇して12次で4114に爆発する。真のモデル3次に緑の縦線。σ²=0.36の水平線が引かれている。右は次数10に固定してデータ件数を12から3000まで増やしたグラフで、検証誤差が257915から0.371まで下がり、訓練誤差0.029から0.359と挟まってσ²=0.36に収束する

左のグラフが過学習の定義そのものです。訓練誤差(青)は下がり続けるのに、検証誤差(赤)は途中から上がる。 数値で書くとこうなります。

次数 dd訓練誤差検証誤差
0(定数のみ)1.2111.439
10.4400.620
3(真のモデル)0.2810.418
40.2750.414
90.2400.473
100.2221.572
120.0114113.978

12次では訓練誤差が 0.011 まで落ちています。手元のデータについては、ほぼ完璧に説明できている。ところが新しいデータでの誤差は 4114 です。約37万倍の落差です。

もう一つ、大事な線が引かれています。σ2=0.36\sigma^2 = 0.36 の水平な点線です。誤差の標準偏差が 0.6 なので σ2=0.36\sigma^2 = 0.36これはどんなに良いモデルを持ってきても消せない床です。真の関数を完全に知っていたとしても、yy には σ\sigma のばらつきが乗っているので、予測誤差は σ2\sigma^2 より下がりません。検証誤差の最小値 0.414 が 0.36 より少し上なのは、この床の上に「モデルを推定したことによる誤差」が乗っているからです。

そして訓練誤差はこの床を下回っています(12次で 0.011)。消せない誤差より小さい誤差が出ているというのは、それ自体が異常のサインです。ノイズを構造として覚え込んでいる証拠です。

右のグラフは同じ現象を別の軸で見たものです。次数を10に固定して、データ件数だけ増やします。n=12n = 12 のとき検証誤差は 257915(この列だけは反復の中央値ですnn が小さいと検証誤差は極端に裾を引き、平均は数回の外れ値に支配されてしまうので、中央値で見ています。訓練誤差の側は平均です)。n=3000n = 3000 では 0.371 まで落ち、訓練誤差 0.359 とほぼ同じ値になって σ2=0.36\sigma^2 = 0.36 に収束します。過学習は「モデルが複雑すぎる」のではなく「データの量に対してモデルが複雑すぎる」現象です。nnkk の比の問題です。

曲線そのものを描くとさらに分かりやすいです。

3枚のグラフ。左は1次直線を15点に当てはめ、緑の点線の真の曲線から系統的にずれている(訓練誤差0.440)。中央は3次で真の曲線とほぼ重なる(訓練誤差0.281)。右は12次で赤い曲線が激しく振動し縦軸の範囲を何度も突き抜け、点は通るが真の曲線から大きく離れる(訓練誤差0.011)

左は単純すぎて構造を捉えきれていない。曲がっているものに直線を当てているので、どんなにデータを増やしても直りません。右は点を通すために暴れている。データが少し変われば、この曲線はまったく別の形になります。この「捉えきれない」と「暴れる」が、次の分解の2つの成分です。


バイアスとバリアンスに分解する

予測誤差は3つに分かれます。

予測誤差=バイアス2構造的なズレ+バリアンスデータごとの揺れ+σ2消せない床\text{予測誤差} = \underbrace{\text{バイアス}^2}_{\text{構造的なズレ}} + \underbrace{\text{バリアンス}}_{\text{データごとの揺れ}} + \underbrace{\sigma^2}_{\text{消せない床}}

言葉で言えばこうです。バイアスは「何回データを取り直して平均しても残るズレ」。左の図の直線が真の曲線からずれている分です。バリアンスは「データを取り直すたびに答えが変わる幅」。右の図の暴れる曲線が、データごとに別の形になる分です。σ2\sigma^2yy そのものに乗っているノイズです。

複雑さを上げるとバイアスは減り、バリアンスは増えます。逆向きに動くので、合計には最小値があります。これがトレードオフです。

数値で確かめます。n=30n = 30 のデータを8000回作り直して、各次数について2つの成分を実測しました。xx の位置は 30 点に固定して、毎回ノイズだけを作り直しています(固定設計)。誤差を測るのも同じ 30 点の上です。ひとつ前の実験は新しいランダムな xx 点で測っていたので、同じ「予測誤差」という語でも中身が違います。kσ2/nk\sigma^2/n という綺麗な形が出るのは、同じ xx 点で測っているからです。このあとの (n±k)σ2(n \pm k)\sigma^2 の話も、同じ設定の上にあります。

2枚のグラフ。左は横軸が多項式の次数0から10、縦軸が対数目盛。バイアス²は次数2までに1.26から0.11へ急落し、真の3次以降は1e-5程度でほぼゼロ。バリアンスは0.012から0.132へ単調増加し、理論値kσ²/nを示す黒丸とすべて重なる。両者の和にσ²を足した黒線は3次で最小0.407になりU字型。右は積み上げ棒グラフで、灰色のσ²=0.36の床の上に青のバイアス²と赤のバリアンスが積まれ、次数3で合計0.407が最小になる

次数 ddkk(係数の本数)バイアス2^2バリアンス理論値 kσ2/nk\sigma^2/n合計+σ2\sigma^2
011.26280.01230.01201.6351
120.25610.02380.02400.6399
230.11030.03600.03600.5063
340.00000.04750.04800.4075
450.00000.05980.06000.4198
670.00000.08400.08400.4440
10110.00000.13190.13200.4919

バイアス2^2 は3次でほぼ完全にゼロになります10510^{-5} 程度)。真の関数が3次なので、3次以上の多項式は真の関数を含んでいて、構造的なズレが消えるからです。4次以上でもゼロのままです。「余分な項があっても、その係数の期待値がゼロなら、平均的なズレは生じない」ということです。

いっぽうバリアンスは増え続けます。しかもその値が理論値 kσ2/nk\sigma^2/n とぴったり一致していますd=10d = 10 なら k=11k = 1111×0.36/30=0.13211 \times 0.36 / 30 = 0.132、実測 0.1319。

この式は覚える価値があります。バリアンスはパラメータ1個あたり σ2/n\sigma^2/n ずつ増える。 過学習の「値札」がこれです。パラメータを1個足すたびに、σ2/n\sigma^2/n の税金を払う。データが多ければ税率は下がります。

そしてこの kσ2/nk\sigma^2/n が、次の AIC の 2k2k の正体に直結します。

なぜ「kk 個あたり」なのか

回帰の予測値は y^=Hy\hat y = Hy と書けます。H=X(XX)1XH = X(X^\top X)^{-1}X^\top はハット行列(第17回のてこ比の親玉)です。y^\hat y の分散の合計は σ2tr(H)\sigma^2 \operatorname{tr}(H) になり、tr(H)=k\operatorname{tr}(H) = k(ここでの kk は係数の本数)です。1点あたりに直すと kσ2/nk\sigma^2/n

tr(H)=k\operatorname{tr}(H) = k になるのは、トレースが順序を入れ替えられる性質から出ます。

tr(X(XX)1X)=tr((XX)1XX)=tr(Ik)=k\operatorname{tr}\left(X(X^\top X)^{-1}X^\top\right) = \operatorname{tr}\left((X^\top X)^{-1}X^\top X\right) = \operatorname{tr}(I_k) = k

5点・2パラメータの小さな例で確かめました。てこ比 hiih_{ii}[0.6,0.3,0.2,0.3,0.6][0.6, 0.3, 0.2, 0.3, 0.6] で合計 2.0、パラメータ数と一致します。各点の予測値の分散の実測は [2.391,1.195,0.798,1.200,2.400][2.391, 1.195, 0.798, 1.200, 2.400]、理論値 hiiσ2=[2.4,1.2,0.8,1.2,2.4]h_{ii}\sigma^2 = [2.4, 1.2, 0.8, 1.2, 2.4]てこ比は「その点が自分の予測値をどれだけ引っ張れるか」であり、引っ張れる点は分散も大きいという関係がここで見えます。


AIC:2k2k22 はどこから来たのか

AIC の定義はこれです。

AIC=2logL+2k\mathrm{AIC} = -2\log L + 2k

第1項は当てはまりの良さ(の逆)、第2項は複雑さへの罰則。小さいほど良い。ここまでは知っていました。分からなかったのはなぜ「2k2k」なのかです。kk でも 3k3k でもなく 2k2k である理由が要ります。

訓練誤差は kk だけ甘く、真の誤差は kk だけ重い

答えは、2つの期待値を並べると見えます。nn 点のデータに kk 個の回帰係数を最小二乗で当てはめたとき、

E[訓練データでの残差平方和]=(nk)σ2E[\text{訓練データでの残差平方和}] = (n - k)\,\sigma^2

これは第16回で出てきた話です。σ^2=RSS/(nk)\hat\sigma^2 = \mathrm{RSS}/(n-k) が不偏推定量になるのは(モデルが真の平均構造を含んでいるとき)、RSS\mathrm{RSS} の期待値が (nk)σ2(n-k)\sigma^2 だからでした。パラメータを増やすと分母が減る。つまり手元のデータでの誤差は kσ2k\sigma^2 ぶん甘く出ます

「甘い」「重い」の基準は nσ2n\sigma^2 です。真の平均を最初から知っていて何も推定しなければ、残差は純粋なノイズなので E[RSS]=nσ2E[\mathrm{RSS}] = n\sigma^2。この線を挟んで、訓練誤差が kσ2k\sigma^2 ぶん下、新データの誤差が kσ2k\sigma^2 ぶん上に来ます。

ここで、同じ xx の位置で yy だけをもう一度観測しなおしたとします。当てはめた係数はそのままで、新しい yy に対する誤差を測ると、

E[新しいデータでの残差平方和]=(n+k)σ2E[\text{新しいデータでの残差平方和}] = (n + k)\,\sigma^2

符号が反転します。理由は素直です。訓練データでは、当てはめた予測値 y^\hat yyy引っ張られている(残差が小さくなる方向に動いている)。新しい yy はその引っ張りの外側にあるので、y^\hat y のばらつき kσ2k\sigma^2 が誤差に足される側に回ります。

差を取ります。

(n+k)σ2(nk)σ2=2kσ2(n+k)\sigma^2 - (n-k)\sigma^2 = 2k\,\sigma^2

これが 2k2k です。22(+k)(k)(+k) - (-k)222logL-2\log L2-2 とは何の関係もありません。私はここを混同していたので、ずっと「22 の意味」が見えていませんでした。

20万回で確かめる

n=40n = 40σ=1.5\sigma = 1.5σ2=2.25\sigma^2 = 2.25)、真の関数は3次式。20万回シミュレーションしました。kk は回帰係数の本数です。

kkE[E[訓練RSS]]理論 (nk)σ2(n-k)\sigma^2E[E[新RSS]]理論 (n+k)σ2(n+k)\sigma^2理論 2kσ22k\sigma^2
295.38585.500104.30294.5008.9179.000
387.43083.250100.92696.75013.49713.500
480.97081.00099.03299.00018.06218.000
578.66778.750101.232101.25022.56522.500
872.03672.000107.962108.00035.92636.000
1067.51967.500112.458112.50044.93945.000

k=4k = 4 の行を見ると、訓練 80.970 対理論 81.000、新データ 99.032 対理論 99.000。ぴったりです。

そして k=2k = 2k=3k = 3 の行が面白い。 真の関数は3次(係数4本)なので、k=2k = 2k=3k = 3 のモデルは間違ったモデルです。実際、訓練RSS の実測 95.385 は理論 85.500 から大きく外れています。この差 9.885 が「捉えきれていない構造」=バイアスです。

ところが差の列を見ると 8.917 で、理論 2kσ2=9.0002k\sigma^2 = 9.000 にちゃんと合っています。 バイアスは訓練側にも新データ側にも同じだけ乗るので、差を取ると消えるのです。式で書くと、バイアス項 (IH)μ2\|(I - H)\mu\|^2 が両辺に同一の形で現れて引き算で落ちます。

これは実用上とても重要な性質です。2k2k という補正は、モデルが間違っていても正しく機能する。 AIC が「真のモデルが候補に入っている」を前提としないのは、この性質の帰結です。

ただし、どこまで間違っていていいのかには限度があります。ここで消えたのは平均構造の誤りだけで、σ2\sigma^2 は正しいままでした。分散構造まで間違っている一般の場合、誤特定のもとで正しい罰則は 2tr(J1I)2\operatorname{tr}(J^{-1}I)(竹内情報量規準, TIC, Takeuchi Information Criterion)に変わります。ここで JJ は対数尤度のヘッセ行列の期待値(の符号を変えたもの)、II はスコア関数の分散で、モデルが正しければ I=JI = J なので tr(J1I)\operatorname{tr}(J^{-1}I)kk 次の単位行列のトレース、つまり kk になります(第10回のフィッシャー情報量の2つの表し方が一致する、という話と同じものです)。つまり 2tr(J1I)2\operatorname{tr}(J^{-1}I)2k2k に一致するのは、モデルが正しく特定されているときです。「モデルが間違っていても機能する」は、σ2\sigma^2 を固定した正規線形モデルという今の枠の中での話です。

図にすると2つの曲線の関係が見えます。

2枚のグラフ。左は横軸パラメータ数k、縦軸が残差平方和÷σ²。訓練誤差の青い線は単調に下がりk=11で29になり、理論値n−kを示す黒丸と重なる。新データでの誤差の赤い線はk=4で最小44になりその後上昇してk=11で51になり、理論値n+kを示す黒四角と重なる。k=4での差8.0とk=11での差22.0が両矢印で示され2kと一致。右は同じ2本に加えて訓練誤差+2kの緑の三角が赤い線とほぼ完全に重なり、AICの最小と新データの最小がどちらもk=4であることが示されている

左が2つの期待値、右が補正の結果です。訓練誤差に 2k2k を足すと、本当に知りたかった新データでの誤差の曲線が復元されます。 これが AIC の全部です。AIC は「新データでの予測誤差の推定量」であり、2logL-2\log L の部分が甘く出るぶんを 2k2k で埋め戻しているだけです。

2logL-2\log L と残差平方和のつながりも確認しておきます。正規分布を仮定すると対数尤度は

logL=n2(log(2πσ^2)+1),σ^2=RSSn\log L = -\frac{n}{2}\left(\log(2\pi \hat\sigma^2) + 1\right), \qquad \hat\sigma^2 = \frac{\mathrm{RSS}}{n}

なので、2logL=nlogRSS+(モデルによらない定数)-2\log L = n\log \mathrm{RSS} + \text{(モデルによらない定数)} です。残差平方和が小さいほど尤度が高い。第31回の EM アルゴリズムで最大化していた対数尤度が、そのまま AIC の材料になります。

AIC はパラメータ数の最適値を求める道具ではない

ここで私は勘違いをしていました。「AIC はパラメータ数として幾つが最適かを求める指標」だと思っていたのです。上の図がまさに「kk を横軸にした曲線」なので、そう見えます。

違います。AIC が順位づけるのはモデルであって、パラメータ数ではありません。

実演します。8本の候補変数(真に効くのは x1,x2,x3x_1, x_2, x_3)から3本を選ぶ組み合わせは56通りあります。56通りすべてがパラメータ数 k=5k = 5 です(3変数+切片+σ2\sigma^2)。罰則項 2k=102k = 10 は全部同じ。それでも AIC の値は大きく散らばります。

順位選んだ変数RSSkkAIC
1x1+x2+x3x_1 + x_2 + x_358.4758.45
2x1+x2+x4x_1 + x_2 + x_4116.03549.57
3x1+x2+x6x_1 + x_2 + x_6123.27553.20
56x4+x6+x8x_4 + x_6 + x_8436.125129.01

同じ k=5k = 5 なのに、AIC の幅は 120.6 あります。 罰則が同じなら、あとは当てはまりの勝負です。だから AIC は「3本使うモデルの中でどの3本か」を選べます。パラメータ数だけの関数なら、こんなことは起きません。

そのうえで、パラメータ数をまたいだ比較もできます。同じデータで全256通り(8変数の全部分集合)を計算しました。

変数の本数その本数での最良の組み合わせAIC
0定数のみ123.46
1x1x_192.17
2x1+x2x_1 + x_251.81
3x1+x2+x3x_1 + x_2 + x_3(真のモデル)8.45
4x1+x2+x3+x8x_1 + x_2 + x_3 + x_88.04
5x1+x2+x3+x4+x8x_1 + x_2 + x_3 + x_4 + x_88.13
8全部13.81

AIC 最小は変数4個の x1+x2+x3+x8x_1 + x_2 + x_3 + x_8(8.04)で、真のモデル(8.45)ではありません。 余分な x8x_8 が1本入っています。差は 0.41 なので実質同点ですが、AIC はこういう「少し入れすぎ」を系統的にやります。この性質は後で正面から扱います。ちなみに同じデータで BIC を計算すると、最小は変数3個の真のモデル(18.92)でした。

絶対値は無意味、差だけが意味を持つ

上の表の「8.04」という数字そのものには意味がありません。2logL-2\log L には nlog(2π)+nn\log(2\pi) + n のようなデータに依らない定数が入っていますし、yy の単位を cc 倍すれば全モデルに 2nlogc2n\log c が共通に乗ります。データを別のものに変えれば AIC は簡単に数百も動きます。

AIC は同じデータに対する複数モデルの間で、差を見るためだけの量です。 「AIC が 8.04 だから良いモデル」という言い方は成立しません。「AIC がこちらのほうが 41 小さいから、こちらを選ぶ」が正しい使い方です。

AICc:小標本では罰則が足りない

2k2k という補正は nn が大きいときの近似です。nnkk に比べて小さいと補正が足りず、AIC は複雑なモデルを選びすぎます。修正版が AICc です。

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

追加項の大きさを表にしました。

nnkk2k2k追加項罰則の合計倍率
20361.507.501.25
2081613.0929.091.82
201530120.00150.005.00
408164.6520.651.29
1508161.0217.021.06
15015303.5833.581.12

n=20n = 20k=15k = 15 では罰則が5倍に膨れます。分母 nk1n - k - 1 がゼロに近づくからです。逆に n=150n = 150k=8k = 8n/k=18.8n/k = 18.8)なら 1.06 倍で、無視して構いません。よく言われる目安は n/k40n/k \gtrsim 40 なら AICc は要らないですが、これは安全側に寄せた慣行で、両者が分かれる境目ではありません。実際に差が出るのは n/kn/k が 10 を切る辺りからです(n=150,k=8n=150, k=8 で 1.06 倍、n=20,k=15n=20, k=15 で 5 倍)。n/kn/k が 40 を下回ったら AICc も計算して、差が出るかどうかを自分で見るのが正しい使い方だと思います。

なお、この式が厳密に成り立つのは正規線形回帰(かつ nk1>0n - k - 1 > 0)のときです。一般の尤度モデルに使う場合は近似です。

効果も測りました。真の次数が3の多項式回帰で、真の次数を当てられる割合です。xU(0,4)x \sim U(0, 4)σ=0.8\sigma = 0.8、候補は0次から9次まで(nn が小さいときは n4n-4 次まで)、反復は nn が小さい順に 3000・3000・2000・1500 回です。

nnAIC 平均次数AIC 的中AICc 平均次数AICc 的中BIC 平均次数BIC 的中
155.210.1321.620.1523.900.158
254.010.3222.430.4052.580.365
603.790.6093.320.6922.820.702
2003.670.7273.560.7533.030.971

n=15n = 15 では AIC の平均次数が 5.21 と暴走しています。AICc は 1.62 に抑えますが、こちらは抑えすぎで的中率は 0.152 と大差ありません。n=15n = 15 ではどの規準も的中率が15%程度で、そもそも選べていない。 この「小標本では選べない」は最後の実務の節でもう一度出てきます。

Mallows の CpC_p

回帰専用の規準として CpC_p があります。

Cp=RSSpσ^full2n+2pC_p = \frac{\mathrm{RSS}_p}{\hat\sigma^2_{\text{full}}} - n + 2p

σ^2\hat\sigma^2 を全変数モデルから取って固定した AIC の回帰版です。いま評価しているそのモデル自身が真の平均構造を含んでいれば(バイアスがなければ)E[Cp]pE[C_p] \approx p、含んでいなければ pp より大きくなります。だから「CpC_ppp に近く、pp を大きく超えていないモデル」を選びます。σ^full2\hat\sigma^2_{\text{full}}σ2\sigma^2 の不偏推定であること、つまり全変数モデルが正しいことも前提です。n+2p-n + 2p2p2p に AIC と同じ 22 が居ることに注目してください。出どころは同じ (+k)(k)(+k) - (-k) です。

試験対策としては存在と式の形を知っていれば十分だと思っています。AIC を理解していれば導ける関係です。


BIC:変化点がいくつあるかを決める

BIC の定義は、罰則の係数だけが違います。

BIC=2logL+klogn\mathrm{BIC} = -2\log L + k\log n

22logn\log n に変わっただけ。n>e27.4n > e^2 \approx 7.4 なら logn>2\log n > 2 なので、実質どんなデータでも BIC のほうが厳しいn=150n = 150 なら log150=5.011\log 150 = 5.011 で、罰則は AIC の 2.51 倍です。

由来はまったく違います。AIC は予測誤差の推定量でしたが、BIC はモデルの事後確率から出ます。データ yy が与えられたときのモデル MM の周辺尤度 p(yM)=p(yθ,M)p(θM)dθp(y \mid M) = \int p(y \mid \theta, M)\,p(\theta \mid M)\,d\theta をラプラス近似すると、2logp(yM)2logL+klogn-2\log p(y \mid M) \approx -2\log L + k\log n になります。第33回のベイズ法で扱う周辺尤度がそのまま出てきます。

つまり AIC と BIC は「どちらが正しいか」という関係ではなく、質問が違います。

  • AIC:このモデルは新しいデータをどれだけ当てるか
  • BIC:このモデルが真のモデルである確率はどれだけか

変化点の個数を決めてみる

差が最も見やすい例を作りました。時系列に段差(変化点)がいくつあるかを決める問題です。n=150n = 150 点、真の変化点は 40 と 90 の2か所、区間ごとの平均は [0,3,1][0, 3, 1]σ=1\sigma = 1。変化点の個数 mm を 0 から 15 まで動かし、各 mm について位置の最適な組み合わせを動的計画法で厳密に求めました(総当たりだと組み合わせ数が爆発します)。

4枚のグラフ。上段左はBICが選んだモデルで、150点の時系列に真の平均(0→3→1の階段)を示す黒い破線と、緑の当てはめ線がほぼ重なり、変化点は2個。上段右はAICが選んだモデルで、赤い当てはめ線が10か所で刻まれ細かいギザギザになっている。下段左は横軸が変化点の個数0から15、縦軸がRSSのグラフで、個数を増やすほど単調に下がり続け「RSSだけ見ると変化点は増やすほど良い」ことを示す。下段右は同じ横軸にAIC(罰則2k)とBIC(罰則k log n)を重ねたグラフで、AICは個数10で星印の最小、BICは個数2で星印の最小になり「BIC最小 m=2(正解)」と注記されている

σ\sigma は既知としたので、2logL-2\log LRSS/σ2\mathrm{RSS}/\sigma^2 に定数を足したものになり、AIC は RSS/σ2+2k\mathrm{RSS}/\sigma^2 + 2k と書けます。パラメータ数は「区間ごとの平均 m+1m+1 個+変化点の位置 mm 個」で k=2m+1k = 2m+1 と数えました。位置もデータから決めているので、パラメータとして数えないと不公平になります。

まず下段左のグラフを見てください。RSS は変化点を増やすほど下がり続けます。 決定係数と同じ現象で、これだけ見ていると「変化点は多いほど良い」になってしまいます。個数を決めるには罰則が必要です。

結果です。

選んだ個数選んだ位置
真実240, 90
BIC240, 86
AIC1022, 23, 25, 40, 86, 97, 99, 129, 140, 143

BIC は真の構造をほぼ正確に取り出しました。位置も 40 は完全一致、90 に対して 86 です。AIC は 10 個の変化点を置き、うち 40 と 86 は当てていますが、残り8個はノイズに階段を合わせているだけです。

上段右のグラフを見ると、AIC の階段が細かく刻まれているのが分かります。予測の観点では、この細かい刻みは(少なくとも害にならない程度には)情報を持っています。しかし「この時系列に何が起きたのか」を人に説明したいなら、10 個の変化点は使えません。BIC が選んだ2個のほうが、明らかに「答え」です。

これが AIC と BIC を使い分ける理由です。構造を取り出したいなら BIC、予測したいなら AIC。

一つ注意を書いておきます。2k2kklognk\log n はどちらも正則条件(パラメータが定義域の内点にあり、尤度が滑らか)のもとでの漸近論から出た罰則です。変化点の「位置」は正則なパラメータではありません(整数値で、尤度が滑らかにつながらない)。変化点問題では位置1個あたりの実効的な罰則はもっと大きいことが知られていて、3logn3\log n 型の罰則が使われます。ですからここで AIC が 10 個も置いたのは、AIC の一般的な甘さだけでなく非正則性による罰則の過小も混ざった結果です。性格の対比としては分かりやすい例ですが、罰則の理論的な正当化はこの設定では成り立っていません。


AIC と BIC はどちらが「良い」のか

「BIC のほうが真のモデルを当てる」なら、常に BIC を使えばいいのでは、と思いました。そうならない理由が2つあります。

一貫性:BIC が勝つ状況

まず BIC が勝つ状況を確認します。候補は8変数の全部分集合256通り、真のモデルは x1+x2+x3x_1 + x_2 + x_3(残り5本の係数は厳密にゼロ)。真のモデルを正確に選べた割合です。

nnAIC 的中BIC 的中AIC が選びすぎた割合BIC が選びすぎた割合
300.3180.6150.6800.378
600.3670.7250.6320.275
1500.4070.8580.5930.142
4000.4430.9300.5570.070
10000.4100.9450.5900.055
40000.4250.9920.5750.008

BIC は nn を増やすと 1 に近づき、AIC は 0.42 付近で止まります。 この「nn \to \infty で真のモデルを選ぶ確率が 1 に収束する」性質を一貫性(consistency)と呼びます。BIC は一貫、AIC は非一貫です。

用語で一つ注意です。この一貫性と、次に出てくる効率性は、第10回の推定量の一致性(consistency)・効率性(efficiency)とは別の概念です。英語は同じでも、あちらは「推定値が真の値に近づくか」「分散が下限に達するか」という1つのモデルの中でのパラメータの話、こちらは「nn を増やすとモデルの選択が真のモデルに収束するか」「選んだモデルの予測誤差が最小に近づくか」という話です。同じ語で違うものを指す典型なので、混ぜないようにしてください。

AIC が止まる理由は右の2列を比べると見えます。AIC の選びすぎは 0.68 から 0.56 へわずかに下がったあと 0.57 前後で止まるのに、BIC の選びすぎは 0.378 から 0.008 まで消えていきます。 nn が増えても、AIC で余分な変数1本を入れるかどうかの判断は「χ2(1)\chi^2(1) が 2 を超えるか」という固定の勝負のままなので、確率 0.157 で入ってしまいます。この確率は nn に依存しません。BIC は罰則が logn\log n で伸びるので、対応する確率が nn とともに縮みます。

この 0.157 から、AIC が止まる高さを計算できます。偽の候補が qq 本あって、それぞれ独立に確率 0.157 で入るなら、1本も入らない確率は (10.157)q(1 - 0.157)^q です。この設定は偽の候補が5本なので 0.8435=0.4250.843^5 = 0.425、実測 0.425(n=4000n = 4000)とぴったり合います。選びすぎのほうも 10.8435=0.5751 - 0.843^5 = 0.575 で実測 0.575 です。

つまり「0.42 で止まる」は普遍的な定数ではありません。 止まる高さは候補の作り方で決まります。偽の候補が20本なら 0.84320=0.030.843^{20} = 0.03 まで落ちます。nn をいくら増やしても改善しないという性質だけが、nn に依らない部分です。

なお「不足」(真の変数を落とす)は n=60n = 60 以降どちらも 0.000 でした。外れる原因は、ほぼすべて選びすぎのほうです。

効率:AIC が勝つ状況

では BIC が常に良いのか。上の設定には「真のモデルが候補に入っていて、しかも余分な係数が厳密にゼロ」という強い仮定があります。これを崩します。

候補変数を10本にして、係数を βj=1/(j+1)1.1\beta_j = 1/(j+1)^{1.1}j=0,,9j = 0, \ldots, 9)、つまり

[1.000, 0.467, 0.299, 0.218, 0.170, 0.139, 0.118, 0.102, 0.089, 0.079][1.000,\ 0.467,\ 0.299,\ 0.218,\ 0.170,\ 0.139,\ 0.118,\ 0.102,\ 0.089,\ 0.079]

と、小さくなっていくがゼロにはならない形にしました。現実のデータはたいていこちらです。候補は x1x_1 から順に入れていくネストした11通り(s=0,,10s = 0, \ldots, 10)で、真のモデルは全部入りです。ただし10本目の係数は 0.079 しかないので、これを推定するコストが情報の利得を上回るなら、入れないほうが予測は良くなります。

nnAIC 予測MSEAIC の平均変数数BIC 予測MSEBIC の平均変数数BIC ÷ AIC
300.474575.020.444163.130.936(BIC が勝ち)
600.226095.980.247363.401.094
1500.090407.490.127594.551.411
4000.032159.120.053776.691.673
10000.011889.840.019128.791.610
40000.0024910.000.002619.971.050

n=400n = 400BIC の予測誤差は AIC の 1.67 倍です。変数数の列に原因が出ています。真は10本なのに、n=400n = 400BIC は平均 6.69 本しか使っていません。小さい係数を「ゼロだ」と切り捨てて、その情報を捨てています。AIC は 9.12 本まで拾います。この「予測誤差を(達成可能な最小に対して)最小化する」性質を効率性と呼びます。AIC は効率的、BIC は非効率です。

n=4000n = 4000 で差が 1.05 に縮むのは、nn が十分に大きいと BIC でも全部入れるようになるからです(9.97 本)。n=30n = 30 で BIC が勝つのは、データが少なすぎて、小さい係数を推定するコストのほうが情報の利得を上回るためです。「小さい係数を入れるべきか」は、nn 次第で答えが変わる。 どちらの規準が良いかという話ではなく、nn と係数の大きさの兼ね合いです。

一貫性と効率性は両立しません。 これは選び方の工夫の問題ではなく、原理的な二者択一だと知られています(Yang 2005。損失の測り方や漸近の枠組みを固定したうえでの結果です)。真のモデルを当てたいなら小さい係数を切る覚悟が要り、予測を良くしたいなら偽の変数が混ざる覚悟が要ります。

図にまとめました。

3枚のグラフ。左は設定Aの的中率で、横軸は標本サイズ30から4000の対数軸。BICの緑の線は0.615から0.992へ単調に上昇して1の点線に近づき「BICは1に収束(一貫性)」と注記される。AICの赤い線は0.318から0.443へ上がったあと0.425で横ばいになり「AICは0.42で止まる(外れは全部過剰)」と注記される。破線で描かれた過剰選択率はAICが0.68から0.57で下がらず、BICは0.378から0.008へ消えていく。中央は設定Bの予測誤差の両対数グラフで、AICとBICの2本が右下がりに並び、各nの上にBIC÷AICの比が×0.94から×1.67まで書かれている。右は設定Bで選ばれた変数の平均個数で、真の10本を示す破線に対しAICは5.02から10.00へ近づくがBICは3.13から9.97と遅れ、n=400付近で「BICは本物の信号を切り捨てている」と注記されている

使い分けはこうなります。

AICBIC
何を最小化するか新データでの予測誤差真のモデルを外す確率
罰則2k2kklognk\log nn8n \ge 8 で AIC より厳しい)
nn\to\infty の性質効率的・非一貫一貫・非効率
得意な状況係数がゼロにならず裾を引く真のモデルが候補にあり係数が厳密にゼロ
目的予測構造の同定・説明

両方を計算して、一致すれば安心、割れたら「予測なら AIC、説明なら BIC」で決めるのが実際的だと思います。上の変化点の例では、まさに割れたことが判断の材料になりました。


交差検証:理論で補正せずに実測する

もう一つの流派です。AIC は「甘く出る量」を数式で計算しましたが、交差検証(CV, Cross Validation)は実際に測ります。データを分けて、当てはめに使わなかった側で誤差を測る。第25回の判別分析で見かけの誤判別率と対比して出てきた方法です。

一個抜き(LOO, Leave-One-Out)は、ii 番目の1点だけを抜いて残り n1n-1 点で当てはめ、抜いた点を予測し、それを nn 回繰り返します。誤差の二乗和が PRESS(予測残差平方和)です。

PRESS は再計算せずに出る

nn 回当てはめ直すのは重い。ところが線形回帰では閉じた式があります。

PRESS=i=1n(ei1hii)2\mathrm{PRESS} = \sum_{i=1}^{n} \left(\frac{e_i}{1 - h_{ii}}\right)^2

eie_i は普通の残差、hiih_{ii} はてこ比です。当てはめは1回だけで、LOO の答えが完全に一致します。 確かめました。

総当たりで nn 回当てはめた LOO の誤差二乗和62.8039145111
PRESS の式62.8039145111
各点での差の最大絶対値1.6×10141.6 \times 10^{-14}

一致は浮動小数の精度いっぱいです。参考に、通常の残差平方和は 46.2818 で、PRESS はその 1.357 倍でした(下の図では 1.36 と丸めています)。この 1.357 倍が「手元のデータで測ると甘く出る」の実測値です。

分母の 1hii1 - h_{ii} の意味も見えます。てこ比が大きい点は自分の予測値を強く引っ張っているので、抜いたときのズレも大きくなる。だから残差を 1hii1-h_{ii} で割り戻して膨らませます。第17回で出てきた標準化残差と同じ発想で、割る量が違うだけです。

AIC ≒ LOO は偶然ではない

理論から補正する AIC と、実測する LOO が、しばしば同じモデルを選びます。理由は式の出どころが同じだからです。

どちらもハット行列 HH から出ています。

HH から取るもの使い方
AICtr(H)=k\operatorname{tr}(H) = k(対角の全体でまとめて 2k2k 補正する
LOO(PRESS)hiih_{ii}(対角成分そのもの点ごとに 1/(1hii)21/(1-h_{ii})^2 で補正する

AIC は「点ごとの補正を平均で代表させたもの」、LOO は「点ごとに個別にやったもの」。 hiih_{ii} がどの点でも k/nk/n に近い(てこ比が均等な)設計では、両者は一致に近づきます。実際、hii=k\sum h_{ii} = k なので平均は必ず k/nk/n です。この対応が見えたのが、この節でいちばんスッキリしたところでした。

一致率を測りました。8変数256通りの候補から選ばせ、AIC と各方法が同じモデルを選んだ割合です。

nnAIC = LOOAIC = 10-foldAIC = 5-fold
300.5930.5070.387
600.8730.6270.493
1500.8500.6500.600
4000.9500.7830.483

n=400n = 400 で AIC と LOO は 95% 一致します(60回中57回。反復が少ないので標準誤差は 2.8% あります)。いっぽう KK-fold は KK が小さいほど AIC から離れますKK-fold は n(11/K)n(1 - 1/K) 点で当てはめているので、5-fold は 0.8n0.8n 点のモデルを評価していることになり、nn 点のモデルを評価する AIC とはそもそも別のものを測っています。

KK-fold は分け方で答えが変わる

KK-fold のもう一つの弱点は再現性です。同じデータを 200 通りの分け方で 5-fold にかけたら、選ばれるモデルが 17 種類に分かれました。

方法選ばれたモデルの種類数最頻モデルの割合
5-fold CV17 種類21.0%
10-fold CV11 種類38.0%
LOO1 種類(決定的)100%
AIC1 種類(決定的)100%

最頻モデル(x1+x2+x3+x5+x8x_1+x_2+x_3+x_5+x_8)が選ばれるのは 5-fold では5回に1回しかありません。AIC と LOO は分け方の乱数を使わないので、常に同じ答えを返します(そして両者はこの例では一致していました)。

3枚のグラフ。左は横軸が総当たりでn回当てはめ直したLOO誤差、縦軸が閉じた式の値の散布図で、40点すべてがy=xの破線の上に完全に乗る。点の色はてこ比を表し、右上の大きい誤差の点ほどてこ比が高い。タイトルに最大誤差1.6e-14と書かれている。中央はてこ比の小さい順に並べた40点の棒グラフで、青い訓練の残差二乗と赤いLOO誤差が並び、緑の折れ線のてこ比が右へ上がるにつれて赤い棒が青い棒を大きく上回っていく。タイトルは訓練46.3からLOO62.8で1.36倍。右は同じデータを200通りの分け方にかけたときに選ばれたモデルの割合の棒グラフで、5-foldは最頻モデルでも21%、10-foldは38%にとどまり、AICとLOOは常に同じ1つを選ぶことを示す100%の破線が上に引かれている

中央のグラフが「甘く出る」の正体を点ごとに見せています。てこ比の小さい点では訓練の残差と LOO 誤差がほとんど同じですが、てこ比の大きい点では LOO 誤差が大きく跳ねます。 モデルが自分に引っ張られている点ほど、抜いたときのペナルティが大きい。

まとめるとこうです。

計算量再現性何を評価しているか
AIC当てはめ1回決定的nn 点で当てはめたモデル
LOO(PRESS)線形回帰なら1回決定的ほぼ nn 点のモデル
10-fold10 回分け方に依存0.9n0.9n 点のモデル
5-fold5 回分け方に強く依存0.8n0.8n 点のモデル

線形回帰なら PRESS があるので、LOO を既定値にできます。 決定的で、当てはめも1回で済む。ただし PRESS の閉じた形が使えるのは二乗誤差でハット行列が固定される線形の場合に限られますし、モデル選択の道具としての LOO は AIC と 95% 一致する、つまりAIC と同じ甘さも共有していることを忘れないほうがよいです。KK-fold の出番は、当てはめが重くて nn 回回せない場合か、PRESS のような閉じた式が無いモデル(一般化線形モデルや機械学習)です。そして KK-fold を使うなら、分け方の乱数を変えて何回か回して、答えが安定しているかを見るべきです。1回の結果だけを見て「CV で選んだ」と言うのは危ういと分かりました。


ステップワイズ法の5つの罪

ここが今回いちばん腹に落ちた節です。

ステップワイズ法は、変数を1本ずつ入れたり抜いたりして良いモデルを探す手続きです。前向き(何も入っていない状態から、最も改善する変数を1本ずつ足す)、後ろ向き(全部入れた状態から、最も要らない変数を1本ずつ抜く)、その混合があります。pp 本の変数の全部分集合は 2p2^p 通りあり、p=30p = 30 なら10億通りを超えて総当たりできません。ステップワイズはこれを O(p2)O(p^2) 回程度の当てはめで済ませます。

教科書には「批判が多い」と書いてあります。ただ理由が並べられるだけで、私はどれも「なんとなく危なそう」の域を出ませんでした。全部測ってみます。

罪1:ノイズだけのデータでも「発見」が出る

いちばん効いた実験です。yy を説明変数と完全に無関係な乱数にします。真の関係は何もありません。そこにステップワイズを回して、有意(p<0.05p < 0.05)という入り口を1本でも通った割合を測りました。

設定「有意」な変数が1本以上入った割合選ばれた変数の平均本数R2R^2自由度調整済み R2R^2
n=50n=50・候補10本0.3890.650.0530.044
n=50n=50・候補30本0.7791.650.1710.145
n=100n=100・候補30本0.7841.610.0830.069
n=200n=200・候補50本0.9112.020.0710.059

真の関係がゼロのデータで、n=200n = 200・候補50本なら10回に9回、「有意な変数」が見つかります。

私がいちばん驚いたのは自由度調整済み R2R^2 の列です。0.145 という値が出ています。 第16回で「調整済み R2R^2 は無意味な変数を入れると下がる」と学んだので、調整済みなら安全だと思っていました。違いました。

理由はこうです。調整済み R2R^2 が正しく罰するのは、変数を「あらかじめ決めて」入れた場合です。ステップワイズは R2R^2 が最も上がる変数をデータを見てから選んでいます。kk 本入れたぶんの補正はしますが、「3030 本の中から最も良い kk 本を選んだ」ことは補正していません。払っている税金が、実際に使った自由度に見合っていない。

さらに悪いのは、モデル全体の FF 検定です。この設定では、1本以上選ばれた回(全体の 77.9%)に限ると、FF 検定が p<0.05p < 0.05 になる割合は 1.000 でした。最小 pp 値の平均は 0.0136。真の関係がゼロなのに、変数が1本でも残ればモデル全体は必ず「有意」と判定されます。

ただしこの 1.000 は、半分は作りから出てくる数字です。入り口が「tt 検定で p<0.05p < 0.05」なので、残った変数が1本なら F=t2F = t^2FF 検定の pp 値は入り口の pp 値と同じものになります(平均本数 1.65 なので、そういう回が多い)。驚くべきなのは値そのものではなく、FF 検定が「選択のあとでは有意水準の意味を失う」という事実のほうです。全試行に対する偽陽性率で言えば 0.779 で、これは上の表の第2列と同じ数字です。

3枚のグラフ。左はノイズだけのデータでの決定係数の棒グラフで、4つの設定について赤いR²とオレンジの調整済みR²が並び、候補30本・n=50では0.171と0.145になる。真の値0を示す緑の破線から明らかに離れている。中央は勝者の呪いの棒グラフで、x1からx5について黒い真の絶対値、青い全変数投入時のE|b|、赤いステップワイズで選ばれたときのE|b|が並ぶ。真0.25のx3が0.513と報告され×1.84の倍率が付き、下に選択率22.9%が書かれている。右はブートストラップ300回での選択割合の棒グラフで、真の係数を持つx1・x2・x3が緑、残り9本が灰色。真の係数が最大0.5のx1が赤枠で囲まれ選択率13%しかなく、x2が84%、x3が40%で、x2との相関0.7のため「もう説明済み」と扱われる旨が注記されている

罪2:選ばれた変数の係数が過大になる(勝者の呪い)

真の係数を [1.20,0.50,0.25,0,,0][1.20, 0.50, 0.25, 0, \ldots, 0] とし、n=60n = 60・候補12本(残り9本は無関係)・σ=1.5\sigma = 1.5・4000回でステップワイズを回します。選ばれたときの係数の絶対値の平均と、選抜せず全変数を投入したときの平均を比べます。この表の倍率の分母は、真の係数ではなく「全変数投入時の EbE\vert b\vert」です。 真の係数がゼロの行でも定義できる基準がこれしかないからです(真の β=0\beta = 0 でも EbE\vert b\vert はゼロにならず、2/π\sqrt{2/\pi} 倍の標準誤差ぶんは必ず出ます)。ただしこの記事全体で分母を統一しているわけではありません。後の比較表では真の係数を分母にした倍率も使います。倍率の数字を拾うときは、そのつど分母がどちらかを確認してください。

変数真の β\vert\beta\vert全変数投入時の EbE\vert b\vert選ばれたときの EbE\vert b\vert倍率選択率
x1x_11.201.2041.2041.0099.9%
x2x_20.500.5060.6081.2068.1%
x3x_30.250.2790.5131.8422.9%
x4x_400.1770.4712.665.6%
x5x_500.1740.4752.735.6%

真の効果が 0.25 の x3x_3 が、選ばれたときには 0.513 と報告されます。 真の値と比べれば 0.513/0.25=2.050.513 / 0.25 = 2.05 倍、表の分母(全変数投入時の 0.279)と比べれば 1.84 倍です。同じ現象を2つの基準で測っているだけで、どちらも「大きく出た回だけが生き残る」ことの現れです。

仕組みは単純です。x3x_3 は22.9%しか選ばれません。では、どういうときに選ばれるのか。推定値が偶然大きく出たときです。 小さく出た回は選ばれずに消えるので、生き残った標本だけを平均すると当然大きくなります。これが勝者の呪いです。

x1x_1 は 1.00 で無傷です。ほぼ必ず選ばれる(99.9%)ので選抜のふるいがかかりません。選択率が低い変数ほど呪いが強い。 そして選択率が低いのは弱い信号の変数なので、弱い効果ほど過大に報告されるという、いちばん困る方向に歪みます。

真の効果がゼロの x4,x5x_4, x_5 でも 0.47 という値が報告されています。ゼロのものに 0.47 の効果があると書いてしまう。

罪3:pp 値と信頼区間が壊れる

罪1と罪2から自動的に出てきます。pp 値は「この変数を1つ選んで検定した」前提で計算されますが、実際には30本の中で最良だったから選ばれています。 信頼区間も、係数自体が過大なので、真の値を含む確率が名目の95%を大きく下回ります。

罪4:わずかなデータの変化で結果が激変する

n=60n = 60、候補12本、説明変数間の相関は AR 型(隣り合うペアが 0.7 で、corr(xi,xj)=0.7ij\operatorname{corr}(x_i, x_j) = 0.7^{\vert i-j \vert}x1x_1x3x_3 は 0.49)、真の係数 [0.5,0.4,0.35,0,][0.5, 0.4, 0.35, 0, \ldots] の設定です。まず1点だけ差し替えるnn 点のうち1点を新しい観測に置き換える)と何が起きるか。

撹乱の方法選ばれたモデルの種類数最頻モデルの割合
1点だけ差し替え2 種類x2x_2 が 96.7%
ブートストラップ再標本65 種類x2x_2 が 37.7%

1点の差し替えなら 96.7% 安定しています。ところがブートストラップ(同じ大きさの再標本)にすると 65 種類のモデルが出てきます。 元のデータで選ばれたのは x2x_2 の1本だけでしたが、その答えは37.7%しか再現しません。「このデータからはこの変数が選ばれた」という結論が、データの取り方の偶然にほとんど支配されています。

しかもここには罪4より深刻な問題が混ざっています。変数ごとの選択率を見てください。

変数真の係数ブートストラップでの選択率
x1x_10.50(最大)0.13
x2x_20.400.84
x3x_30.350.40
x4x12x_4 \sim x_{12}00.04〜0.07

真の効果が最も大きい x1x_1 が、13%しか選ばれていません。 x2x_2(真 0.40)が 84% です。順序が逆転しています。

原因は x1x_1x2x_2 の相関 0.7 です。x2x_2 が先に入ると、x1x_1 の情報の大半は「もう説明済み」になり、追加の改善が小さくなって入らない。

ここで「たまたま x2x_2 が先に入ったから」と書きかけて、確かめてやめました。偶然ではありません。 前向き選択の第1段が見ているのは yy との周辺相関で、この設定では x1x_1 が 0.514、x2x_20.537 です。x2x_2 は自分の 0.40 に加えて、隣の x1x_1(0.50)と x3x_3(0.35)の両方から相関を通じて貸しを受けているので、周辺では x1x_1 を上回ります。だから 84% という高い率で先に入る。真の係数の順序と周辺相関の順序は、説明変数が相関していれば平気で入れ替わります。 ステップワイズが返すのは「効いている変数」ではなく「周辺相関がいちばん大きい変数」です。第16回の VIF(分散拡大係数)で見た多重共線性が、ここで別の顔を出します。

罪5:貪欲な探索なので最良を見逃す

これは他の4つとは種類が違う、素直な計算上の限界です。候補10本(全部分集合 1024 通り)で、ステップワイズの答えと総当たりの AIC 最小モデルを比べました。n=50n = 50、真は x1,x2,x3x_1, x_2, x_3、400回。

総当たりの AIC 最小モデルと一致した割合0.365
ステップワイズの AIC - 最良の AIC(平均)1.02
同(最悪の回)9.16

一致は3回に1回強です。「貪欲だから最良を外す」の証拠だ、と書きかけました。ここで実験の作りに問題があることに気づきました。 この比較では2つのものが同時に変わっています。探索の仕方(貪欲な前向き選択か総当たりか)と、入り口の基準p<0.05p < 0.05 か AIC か)です。p<0.05p < 0.05t2>3.84t^2 > 3.84、AIC は t2>2t^2 > 2 相当(Δk=1\Delta k = 1)なので、そもそも別の門を通しています。

そこで、探索の仕方だけを変えて測り直しました。貪欲な前向き選択のまま、入り口の判定を「p<0.05p < 0.05」から「AIC が下がるなら追加」に差し替えます。

前向きステップワイズの入り口総当たりとの一致AIC の超過(平均)最悪
p<0.05p < 0.05(上の実験)0.3451.08811.76
AIC(同じ貪欲探索)0.9500.0200.98

(上の表と数字が少し違うのは、乱数の系列が別だからです。設計は同じで、一致率は 0.365 と 0.345、超過の平均は 1.02 と 1.088、最悪は 9.16 と 11.76。走りごとにこの程度は動くので、下の比較は小数第2位まで読まないでください。)

貪欲であること自体のコストは、ほとんどゼロでした。 一致 95%、AIC の超過は平均 0.020。つまり 0.365 という数字が示していたのは「貪欲さの害」ではなく、p<0.05p < 0.05 という門は AIC の門と違う」という罪1・罪2と同じ話でした。

罪5として残るのは、正しくは「貪欲探索は 5% 前後の回で総当たりの最良を外す。ただし超過は ΔAIC\Delta\mathrm{AIC} で 1 未満で、実害はほぼない」という控えめな主張です。最悪の回でも 0.98 で、ΔAIC<2\Delta\mathrm{AIC} < 2 の「区別できない」範囲に収まっています。

ボンフェローニで直るのか

罪1(ノイズから発見が出る)は多重比較の問題に見えます。なら第20回のボンフェローニ法で、有意水準を候補数で割ればいいのでは。α=0.05/30\alpha = 0.05/30 でやってみました。n=60n = 60・候補30本・3000回の別の実験です。真の係数は [1.20,0.50,0.25,0,,0][1.20, 0.50, 0.25, 0, \ldots, 0] で、罪1の実験(yy が完全な乱数)とは違い、ここには本物の信号が3本あります。 そのうえで「真の係数がゼロの27本のうち1本以上を選んでしまった割合」を測ります。罪1の表の 0.779 とは測っている量が別なので、直接は比べられません。

素の α=0.05\alpha=0.05ボンフェローニ α=0.05/30\alpha=0.05/30
真の係数が 0 の変数を1本以上選んだ割合(罪1)0.7500.047
選ばれた変数の平均本数3.401.28
x2x_2(真 0.50)の選択率0.6490.223
x2x_2 の誇張倍率(罪2)1.221.49
x3x_3(真 0.25)の選択率0.2230.019
x3x_3 の誇張倍率(罪2)2.092.84

(この表の誇張倍率だけは、分母が真の β\beta です。罪2の表は分母が全変数投入時の EbE\vert b\vertしかも候補が 30 本と 12 本で別の実験です。そのため同じ x3x_3 の誇張倍率が記事の中で3つの値を持ちます。候補30本・÷真の β\beta2.090.524/0.250.524/0.25)、候補12本・÷真の β\beta2.050.513/0.250.513/0.25、あとの手法比較で使う値)、候補12本・÷全変数投入時が 1.840.513/0.2790.513/0.279)。分母か実験のどちらかが違うので、この3つの大小は比べないでください。なお表の中に 0.223 が2回出ますが転記ミスではなく、x3x_3 の素の選択率と x2x_2 のボンフェローニ下の選択率が偶然一致しています。)

罪1はきれいに直りました。 0.750 が 0.047 で、狙いどおり5%です。

そして罪2は悪化しました。 x3x_3 の誇張が 2.09 倍から 2.84 倍へ。しかも x3x_3 の選択率が 0.223 から 0.019 に落ちています。真に効いている変数を、50回に1回しか見つけられない。検出力を捨てて偽陽性を買い戻したことになります。

理由は罪2の仕組みそのものです。縮小をしない手法のあいだでは、呪いの強さは門の狭さで決まります(縮小を入れると話が変わることは、あとの節で見ます)。門を狭くすれば、通れるのは「よほど大きく出た回」だけになり、生き残った推定値はますます過大になる。罪1と罪2は同じつまみの両端で、片方を締めるともう片方が緩みます。

これは私にとって予想外でした。多重比較の補正は「正しい対処」だと思っていたので、それが別の歪みを増やすというのは考えていませんでした。

5つの罪の構造:3つの種類に分かれる

全部測ってみて、構造が見えました。5つは同じ種類の問題ではありません。 ここは最初「4つは選択後推論の問題、1つは探索の問題」と2分類で書いたのですが、それだと自分の実測と合わないことに気づいて3分類に直しました。

何の問題か予測にも効くか
1. ノイズから発見が出る選んだあとに検定した効かない
3. pp 値・信頼区間が壊れる選んだあとに推論した効かない
2. 係数が過大になる選抜によるバイアス効く(膨らんだ係数がそのまま予測式に入る)
4. データが少し変わると激変する選択のバリアンス効く
5. 貪欲探索で最良を見逃す探索アルゴリズムの限界ほぼ効かない(超過は平均 0.02)

罪1と罪3は「選択後推論(post-selection inference)」の問題で、同じデータで「選ぶ」と「推論する」の両方をやったことが原因です。予測に使うだけなら害になりません。

罪2と罪4はそうではありません。 選抜で膨らんだ係数はそのまま予測式に入るので予測を上に外し、選択の不安定さは予測誤差のバリアンス成分そのものです。これが「予測にも効く」と分かる根拠は、この記事の後半にあります。そもそも 0/1 で選ぶのをやめて赤池ウェイトで平均化するだけで、予測誤差が 6.7〜23% 改善します。 これは「0/1 で選ぶこと自体に予測上の値段がある」ことの直接の証拠です(ステップワイズ固有の罪2・罪4がそれぞれどれだけ効いているかを分離したわけではありません。平均化は縮小とバリアンス低減を同時にやるので、内訳はこの実験からは出ません)。罪2に効く対処が「縮小」(ラッソが呪いを打ち消す)、罪4に効く対処が「平均化」という対応も、ここから素直に出てきます。

この整理ができると、対処法も決まります。

  • 予測が目的なら、罪1と罪3は無視してよい。 報告した数値の解釈の話なので、予測誤差には効きません。ただし罪2・罪4は残るので、縮小(ラッソ)か平均化(赤池ウェイト)を検討する価値があります。罪5(貪欲さ)は実質ほぼ効きません。
  • 推論したいなら、データを分ける。 選ぶのに使ったデータと、係数や pp 値を出すデータを別にする。これが唯一素直な解です。
  • 選ばれた変数リストを「発見」として報告するのは避ける。 どうしても報告するなら、ブートストラップでの選択率を併記する。上の表で x1x_1 が 13% と分かれば、「x2x_2 が選ばれた」を結論にはできません。

ここで AIC と検定の共通の限界も見えます。選択と推論を同じデータで両方やることはできない。 これは AIC の欠陥でもステップワイズの欠陥でもなく、データを二重に使うことの帰結です。


正則化を変数選択として見る

第19回でラッソとリッジを扱いました。あのときは「係数を縮める方法」として見ていましたが、変数選択の道具としても見られます。ここで両者の違いが決定的になります。

罰則係数がちょうど 0 になるか変数選択に使えるか
リッジ回帰(L2L_2λβj2\lambda\sum \beta_j^2ならない(限りなく近づくだけ)使えない
ラッソ回帰(L1L_1λβj\lambda\sum \vert\beta_j\vertなる使える

覚え方はこうです。絶対値は原点で折れている。その折れがゼロを作る。 二乗は原点で微分がゼロになるので、解をゼロに留める力がありません。第19回で見た L1L_1 の菱形の角が座標軸に触れる図が、そのままこの表の内容です。

リッジ回帰は変数選択の手法ではありません。 私はここを曖昧にしていました。「正則化=変数を減らす」と一括りにしていたのですが、減らせるのはラッソだけです。

ステップワイズとラッソは「逆向きに」失敗する

同じデータでステップワイズとラッソを比べます。n=60n = 60、候補12本、ρ=0.7\rho = 0.7、ブートストラップ300回。

ステップワイズラッソ(λ\lambda は交差検証で決定)
元データでの答えx2x_2 のみx1+x2+x3x_1 + x_2 + x_3λ=0.2096\lambda = 0.2096
選んだ変数の平均本数1.925.87
x1x_1(真 0.50)の選択率0.110.68
x2x_2(真 0.40)の選択率0.840.97
x3x_3(真 0.35)の選択率0.400.87
偽の変数(真 0)の選択率0.01〜0.120.28〜0.54

元データではラッソが真の3本をちゃんと当てています。 ステップワイズは x2x_2 の1本だけでした。ブートストラップでも、ラッソは真の変数の選択率が 0.68〜0.97 と高い。x1x_1 の 0.11 対 0.68 は決定的な差です。

理由を「ラッソは相関のある変数の両方に係数を分けて持たせるから」と書きかけて、調べ直してやめました。係数を分け合うのはリッジ(L2L_2)の性質で、ラッソは相関ペアの一方だけを選ぶ傾向があると知られています。 ここで x1x_1 が拾えている主因は次に書く λ\lambda の緩さです。平均 5.87 本も入れているので、真の変数も一緒に入ってくる。門が緩いから拾えているのであって、相関の扱いが賢いからではありません。

そのかわりラッソは偽の変数も 0.28〜0.54 で入れてきます。 ステップワイズは 0.01〜0.12 でした。平均本数 5.87 対 1.92 という差がそれです。

原因は λ\lambda の決め方です。交差検証は予測誤差が最小になる λ\lambda を選びます。予測に良い λ\lambda は、正しい変数集合を選ぶ λ\lambda より小さい(罰則が弱い)ことが知られています。予測のために選んだ λ\lambda で変数リストを作れば、余分が混ざるのは当然です。

失敗の方向が正反対です。 ステップワイズは本物を落とし、ラッソは偽物を混ぜる。どちらが良いかは目的次第で、「効いている変数のリストが欲しい」という目的にはどちらも向いていません。

(この節の選択率とひとつ前の節のブートストラップの数値は、独立に走らせた別のシード・別の300回の結果です。x1x_1 の選択率が 0.13 と 0.11、ステップワイズのモデル種類数が 65 と 64 で少し違うのはそのためで、設計は同じです。)

呪いの強さを決めるのは「門の狭さ」と「縮小の有無」

勝者の呪いを、ステップワイズ・リラックス・ラッソ(ラッソで選んだ集合を最小二乗で再当てはめ)・ラッソの3つで比べました。n=60n = 60・候補12本・400回です。報告される EbE\vert b\vert を基準値で割った比です。真の β0\beta \neq 0 の行は分母が真の β\beta で、1.00 が正しい大きさ。真の β=0\beta = 0 の行は分母が全変数投入時の EbE\vert b\vert で、こちらの 1.00 は「正しい大きさ」ではなく「選抜しなかった場合と同じ」という意味です(ゼロで割れないため)。

変数真の β\betaステップワイズリラックス・ラッソラッソ
x1x_11.201.011.000.83
x2x_20.501.221.070.71
x3x_30.252.051.520.84
x4x_402.671.650.76
x5x_502.981.680.81

x3x_3 の行で並べると、ボンフェローニ付きステップワイズ 2.84 > 素のステップワイズ 2.05 > リラックス・ラッソ 1.52 > ラッソ 0.84 です(ボンフェローニの 2.84 は候補30本の別実験なので、傾向の比較として見てください)。

これを最初「門の狭さの順序と一致する」と1本の軸で説明しようとして、失敗しました。リラックス・ラッソとラッソは、同じ λ\lambda で選んだ同じ変数集合を使っています。門はまったく同じです。 それでも 1.52 と 0.84 に分かれる。門では説明できません。

軸は2本あります。

効き方証拠
門の狭さ狭いほど呪いが強いボンフェローニ 2.84 > 素のステップワイズ 2.05 > ラッソの門 1.52(いずれも縮小なし。ただし 2.84 は候補30本の別実験で、あとの2つが候補12本)
縮小の有無縮小すると打ち消される同じ門で 1.52(再当てはめ)→ 0.84(縮小あり)

1本目はボンフェローニの節で見たとおりです。2本目が新しく、選抜のあとで全員を縮めれば膨らんだぶんが差し引かれる、という話です。

ラッソだけが 1 を下回っています(0.71〜0.84)。 過大でなく過小です。過大に報告するより過小に報告するほうが安全側なので、これは望ましい性質ですが、その理由は門ではなく縮小です。

ただし「安全側」と言えるのは真の効果がある3本の行に限った話です。x4x_4x5x_5 は真の β\beta が 0 なので、この行の 1.00 は「正しい大きさ」ではなく「選抜しなかった場合の基準」でしかありません。ラッソの 0.76 も、ゼロであるべきものに値を付けていることは変わりません(選択率 0.32)。比が小さいことは、その意味では慰めになりません。

ここで軸が一本通ります。問題の発生源は「データを見て 0 か 1 で選ぶ」という操作そのものです。

  • ステップワイズは 0/1 で選んで、そのまま報告する → 呪いが最大
  • ラッソは 0/1 で選ぶが、全員を縮める → 呪いが打ち消される
  • 最後の節に出てくる赤池ウェイトによる平均化は、そもそも 0/1 で選ばない → 呪いが起きない

2枚のグラフ。左は横軸にx1(真1.20)からx5(真0)の5変数、縦軸が報告される係数の絶対値÷基準値。基準値は左3本が真の絶対値、右2本は真のβがゼロなので全変数投入時のE|b|で、図中にも「x4・x5は真のβ=0なので分母が別」と注記されている。1.00を示す緑の破線に対し、赤いステップワイズの棒は1.01・1.22・2.05・2.67・2.98と右へ伸び「↑誇張(危険)」と注記される。オレンジのリラックス・ラッソは1.00・1.07・1.52・1.65・1.68で中間。青いラッソは0.83・0.71・0.84・0.76・0.81ですべて1を下回り「↓控えめ(安全側)」と注記される。右は同じ5変数の選択率で、真の効果がある左3本と効果のない右2本が点線で仕切られる。ステップワイズは1.00・0.64・0.23・0.05・0.06で本物のx3を拾えず、ラッソは1.00・0.83・0.52・0.32・0.32で本物は拾うが偽物も3割入れている

この図の3手法の比較は同じ設定(n=60n = 60・候補12本・σ=1.5\sigma = 1.5)を 400 回、罪2の節の表(誇張倍率と選択率の表)は 4000 回で、別の走りです。x3x_3 の選択率が 0.23 と 22.9% のようにわずかにずれているのは、真の値が違うからではなく、別の乱数で走らせた誤差です(400回のほうが誤差は大きい)。


AIC は検定ではない

最後の山場です。AIC でモデルを比べるのと、尤度比検定でモデルを比べるのは何が違うのか。 私はこの2つが頭の中で分離できていませんでした。

式を並べると同じものだった

モデル M1M_1(パラメータ k1k_1)に変数を足したモデル M2M_2k2=k1+Δkk_2 = k_1 + \Delta k)を考えます。ネストしています。

AIC で M2M_2 を選ぶ条件AIC2<AIC1\mathrm{AIC}_2 < \mathrm{AIC}_1、つまり

2logL2+2k2<2logL1+2k1        2(logL2logL1)尤度比検定統計量 Λ>2Δk-2\log L_2 + 2k_2 < -2\log L_1 + 2k_1 \;\;\Longleftrightarrow\;\; \underbrace{2(\log L_2 - \log L_1)}_{\text{尤度比検定統計量 }\Lambda} > 2\Delta k

尤度比検定で M1M_1 を棄却する条件第12回より

Λ>χ0.952(Δk)\Lambda > \chi^2_{0.95}(\Delta k)

統計量はまったく同じ Λ\Lambda、帰無分布も同じ χ2(Δk)\chi^2(\Delta k)。違うのは棄却限界の位置だけです。 AIC は 2Δk2\Delta k、尤度比検定は χ0.952(Δk)\chi^2_{0.95}(\Delta k)

これが見えたときは驚きました。AIC は、棄却限界を 2Δk2\Delta k に取り替えた尤度比検定です。

AIC に対応する有意水準を逆算する

限界が決まれば、有意水準が逆算できます。α=P(χ2(Δk)>2Δk)\alpha = P(\chi^2(\Delta k) > 2\Delta k) です。

Δk\Delta kAIC の限界 2Δk2\Delta kχ0.952\chi^2_{0.95}AIC に対応する α\alphaどちらが厳しいか
123.8410.1573AIC が甘い
245.9910.1353AIC が甘い
367.8150.1116AIC が甘い
51011.0700.0752AIC が甘い
71414.0670.0512ほぼ一致(まだわずかに甘い)
81615.5070.0424AIC が厳しい(逆転)
102018.3070.0293AIC が厳しい
204031.4100.0050AIC が厳しい

「AIC は甘い」という定説は、Δk=1\Delta k = 1 の 0.157 から来ています。5%より3倍甘い。だから AIC は変数を入れすぎる。ここまでは知っていた話です。

ところが Δk\Delta k を増やしていくと甘さは消え、Δk=8\Delta k = 8 から先は AIC のほうが厳しくなります。 厳密に 2Δk=χ0.952(Δk)2\Delta k = \chi^2_{0.95}(\Delta k) を解くと Δk=7.12\Delta k = 7.12 なので、Δk=7\Delta k = 7 ではまだ 0.0512 でわずかに甘く、逆転する最初の整数は Δk=8\Delta k = 8(0.0424)です。Δk=20\Delta k = 20 なら AIC は 0.5% 水準の検定に相当します。

理由は χ2\chi^2 分布の形から出ます。χ2(Δk)\chi^2(\Delta k) の平均は Δk\Delta k、標準偏差は 2Δk\sqrt{2\Delta k} です。AIC の限界 2Δk2\Delta k は平均から

2ΔkΔk2Δk=Δk2\frac{2\Delta k - \Delta k}{\sqrt{2\Delta k}} = \sqrt{\frac{\Delta k}{2}}

だけ離れています。Δk\Delta k が増えるとこの距離が Δk/2\sqrt{\Delta k/2} で広がっていきます。 いっぽう5%点は、Δk\Delta k をどう変えても平均からほぼ一定の距離にとどまります。

Δk\Delta kAIC の限界の位置 Δk/2\sqrt{\Delta k/2}5%点の位置(標準偏差の単位)
10.7072.009
31.2251.966
51.5811.920
71.8711.889
82.0001.877
102.2361.858
203.1621.804

Δk=7\Delta k = 788 のあいだでこの2つがすれ違います。 左の列は Δk/2\sqrt{\Delta k/2} で伸びていくのに、右の列は 2.0 から 1.8 へゆっくり下がるだけ。動くものと動かないものが交差する地点が Δk=7.12\Delta k = 7.12 です。 交点の位置は、この2列を見れば χ2\chi^2 分布の形だけから決まっていると分かります。

「AIC は甘い」は、1変数ずつ比べるときの話です。 変数を8本まとめて足すかどうかを AIC で判断すると、5%検定より厳しい判断になります。

BIC は「nn とともに厳しくなる検定」

同じ計算を BIC でやると、一貫性の正体が見えます。BIC の限界は Δklogn\Delta k \log n なので、Δk=1\Delta k = 1 なら α=P(χ2(1)>logn)\alpha = P(\chi^2(1) > \log n) です。

nnlogn\log nBIC に対応する α\alpha
102.3030.12916
303.4010.06515
1004.6050.03188
10006.9080.00858
10410^49.2100.00241
10610^613.8160.00020

BIC は有意水準が nn とともにゼロへ縮む検定です。 n=106n = 10^6 なら 0.02% 水準。これが「nn\to\infty で偽の変数を入れる確率がゼロになる」=一貫性の正体でした。AIC は 0.157 で固定なので、いくら nn を増やしても 0.157 で偽の変数を入れ続ける。前に見た「AIC の過剰選択率が減らない」の理由がこれです。

3枚のグラフ。左はχ²(1)の確率密度曲線で、横軸2の位置にAICの限界を示す青い縦線が引かれ右側の面積0.157が青く塗られ、横軸3.841の位置に尤度比検定の限界を示す赤い縦線が引かれ右側の面積0.05が濃く塗られる。統計量と帰無分布は同じで棄却限界の位置だけが違うことを示す。中央は横軸Δk1から30、縦軸を対数にしたAICに対応する有意水準の折れ線で、0.157から単調に下がり続け、0.05を示す赤い水平破線を7と8のあいだで下向きに横切る。Δk=8の点に「Δk=8で0.042、ここから先はAICのほうが厳しい」と注記される。右は横軸が標本サイズ10から10⁶の対数軸で、BICに対応するαの緑の線がn=30の0.065、100の0.032、1000の0.009、10000の0.002と下がり続け、AICの0.157とLRTの0.05はどちらも水平な直線のままで、BICだけがnとともに厳しくなることを示す

それでも「同じもの」ではない:3つの本質的な違い

限界の位置しか違わないなら、AIC は検定の言い換えなのか。違います。3つの本質的な差があります。

① 尤度比検定は非対称、AIC は対称。

検定は H0H_0 を特別扱いします。H0H_0 が真のとき誤って棄却する確率だけを α\alpha に抑え、H1H_1 が真のときに見逃す確率(第2種の誤り)は制御しません。だから結論は「棄却する/できない」で、「H0H_0 を採択した」とは言いません。

AIC は2つのモデルを対等に扱います。値が小さいほうを選ぶ。H0H_0 側を特別扱いしない」という点が決定的に違います。ここで「AIC には保守性がない」と書きかけたのですが、それは行き過ぎでした。罰則 2Δk2\Delta k は正の閾値なので、当てはまりが同じなら AIC は必ず単純なほうを選びます。 単純側への寄りはある。それが5%検定より弱い(Δk\Delta k が小さいうちは α=0.157\alpha = 0.157 相当)だけです。

② 検定は入れ子の2モデルしか比べられない、AIC は制限がない。

尤度比検定は M1M2M_1 \subset M_2 という入れ子関係を要求します。Λ\Lambda の帰無分布が χ2\chi^2 になる根拠がそこにあるからです。3つ以上のモデルを一度に順位づけることもできません(やれば多重比較になります)。

AIC は差を取るだけなので、入れ子でないモデルも比べられ、いくつでも順位づけられます。 「対数正規分布とガンマ分布のどちらが当てはまるか」のような比較は検定ではやりにくく、AIC なら普通にできます。ただし条件が1つあります。同じ観測値 yy に対して、同じ測度の上の密度で尤度を計算すること。 logy\log y の正規密度と yy のガンマ密度を比べると、変数変換のヤコビアンのぶんだけずれて無意味な比較になります。前に見た256通りの部分集合の順位づけも、検定ではできません。

③ 答えている質問が違う。

尤度比検定AIC
質問この差は偶然で説明できるか新しいデータをどれだけ外すか
基準の由来第1種の誤りを α\alpha に抑える予測誤差の(漸近的に)不偏な推定
出力棄却する/できない(2値)各モデルのスコア(順位と差の大きさ)
モデルの扱いH0H_0 を特別扱い対等
比較対象入れ子の2つ制限なし・何個でも
nn を増やすとpp 値が 0 に張り付き情報量が消える差の大きさ(Δ\DeltaAIC)を返し続ける

最後の行は、書き直した行です。最初は「検定は nn を増やせばどんなに小さな効果でも有意になるが、AIC の判定基準は変わらない」と書きました。間違いです。 上の式のとおり統計量は同じ Λ\Lambda で、β0\beta \neq 0 なら Λ\Lambdann に比例して増えます。棄却限界 2Δk2\Delta knn に依らない固定値なので、AIC も nn を大きくすればどんなに小さい効果でも必ず採用します。

実際、この記事の効率性の実験で β10=0.079\beta_{10} = 0.079 という極小の係数を、AIC は n=4000n = 4000 で平均 10.00 本、つまり毎回採用していました。自分が載せた表が、自分の主張を否定していました。

正しい差はこうです。nn を増やすと検定の pp 値は 0 に張り付いて、有意かどうかという出力から情報が消えます。AIC は「予測がどれだけ改善するか」を Δ\DeltaAIC という量で返し続けるので、「効果はあるが ΔAIC\Delta\mathrm{AIC} は 3 しかない」という判断ができます。 採用するかどうかの境目が動かない点は同じで、違うのは出力が2値かスコアかです。

そして共通の限界も明確です。どちらも、候補に無いモデルは選べません。 AIC は「与えられた候補の中でいちばんマシなもの」を返すだけで、全部が的外れでも何も教えてくれません。AIC が小さいことは、そのモデルが正しいことの証明ではありません。


実務での使いどころ

道具は揃いました。では実際にデータを前にしたとき、何をどう使うのか。ここも測って決めます。

真の係数を [0.8,0.5,0.3,0,0,0][0.8, 0.5, 0.3, 0, 0, 0]σ=1.5\sigma = 1.5、候補6本の全64部分集合という設定で、nn を 24 / 60 / 200 と変えました。比較対象には「真のモデルを知っていた場合」(達成可能な下限)と、「何も選ばず全部入れた場合」「切片だけの場合」(何もしない場合)を入れます。

まず、小さいデータでは選べない

nnAIC 的中AICc 的中BIC 的中当てずっぽう
240.0910.0600.0591/64 = 0.016
600.2630.2620.1740.016
2000.5350.5560.6400.016

n=24n = 24 での的中率は 6〜9%。当てずっぽう(1.6%)よりは高いですが、10回に9回は外します。 この規模のデータで「AIC でこのモデルを選びました」と言っても、それは実質的に何も選んでいません。

予測誤差で見ると、もっとはっきりします。

nn真のモデルAICBIC全変数投入切片のみ
241.001.951.932.082.29
601.001.771.981.805.96
2001.001.531.641.7320.59

n=24n = 24 で、AIC で選んだモデル(1.95)は、何も考えず全変数を突っ込んだモデル(2.08)より 6% しか良くありません。 選ぶ苦労の見返りがこれです。n=60n = 60 では BIC(1.98)が全変数投入(1.80)に負けています

AIC が全変数投入をどれだけ上回るかを並べると、n=24n = 24 で 6.3%、n=60n = 601.7%n=200n = 200 で 11.6% です。ここで「nn が増えるほど選ぶ価値が出る」と書きたくなったのですが、3点のうち真ん中でいちばん小さくなっているので、そう言えません。 表から言えるのは「小標本では選択の見返りが小さい」までです。n=24n = 24 でも AIC は全変数投入に勝っているので、「小さいデータでは全部入れたほうが安全」とも言えません。

もう一つ。どの nn でも「真のモデルを知っていた場合」の 1.5〜2.1 倍の誤差が残っています。 候補の中に正解が入っていて、64通り全部を調べても、真のモデルの2倍の誤差です。「どのモデルか分からない」というだけで、これだけのコストがかかる。 これは選び方が悪いのではなく、選ぶという行為の値段です。あとで出てくる平均化(1.43〜1.56)でも、この値段は 1.4 倍ぶんは残ります。

ΔAIC<2\Delta\mathrm{AIC} < 2 は「区別できない」

同点がどれだけ出るかも測りました。AIC 最小のモデルから ΔAIC<2\Delta\mathrm{AIC} < 2 に入るモデルの個数です。

nnΔAIC<2\Delta\mathrm{AIC} < 2 のモデル数(64通り中)
247.8
606.3
2004.8

n=24n = 24 では平均 7.8 個が同点です。「AIC 最小のモデル」は、8個の候補の中から偶然1位になったものにすぎません。

なぜ境目が 2 なのか。慣行の由来は、次に出てくる赤池ウェイトの比です。ΔAIC=2\Delta\mathrm{AIC} = 2exp(2/2)=e10.37\exp(-2/2) = e^{-1} \approx 0.37、つまり相対的な重みが約 0.37 以上あるなら(証拠比が 2.7 倍以内なら)区別しないという線引きです。

そのうえで、覚えやすい読み方もできます。パラメータ1個の罰則がちょうど 2 なので、ΔAIC=2\Delta\mathrm{AIC} = 2 は「当てはまりがまったく同じで、パラメータが1個違う」場合の差です。それより小さい差は、パラメータ1個ぶんの重みにも届いていない。22 という数字を覚えるのではなく、罰則 2k2k22 と同じ 2 だと思えば忘れません(由来は上の証拠比のほうで、こちらは結果的に整合する解釈です)。

選ばない選択肢:赤池ウェイト

「同点が8個ある」なら、1個選ぶのをやめて全部使えばよい。赤池ウェイトです。

wi=exp(ΔAICi/2)jexp(ΔAICj/2),ΔAICi=AICiminjAICjw_i = \frac{\exp(-\Delta \mathrm{AIC}_i / 2)}{\sum_j \exp(-\Delta \mathrm{AIC}_j / 2)}, \qquad \Delta\mathrm{AIC}_i = \mathrm{AIC}_i - \min_j \mathrm{AIC}_j

Δ/2-\Delta/2/2/2 は、2logL-2\log L2-2 を打ち消して尤度のスケールに戻す操作です。wiw_i は「このモデルが最良である相対的な重み」として読めます。予測は iwiy^i\sum_i w_i \hat y_i と重みつき平均にします。

結果です。予測誤差は上の表と同じ基準(真のモデルを知っていた場合を 1.00)で測っています。

nn平均化AIC で1個選ぶ
241.511.9523% 改善
601.561.7712% 改善
2001.431.536.7% 改善

3つの nn すべてで、平均化が「1個選ぶ」に勝ちました。 しかも nn が小さいほど差が大きい。同点が多いときこそ、1個に絞るのが損だということです。

これで軸が完成します。「データを見て 0 か 1 で選ぶ」という操作がコストの発生源でした。この節の平均化は、その操作をやめた3番目の例です。

手法0/1 で選ぶか結果
ステップワイズ選んで、そのまま報告する勝者の呪いが最大(真 0.25 の変数で 2.05 倍)
ラッソ選ぶが、全員を縮める呪いが打ち消される(同じ変数で 0.84 倍)
赤池ウェイト平均化選ばない予測誤差が改善(6.7〜23%)

目的で道具が決まる

以上を踏まえた使い分けです。

目的使う道具注意
予測したいAIC、または交差検証選んだ変数リストを「発見」として語らない。n/kn/k が小さいときは AICc も併記する(効き方は小さい。予測誤差の比は n=24n = 24 で AIC 1.95・AICc 1.90、n=60n = 60 では 1.77・1.79 と逆転する。的中率では n=24n = 24 で AICc 0.060 < AIC 0.091)
構造を同定したいBIC予測は AIC より劣る。真のモデルが候補にある前提
効いている変数を列挙したいどれも向かないステップワイズもラッソも失敗する。事前知識と実験で決める
係数や pp 値を報告したい選択に使っていない別データで推定する同じデータで選択と推論はできない

最後に、実際に手を動かすときのチェックリストにします。

  1. 目的を先に決める。 予測か説明か。ここが決まらないと AIC と BIC のどちらを見るかも決まらない。
  2. AIC と BIC の両方を出す。 一致すれば安心。割れたら、割れたこと自体が「小さい効果の変数がある」という情報。
  3. n/kn/k を確認する。 40 を下回るなら AICc も計算して差を見る(実際に効いてくるのは 10 を切る辺りから)。
  4. ΔAIC<2\Delta\mathrm{AIC} < 2 のモデルを数える。 何個も同点なら「1つ選んだ」と言わない。
  5. 予測が目的なら、赤池ウェイトで平均化を検討する。 1個選ぶより良くなることが多い。
  6. 選んだ変数を報告するなら、ブートストラップでの選択率を併記する。 13% しか選ばれない変数を「発見」と呼ばないために。
  7. pp 値や信頼区間を出すなら、選択に使ったデータとは別のデータで出す。

3枚のグラフ。左は標本サイズ24・60・200について真のモデルを当てた割合を示す3色の棒グラフで、AIC・AICc・BICが並び、n=24では0.091・0.060・0.059と低く、n=200では0.535・0.556・0.640まで上がる。当てずっぽうの1/64を示す点線が下部に引かれている。中央は同じ3つの標本サイズについて、真のモデルを知っていた場合を1.00とする予測誤差の比を5系列の棒グラフで示す。平均化・AIC・AICc・BIC・全変数投入が並び、緑の破線が1.00の位置に引かれる。n=24では平均化1.51が最も低く全変数2.08が最も高い。n=60ではBIC1.98が全変数1.80より悪い。右はΔAIC<2に入るモデルの平均個数で、64通り中n=24で7.8個、n=60で6.3個、n=200で4.8個と減っていく

そして、この道具立てでできないことをはっきり書いておきます。

  • 候補に無いモデルは選べない。 全部が的外れでも AIC は何も警告しません。良い候補を作るのは統計ではなく、対象についての知識の仕事です。
  • AIC が小さいことは正しさの証明ではない。 「相対的にマシ」しか言っていません。残差の診断(第17回)は別途必要です。
  • 因果関係は出ません。 予測が良いモデルと、介入の効果を表すモデルは別物です。
  • 選択と推論を同じデータで両方やることはできない。 これが最も重要な制約だと思います。

自分が間違えていたこと

1. 2k2k222logL-2\log L2-2 と結びつけていた

2logL-2\log L2k2k を足す。どちらも 2 だから、同じ 2 なのだろう」と漠然と思っていました。無関係です。2logL-2\log L2-2 は「尤度比が χ2\chi^2 になるための係数」、2k2k22 は「(+k)(k)(+k) - (-k)」です。この2つを切り離した瞬間に、AIC の全体像が見えました。 今回いちばん大きい収穫です。

2. AIC を「最適なパラメータ数を求める指標」だと思っていた

kk を横軸にした U 字の図で AIC を覚えていたので、そういう理解になっていました。AIC はモデルを順位づけます。同じ k=5k = 5 の56通りで AIC の幅が 120.6 もあるのを見て、ようやく直りました。罰則が同じなら、あとは当てはまりの勝負です。

3. 自由度調整済み R2R^2 なら選択バイアスに強いと思っていた

第16回で「調整済み R2R^2 は無意味な変数で下がる」と学んだので、これで守られていると思っていました。ノイズだけのデータでステップワイズを回すと 0.145 が出ます。 調整済み R2R^2 が罰しているのは「使った変数の本数」だけで、「候補30本の中から選んだ」ことは罰していません。

4. 「AIC は甘い」を無条件の性質だと思っていた

Δk=1\Delta k = 1α=0.157\alpha = 0.157 という話だけを覚えていました。Δk\Delta k を増やすと対応する α\alpha は下がり続け、Δk=8\Delta k = 8 で 0.042 と 5% を下回ります(厳密な交差点は Δk=7.12\Delta k = 7.12)。そこから先は AIC のほうが厳しい。「甘い/厳しい」は Δk\Delta k に依存します。 なお「Δk=7\Delta k = 7 が逆転点」と最初は書きました。Δk=7\Delta k = 7 は 0.0512 でまだ 5% より甘く、逆転する最初の整数は 8 です。境目を整数で丸めると向きを間違えます。

5. リッジ回帰も変数選択に使えると思っていた

「正則化で不要な変数が落ちる」と一括りにしていました。リッジはゼロにしません。ゼロを作るのは絶対値の折れだけです。第19回で L1L_1 の菱形の角を見ていたのに、変数選択と結びつけていませんでした。

6. 多重比較の補正がステップワイズを救うと思っていた

ボンフェローニで罪1は直ります(0.750 → 0.047)。そして罪2が悪化しますx3x_3 の誇張 2.09 → 2.84 倍)。しかも検出力が壊滅します(0.223 → 0.019)。門を狭くすると、通り抜けた推定値はますます過大になる。罪1と罪2は同じつまみの両端です。

7. ステップワイズの罪を「推論だけの問題」に切り分けようとした

最初は「5つの罪のうち4つは選択後推論の問題で、予測に使うだけなら害にならない」と書きました。これも間違いです。 膨らんだ係数(罪2)はそのまま予測式に入りますし、選択の不安定さ(罪4)は予測のバリアンスです。実際、赤池ウェイトで平均化すると予測誤差が 6.7〜23% 改善します。1個選ぶことに値段があるなら、選び方の欠点が予測に効いていない、ということはありえません。正しくは「罪1と罪3が選択後推論だけの問題、罪2と罪4は予測にも効く、罪5は探索の限界」の3分類でした。

8. 交差検証は AIC より「実測だから信頼できる」と思っていた

KK-fold は分け方の乱数で答えが変わります。同じデータで 5-fold を200通りの分割にかけたら17種類のモデルが選ばれ、最頻でも 21% でした。AIC と LOO は決定的です。そして線形回帰なら PRESS があるので、LOO を当てはめ1回で計算できます。実測のほうが偉いわけではありません。

9. 「多重共線性があると係数が不安定」の意味を狭く捉えていた

VIF の話として、係数の標準誤差が膨らむことだと理解していました。選ばれる変数まで入れ替わります。 真の係数が最大(0.50)の x1x_1 が 13% しか選ばれず、0.40 の x2x_2 が 84% 選ばれる。しかもこれを「たまたま先に入った変数が勝つ」と書きかけました。偶然ではなく、周辺相関の順序(0.514 対 0.537)が真の係数の順序と入れ替わっているだけでした。再現性のある構造的な失敗を「偶然」で片づけるところでした。

10. AIC と検定を「別の世界の道具」として分けていた

情報量規準と仮説検定は別の章の話だと思っていました。式を並べると、統計量も帰無分布も同じで、棄却限界の位置だけが違いました。AIC は棄却限界を 2Δk2\Delta k にした尤度比検定です。 そのうえで、対称性・入れ子の要否・答えている質問が違うので、同じものではありません。

11. モデル選択の「同点」を軽く見ていた

「AIC 最小のモデル」を一意の答えだと思っていました。n=24n = 24 では平均 7.8 個が ΔAIC<2\Delta\mathrm{AIC} < 2 に入ります。そして1個選ぶより赤池ウェイトで平均化したほうが予測は良い(23% 改善)。選ばないという選択肢があることを知りませんでした。

12. 検証で使った指標そのものが不適切だった

ステップワイズとラッソの安定性を「ブートストラップで選ばれたモデルの種類数」で比べようとしました。ステップワイズ 64 種類、ラッソ 179 種類なので「ラッソのほうが不安定」と書きかけました。間違いです。 平均モデルサイズが 1.92 対 5.87 なので、そもそも取りうる組み合わせの数が違います。種類数は主にサイズの関数で、安定性の指標になりません。変数ごとの選択率で比べるのが正しいと気づいて書き直しました。

13. 呪いの強さを「門の狭さ」だけで説明しようとした

ボンフェローニで門を狭くすると誇張が増える(2.09 → 2.84)のを見て、「門が狭いほど呪いが強い」という1本の軸で説明できたつもりになりました。自分が載せた表がそれを否定していました。 リラックス・ラッソとラッソは同じ門・同じ変数集合なのに、誇張倍率が 1.52 と 0.84 です。門は効いていません。効いているのは縮小するかどうかでした。1つの軸にまとめたい欲が出たときは、自分の表の中に反例がないか探すべきでした。

14. 「nn を増やすと検定は有意になるが AIC の判定は変わらない」と書いた

検定の α\alpha が固定で nn に依らないのと同じ調子で、AIC についてもそう書きました。逆です。 棄却限界 2Δk2\Delta knn に依らない固定値で、真の係数がゼロでなければ尤度比 Λ\Lambdann に比例して増えます。だから nn を増やせば AIC も必ずその変数を採用します。これも自分が載せた効率性の表(n=4000n = 4000 で AIC が平均 10.00 本すべて採用、β10=0.079\beta_{10} = 0.079)が否定していました。 変わらないのは「限界の位置」で、判定そのものは変わります。

15. 「貪欲だから最良を外す」を、2つのものを同時に変えた実験で示そうとした

ステップワイズの答えと総当たりの AIC 最小モデルの一致が 0.365 しかないのを見て、「貪欲な探索の限界だ」と結論しました。この比較では探索の仕方と入り口の基準が同時に変わっています。 前者は p<0.05p < 0.05t2>3.84t^2 > 3.84)、後者は AIC(t2>2t^2 > 2 相当)で、別の門を通しています。貪欲な前向き選択のまま入り口だけ AIC に揃えると、一致は 0.950、AIC の超過は平均 0.020 でした。貪欲さ自体のコストはほぼゼロで、0.365 が測っていたのは門の違いでした。比較したい要因だけを動かす、という当たり前のことができていませんでした。


要点まとめ

AIC の 2k2k

  • E[訓練RSS]=(nk)σ2E[\text{訓練RSS}] = (n-k)\sigma^2E[同じ x 点での新データRSS]=(n+k)σ2E[\text{同じ }x\text{ 点での新データRSS}] = (n+k)\sigma^2。差が 2kσ22k\sigma^222(+k)(k)(+k)-(-k)22 で、2logL-2\log L2-2 とは無関係。
  • バイアス項は両辺に同じだけ乗るので差では消える。だから 2k2k 補正は平均構造が間違っていても機能するσ2\sigma^2 まで誤っている一般の場合は TIC の 2tr(J1I)2\operatorname{tr}(J^{-1}I) が必要)。
  • バリアンスはパラメータ1個あたり σ2/n\sigma^2/ntr(H)=k\operatorname{tr}(H) = k から出る。
  • AIC はモデルを順位づける道具で、パラメータ数の最適値を求める道具ではない。絶対値は無意味、差だけが意味を持つ。
  • n/k<40n/k < 40 なら AICc も計算して差を見る(40 は安全側の慣行で、実際に効いてくるのは 10 を切る辺りから)。CpC_pσ2\sigma^2 を固定した回帰版。

AIC と BIC

  • AIC =2logL+2k= -2\log L + 2k、BIC =2logL+klogn= -2\log L + k\log nn8n \ge 8(厳密には n>e27.4n > e^2 \approx 7.4)で BIC が厳しい。
  • BIC は一貫(nn\to\infty で真のモデルの的中率 → 1)、AIC は非一貫(0.42 で止まる)。止まる高さは (10.157)q(1-0.157)^qqq は偽の候補の本数)で、偽が5本なら 0.8435=0.4250.843^5 = 0.425候補の作り方で決まる値で、普遍定数ではない。
  • AIC は効率的(予測誤差を最小化)、BIC は非効率。係数がゼロで切れず尾を引く設定では、BIC の予測誤差が AIC の 1.67 倍になった。
  • 両立しない。予測なら AIC、構造の同定なら BIC。 変化点の個数では BIC が正解(2個)、AIC は 10 個。

交差検証

  • PRESS=(ei/(1hii))2\mathrm{PRESS} = \sum (e_i/(1-h_{ii}))^2 が LOO と厳密に一致(誤差 1.6×10141.6\times10^{-14})。当てはめ1回で済む。
  • AIC と LOO は同じ HH から出ている。 AIC は tr(H)=k\operatorname{tr}(H)=k(対角の和)、LOO は hiih_{ii}(対角成分)。偶然似ているのではない。
  • KK-fold は分け方の乱数で答えが変わる(5-fold で17種類)。AIC と LOO は決定的。

ステップワイズ法

  • 5つの罪:①ノイズから発見が出る(調整済み R2R^2 でも 0.145)②係数が過大(真 0.25 が 0.513)③pp 値・信頼区間が壊れる ④データが少し変わると激変(ブートストラップで65種類)⑤貪欲探索で最良を見逃す(ただし探索の仕方だけを変えて測ると一致 95%・AIC 超過 0.02 で、実害はほぼない。総当たりとの一致が 36.5% しかないのは、貪欲さのせいではなく入り口が p<0.05p<0.05 で AIC と別の門だから)。
  • 性質は3種類。①③は選択後推論だけの問題(予測には無害)、②④は予測にも効く(膨らんだ係数はそのまま予測式に入り、選択の不安定さはバリアンス)、⑤は探索の限界。
  • 勝者の呪いは「門の狭さ」と「縮小の有無」の2軸。 門を狭くすると①は直るが②は悪化する(ボンフェローニで 0.750→0.047、誇張は 2.09→2.84倍、検出力は 0.223→0.019)。いっぽう同じ門でも縮小すれば誇張は 1.52→0.84 に落ちる。
  • 多重共線性のもとで返るのは「効いている変数」でなく「周辺相関がいちばん大きい変数」(真 0.50 の x1x_1 が選択率 13%、真 0.40 の x2x_2 が 84%。周辺相関は 0.514 対 0.537 で逆転している)。

正則化とモデル平均化

  • ゼロを作るのは絶対値の折れ。 ラッソ(L1L_1)は変数選択に使えるが、リッジ(L2L_2)は使えない。
  • ステップワイズとラッソは逆向きに失敗する。ステップワイズは本物を落とし(x1x_1 を 0.11)、ラッソは偽物を混ぜる(0.28〜0.54)。交差検証の λ\lambda は予測用で、変数選択用ではない。
  • ラッソの誇張倍率は真の係数がゼロでない行では 0.71〜0.84 で 1 を下回る(過小報告なので安全側)。縮小が呪いを打ち消している。ただし真の β=0\beta = 0 の行では話が別で、そこは「正しい大きさ」が存在しないので倍率を安全性の指標として読めない。
  • 赤池ウェイト wiexp(ΔAICi/2)w_i \propto \exp(-\Delta\mathrm{AIC}_i/2) による平均化は、1個選ぶより予測が良い(6.7〜23% 改善)。

AIC と検定

  • AIC は棄却限界を 2Δk2\Delta k にした尤度比検定。 統計量も帰無分布も同じ。
  • 対応する α\alphaΔk=1\Delta k=1 で 0.157、Δk=7\Delta k=7 で 0.0512、Δk=8\Delta k=8 で 0.0424(ここで 5% を下回る。厳密な交差点は Δk=7.12\Delta k = 7.12Δk=20\Delta k=20 で 0.005。「AIC は甘い」は Δk\Delta k が小さいときだけ。
  • BIC は α\alphann とともに縮む検定(n=106n=10^6 で 0.0002)。これが一貫性の正体。
  • 3つの本質的な違い:①検定は H0H_0 を特別扱い/AIC は対等 ②検定は入れ子の2つだけ/AIC は制限なし ③「偶然か」/「新データを外すか」。
  • 共通の限界:候補に無いモデルは選べない。選択と推論を同じデータで両方やることはできない。

実務

  • 小さいデータでは選べない。 n=24n=24・候補64通りで的中率 6〜9%、AIC で選んだモデルは全変数投入より 6% しか良くない。
  • ΔAIC<2\Delta\mathrm{AIC} < 2 は区別できない(由来は赤池ウェイトの比 e10.37e^{-1} \approx 0.37。「パラメータ1個の罰則そのもの」は結果的に整合する覚え方)。n=24n=24 では平均 7.8 個が同点。
  • どの nn でも「真のモデルを知っていた場合」の 1.5〜2.1 倍の誤差が残る。平均化しても 1.4 倍ぶんは残る。選ぶという行為そのものに値段がある。

次回

第30章はここまでです。次は第31章「ベイズ法」に進みます。

今回、BIC の由来としてモデルの周辺尤度 p(yM)p(y \mid M) が出てきました。あれは何を計算していたのか、なぜラプラス近似で klognk\log n が出るのか。BIC の背景がベイズなので、次回はその土台を作ることになります。

そして今回の「ΔAIC<2\Delta\mathrm{AIC} < 2 のモデルを重みつきで平均する」という発想も、ベイズの考え方に非常に近いです。1つのモデルに決めず、確率で重みをつけて全部使う。 赤池ウェイトとベイズのモデル平均化がどうつながるのかは、次回の後半で扱えると思います。

過去の回は統計検定準1級の学習記録・目次にまとめています。