標本数とパラメータ数が近いときのAICcの挙動

検証用のシミュレーションを書いたり,調べ物をしてて,AIC_cについて気がついたことあったのでメモ.

 

AIC_cとは

AIC_cとは,モデル選択に用いられる情報量規準の1つであり,標本数nが漸近的に無限に大きくなることを仮定したAICを,有限のnに修正したものである.

AIC_c = -2l + \frac{2pn}{n-p-1} = AIC + \frac{2p(p+1)}{n-p-1}

 

ここでlは対象となるモデルの最大対数尤度,pはパラメータ数である.

直感的にn/pが小さいとき(ただしn\gt p+1),AIC_cにはAICよりも強い罰則が加わり,n/pが大きくなるに従ってAICに近づく.

n=p\,\,のときのAIC_c

標本数nとパラメータ数pが同じとき,AIC_cの罰則項は負になり,むしろ報酬項になり得る.

\frac{2pn}{n-p-1}\lt 0 \,\,\, if \,\,\, n = p

 

この性質から,AIC_cでモデル選択をする場合で,候補モデル中の最大パラメータ数p_{max}と標本数nが同じとき,その最大パラメータ数の候補モデルM(p_{max})は最も当てはまりが良く,加えてM(p_{max})に関してのみ罰則項が報酬項になるため,必ずそのM(p_{max})が選択される.

より広くn\leq pのとき,AIC_cの罰則項は報酬項になっているが,例えば線形回帰モデルであれば,n \lt pの計画行列Xでは(X^t X)^{-1}が求まらなそうなのであんまり意味はなさそう(線形代数力が足りなくて一般に証明は思いつかないが,n\lt pのとき,(X^t X)^{-1}は正則ではないと思う).

n=p+1\,\,のときのAIC_c

 標本数nがパラメータ数p+1と同じとき,AIC_cはゼロ除算になるため,基本的に定義できない.

R言語など,ゼロ除算がa\gt 0,a/0=\inftyと定義されている言語でAIC_cを実装してモデル選択をする場合,例外でプログラムが止まることはないが,n=p_{max}+1\,\,となる候補モデル中の最大パラメータ数のモデルはAIC_cが無限になるため,決して選ばれなくなる.

 AIC_cの使用について

一般に情報量規準が罰則項で意図しているモデル選択上のparsimonyは,AIC_cにおいてn\leq p+1で成り立たない(実装によっては最悪例外が飛ぶ).なのでAIC_cn\gt p + 1での使用が推奨されると思う.

 n\leq p+1AIC_cを使用した実例

journals.plos.org

先に説明したn\leq p+1におけるAIC_cの挙動は式を見ればすぐ気がつくことができるものである.だが上の論文ではプロットのみから挙動を論じたため,この点について解釈間違いをしているようである.結論とは関わりのない些細な部分ではあるので大筋に影響はないが.