1970年代赤池先生の I ≈ Jに対する意見について

このブログ記事に対しては,他のブログ記事と同様,筆者個人にすべての責任があります.所属組織は,一切,関与していません.

 

このブログ記事は,黒木さんによる以下のつぶやきに続く一連のスレッドに対する応答です.長くなりましたので,Twitterでのリプライではなく,ブログ記事にしました.

 

 

いつもありがとうございます.

 

私が論点をずらしてしまうかとは思いますが,このブログ記事では次の3点を述べます.

 

  1. ご指摘に応え,私が「 I = J」と述べていた箇所を,「 I \approx J」に修正します.
  2. 私のTwitterでの予想は「1970年代の赤池先生は, I \approx Jを(分析者の)主観的判断と考えていた」というものです.
  3.   I \approx Jではない場合のAICロバスト性を乱数シミュレーション実験で確認する場合,やる気になれば肯定的な結果も出せるし,否定的な結果も出せると思います.

 

 I = J」を「 I \approx J」に修正します

私が呟いたことは,<1970年代の赤池先生は, I = Jを分析者の主観的判断と考えていた>というものです.ご指摘されてみると,「 I = J」と表記すると, I Jがピッタリ一致しているように読めます.1970年代の赤池先生もさすがに完全に一致とは思っていなかったでしょうから,以後「 I \approx J」と変更いたします.

 

1970年代の赤池先生の I \approx Jに対する考え方

私の予想(<1970年代の赤池先生は, I \approx Jを分析者の主観的判断と考えていた>)の根拠は,引用した論文(赤池 1976)を,文字通りに読めば,そのように(少なくとも私には)読めるからです.私がそのように解釈した文章を再掲します.

一方, g(y)がある \theta_0によって  g(y) = f(y|\theta_0)と与えられる状態を想定することは,ひとつの主観的な行動原理である.有意性検定も AICのこの行動原理によって働いている.(p.9)

赤池弘次(1976)「情報量規準とは何か:その意味と将来への展望」『数理科学』152, 5-11

 

ただし,1980年以降の赤池先生がどのように I \approx Jを考えていたかは,(私はよく分からなかったので)この前のつぶやきでは触れないでいました.いま現在も,よく分かっていません.

1980年以降は,「実用上は(通常,分析者が仮定するモデルは真の分布にそんなに遠くないので)やはりAICはうまく働く」と赤池先生は考えていたのかもしれませんし,考えていなかったのかもしれません.

 

最晩年(2009年3月14日あたり)に書かれた,International Encyclopedia of Statistical Science(Springer, オンライン版)の"Akaike's Information Criterion"の説明を見ると,

In typical application of the method of maximum likelihood, ...

とだけ書かれており,<分析者によって仮定された分布が真の分布を包含していること>は触れられていません.

 

「納度」についての論文である赤池(2008)では,次のような説明が少しなされています.

情報量規準 AIC の利用の展開を通じて,統計モデルの観測値に基づく評価値として,想定するモデルと真のモデル,あるいは理想的なモデルとの近似度の評価として,対数尤度を利用することが一般化した.これは真のモデルが不明,あるいは人により異なる場合にも合理的な評価と見なされるという,対数尤度の間主観性に基づくものである.(p.253)

赤池弘次(2008)「納度の概念の利用について」統計数理 56(2), 253-258

 

いずれにしても,赤池先生の論文を,質・量ともに読みこんでおらず,<1970年代の赤池先生は, I \approx Jを分析者の主観的判断と考えていた>という私の予想は単なる確証バイアスなのかもしれませんし,特に1980年以降の考え方の変遷はよく分かりません.

 

乱数シミュレーション実験では,どちらの結果も出せちゃう

赤池先生がどのように考えていたかは置いておいて,現実的な実用において I \approx Jからのズレに対して,AICがどれぐらいロバストかは,私は数理にも実務にも疎いので,分かっていません.

1つだけ私が言えることは(わざわざ言うまでもないですが),妄想上の乱数シミュレーション実験では, I \approx Jとなる例も, I Jが異なる例も作り出すことはできるということだけです.

 I \approx Jとなっている例だけ見れば,「実用上,問題ないね」となりますし,そうでない例だけを取り出せば「実用には耐えられないね」となるでしょう.

実用に合わせた乱数シミュレーション実験をすればいいのかもしれませんが,実用上では「真の分布」は不明なことにしているので,現実的・実用的な前提を設定するのは難しいと私は思います.

 

一応,両方の数値例を,S-hacking(シミュレーションハッキング)をして作り出してみました.S-hackingとは,シミュレーションの設定を色々と試し,自分の都合がよい結果だけを報告するインチキ行為です.

以下のシミュレーション例はあくまでS-hackingというインチキをした結果であり,何の意味もありません.どちらの結果もお気軽に出せることを例示するためだけに,S-hackingをしました.

以下が用いたJuliaコードです(実際には別のマイナーなプログラム言語にて自分の都合がいい結果が出るのを確認した後,それをJuliaに移植しました,Juliaもよく分かっていないので,汚いコードですみません....)

using Distributions

using Random

 

function calc_emlogf_and_aic(nsim, n, true_model, my_models)

    n_my_models = length(my_models)

    logf = zeros(n_my_models)

    aic = zeros(n_my_models)

    for i in 1:nsim

        xt = rand(true_model, n)

        xv = rand(true_model, n)

        for j in 1:n_my_models 

            fit_model = fit_mle(my_models[j], xt)

            logf[j] = logf[j] + sum(logpdf(fit_model, xv))

            aic[j] = aic[j] + sum(logpdf(fit_model, xt)) - length(params(fit_model))

        end

    end

    return [logf/nsim, aic/nsim]

end

 

Random.seed!(99999)

 

print(calc_emlogf_and_aic(1e6, 300, Gamma(20, 0.05), [Normal]))

print(calc_emlogf_and_aic(1e6, 300, Exponential(1), [Normal]))

print(calc_emlogf_and_aic(1e6, 300, Gamma(2.32, 1.0), [Normal, Exponential]))

 

#   真の分布がGamma(20, 0.05),あてはめた分布が正規分布

# 期待平均対数尤度:22.58037711801546

# AIC(の-0.5倍)  :22.75427456712602

 

#   真の分布が指数分布,あてはめた分布が正規分布

# 期待平均対数尤度:-428.24091640772633

# AIC(の-0.5倍)  :-425.23723892046803

 

#  真の分布 Gamma(2.32, 1.0)

#                        正規分布                  指数分布

# 期待平均対数尤度:-553.572848659754     -552.676966249488

# AIC(の-0.5倍)  :-552.2373503875936    -553.2298269847855

黒木さんがTwitterにて挙げた例1のような設定(ガンマ分布 Gamma(20, 0.05)に対して正規分布を仮定)ならば, AIC(を-0.5倍したもの)の平均は,期待平均対数尤度にかなり近くなっています.両者は,AIC(を-0.5倍したもの)の平均は22.6,期待平均対数尤度は22.8となっています.

しかし,例2のような設定ならば,AIC(を-0.5倍したもの)の平均は,期待平均対数尤度から離れた値となっています.前者が-425.2なのに対し,後者は-428.2です.

また,例3のような設定ならば,AIC(を-0.5倍したもの)の平均と期待平均対数尤度はまあまあ近いのですが,2つの仮定したモデルにおいて,AIC(を-0.5倍したもの)の平均の大小関係と,期待平均対数尤度の大小関係が逆になっています.

 

これら例2と例3は,繰り返しになりますが,S-hackingという不正なインチキをして,シミュレーションの設定を調整したものです.このようなS-hackingという不正なインチキをすれば,成立する例も,成立しない例もどちらともお気軽に出せちゃいます(... わざわざ,言うまでもありませんが…),

 

なお,これらの例は現実的な利用例にもなっていないと思います. n = 300のこの例での多くの統計ユーザーの第1選択はヒストグラムを描くことであり,第2選択はQQプロットを描くことでしょう.ヒストグラムやQQプロットを描けば,この例では,正規分布にも,指数分布にも,データが適合していない見た目ですぐに分かるでしょう.つまり,例2や例3でのAICによるモデル選択は「リンゴとミカンのどちらが自動車?」みたいな選択になっていますが,多くの分析者はこの例の状況ではそのような馬鹿げた選択は行わないと私は(主観的に)思います.

 

AICを用いるときに「真の分布」は知らないことになっています.「真の分布」が分からないと,たぶん,   I \approx Jなのか否か(もしくは, I JのズレがAICを利用できるほどに影響していないか否か)は知ることができません.  I \approx Jを何かしらの数理的根拠で分析者は正当化していないという意味で,通常の多くのAIC利用者は, I \approx Jを主観的に判断していると言えるのではないかと私は思います.

 

最後に

数理に強ければ,うまいことズレを表現して,どれぐらいのズレの時にどれぐらいAICによる判断が妥当でなくなるかを示せるのでしょうけれども,私にはその技術はありません.また, I \approx Jからのズレを検出する方法も提案されていそうですが,私は調べておらず,まったく知りません.

 

このブログ記事に対しては,他のブログ記事と同様,筆者個人にすべての責任があります.所属組織は,一切,関与していません.