読者です 読者をやめる 読者になる 読者になる

xiangze's sparse blog

機械学習、ベイズ統計、コンピュータビジョンと関連する数学について

stanとRでベイズ統計モデリングをいただきました。

stan

ありがとうございます。
この本は著者の経験に基づくstanを用いた統計モデル構築と分析の方法について解説した他に類を見ない本になっています。

StanとRでベイズ統計モデリング (Wonderful R 2)

StanとRでベイズ統計モデリング (Wonderful R 2)

確率に関する初歩的な知識(和、積の法則、密度関数、ベイズの定理など)、簡単なRの使い方を前提としているので完全に初心者向けとは言えないのですが、stanのインストール方法や文法など初心者向けの内容から情報量基準の特性やそれとのつきあい方、自動変分ベイズ(ADVI)とその特性のような高度な内容、そしてベイズ統計モデリングの手順と実例が分かりやすく書かれています。

導入編

3章では統計モデリングの手順について説明されています。本文でも言われているようにこれに関する書籍はあまりありません*1。漫然と既存のデータにモデルを当てはめるのではなく目的を設定しそれが達成できたかを確認すること。Rなどでデータを可視化してあたりをつけてモデリングの参考にすることなどが重要だと思いました。また(Rによる)モデルのシミュレーションが入っているのが意外でした。推定結果の解釈を経て知見の蓄積、次に採取すべきデータの種類の提案などを行うことができます。一般にデータが生み出されるメカニズムは完全には理解することは出来ず、また観測に際して外部から予測不能なノイズが入り、データの数もメカニズムの理解には不十分なことがほとんどです。そのためモデルを仮定しその妥当性を検証するのですが、これは機械学習を用いたモデリング、データの分類予測と共通しているようです*2

stan入門編

4,5章では解析の目的の設定(普通は説明変数の目的変数への影響の仕方と程度が見たい)と可視化によるその確認とメカニズム(影響の仕方)の想像、モデル化、stanによる推定と結果の解釈の一連の流れをを簡単な例(単回帰、重回帰)を用いて説明しています。

発展編

6. 確率分布 確率分布関数の間には数学的関係があり、非常に興味深いのですが*3、そこに過剰に立ち入ることなく解説していてハンドブックとして分かりやすいです。統計モデリングにおいては連続か離散かカテゴリカルなものか、裾の大きさなどで使い分けることが出来ます。本でも触れられているようにMCMCを用いたサンプリングでは必ずしも共役事前分布を用いる必要がないこともそれほど高度な数学の知識が必要ない理由かも知れません。

7.回帰分析の悩みどころは単純な回帰モデルがうまくいかなかった場合にモデルに取り入れるべきかもしれない要因を挙げた難しい話題です。変数間の交互作用、因果関係(交絡)、スケールの変換(logをとるべきか否か)などがstanの文法内でモデルを書き換えることで取り入れることができるのが説明されています。また(個人的にはやったことはないのですが)変数選択、データの打ち切り、外れ値なども分布関数で対処できることが書かれていて、ベイズ統計モデリングとstanの自由度の高さが示されています。

10. 収束しない場合の対処法 基本的にはモデルを疑うべきなのですが、それでは回避出来なさそうな場合としてラベルスイッチングとデータが少ない場合事前分布に情報を入れる方法を説明しています。事前分布に何を使うかは悩ましいと思うのですが*4、ここではまず無情報事前分布を使い、問題があるときは弱情報事前分布(すこしだけ情報を入れた分布)を使い、また制約の入れ方の違いに対して結果が頑健であることを確認すべきだとしています。

個人的にはstanを用いた解析は階層を持つモデル(8章)、時間的、空間的広がりを持つモデル(12章)で真価を発揮すると思うのですが、簡単なモデルで説明可能な場合はそれで十分なので専用のパッケージを使うことも出来ます。ただ実は複雑なメカニズムだった場合、類似の複雑な事例との比較のために単純な場合もstanでモデリングして比較するのがいいのかもしれません*5

9章一歩進んだ文法と11章離散変数のサンプリングはstanの文法、機能に関するややマニアックな説明です。事前分布へ入れることの出来る制約、微分可能なモデルにした方が良いなどモデリングに関するいくつかの制限、コツはMCMC、HMCの特性と不可分に結びついています。離散変数のサンプリングのところは頑張れば自動化できるかもしれません。9章の最後のトラブルシューティング、特にwarningのところははまったときに参考になります。

*1:もしかしたらMCMCを用いて複雑なベイズモデルの検証が出来るようになったのが最近だからかもしれません

*2:データ分析プロセス (シリーズ Useful R 2)が詳しい書籍です

*3:http://leeswijzer.hatenablog.com/entry/2013/06/26/161846 http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/statdist.html

*4:階層モデルの分散パラメータの事前分布について

*5:マルコフ場モデルでのマルコフ場由来の事後確率、観測モデル由来の事後確率を比較して試行錯誤するところが参考になりました状態空間モデルでも使える局面があるかもしれません