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

StatModeling Memorandum

StanとRでベイズ統計モデリングします. たまに書評.

「基礎からのベイズ統計学―ハミルトニアンモンテカルロ法による実践的入門」豊田秀樹ら

書評 Stan

ハミルトニアンモンテカルロ法を以下HMCと略します。この本の内容は主に次の4つに大別されます。

  1. (1~3章・付録A)確率・ベイズの定理・ベイズ推定のおさらい & 伝統的な統計学ベイズ統計学の比較
  2. (4~5章・付録B)事後分布からのサンプリングの詳細(特にStanで採用されているHMCとNUTSについて)
  3. (6~8章)正規分布ポアソン分布などの分布と生成量をフル活用した問題の解法
  4. (付録A・C・D)章末問題の解答、Stanのセットアップ、各例題のStanコード

2.や3.は他の書籍ではあまり見ない内容でとても貴重だと思いました。4.はかなり手薄でこれだけ見てもStanを始める人にはかなり厳しいでしょう。6~8章の生成量がStanのgenerated quantitiesとかなり密接に連動しているだけに、そこは少し残念かなと思いました。個人的に好きなのは7章と付録Bです。おすすめする読者は、ベイズ統計が伝統的な統計学と比べて問題に対してどのように実用的に役立つか知りたい人、HMCやNUTSについて詳しく知りたい人です。名著「図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術」涌井貞美著を読んで面白いと感じた人が次に読んでみる本としてもおすすめします。

それでは順に見ていきます。

まえがきではこの本の特色が簡潔に述べられています。 まずは1~3章の動機として「データ分析をする前に、何故ベイズ統計学がタブー視されてきたのか、主観確率のどこが危険なのかをきちんと理解する必要がある」と述べています。4~5章の動機として「ギブスサンプリング法は上級者向けの方法です。それに対してHMC法は、乱数発生機構がモデルによって異なりません。」と述べています(その理由も書いてあります)。6~8章の特徴として3つあげ『第1はどう解くかに関する面倒な数式がないこと。数式を割愛したわけではなくHMC法でオールマイティに解けるので解説する必要がなくなった。第2は生成量を重視していること。第3は研究仮説が正しい確率を直接的に計算していること。この確率こそ、データ分析者が論じたい確率。伝統的な有意性検定の枠組みでは研究仮説が正しい確率は決して計算できない。』とのことです。加えて、個人的に思ったこの本の嬉しい特色は例題と章末問題の多さと、それらのほぼすべてに対して丁寧な解答やStanコードが付録として載っていることです。

1~3章は、確率の基礎、ベイズの定理、基本的な分布、ベイズ推定について少なすぎず多すぎず簡潔にまとめられています。3.7節「本書の立場」では「公的分析では無情報的事前分布を使用し、尤度への影響を最小限にするべきである。私的分析では自己責任で原則的に自由である。しかしマイノリティを差別する使用はしないでほしい」と明快に方針が書いてあり、非常に共感できます。 1~3章の一つの到達点として、有名な「3囚人問題」のベイズの視点からの1つの解釈が秀逸です。

  • 3囚人問題 - Wikipedia

    • 補足 3.8節の説明の中で個人的には「囚人Aが恩赦されるときに、(囚人B, 囚人C)が(処刑される宣告される, 宣告されない)確率」のように同時確率で考えて、B・C二人ともに宣告されない確率も考慮した方がいいように思えたのですが…間違いかもしれません。

4章はMCMCをコンパクトかつ分かりやすく説明しています。特に前半20ページで要点を抑えた説明はさすがと思いました。

5章はHMCについて非常に丁寧に説明しています。ハミルトニアンがもともと物理の分野で扱う量のため、物理の初歩、ハミルトンの運動方程式位相空間を簡単に説明した後、HMC法のアルゴリズムについて詳しく説明しています。HMC法のアルゴリズムがここまで丁寧に書いてある本はほとんどなく、この本を特徴あるものにしています。しかし、HMC法ではリープフロッグ法を行うために更新回数Lとステップサイズεを設定する必要があります。これをよきにはからってくれるのがStanで使われているNUTS(No-U-Turn Sampler)です。NUTSの説明は付録Bにあります。

6章は正規分布、7章はポアソン分布・指数分布・ガンマ分布・幾何分布・負の二項分布・対数正規分布、8章は比率や相関係数といったものを含んだ具体的な各例題に対して、どのように考えるか、そしてStanで推定した結果からどんなことが分かるか、解釈ができるかを説明しています。特色としてはまえがきに書いてあった通り、複雑な数式はいっさいないこと。そして、生成量という事後分布を使って算出できる量を用いて、知りたい情報を計算していることです。具体例として、僕が好きな問題を引用で紹介します。

流れ星問題1: H君は那須高原で流れ星を観測しています。流れ星をいくつ観測できたかを5分ごとに10回記録したところ、観測個数は1個,0個,0個,3個,0個,0個,0個,0個,0個,1個でした。 問1. 流れ星は5分間で平均何個見られるといえるでしょうか。 問2. 5分間で見られる流れ星の数には、どのくらいのばらつきがあると考えられるでしょうか。 問3. 次の5分間で流れ星が2個観測できる確率はどのくらいでしょうか。

流れ星問題2: H君は50分間夢中で観測した後、3つお願い事があることを思い出しました。今から流れ星を3つ観測するためにはどのくらい待てばよいでしょうか。

ロマンチックですね。なんか小さい頃にクソ寒い中、しし座流星群を見に行ったことが思い出されます。流れ星問題2みたいな状況は頻繁に遭遇します。流れ星に限ったことではなく来店状況なんかにもあてはまります。こういう極めて実践的な問いにベイズ推定では確率込みで答えを出すことができます。そういう計算もStanコード内で簡単に行っています。

その他にも「婚活問題」など面白い問題が数多く登場しますが、回帰を組み合わせたような少し複雑な統計モデリングに関しては本書は載っていません。しかしながら、本書で扱っているような、基本的なパーツである確率分布を選んでデータにあてはめる・生成量を算出する、という部分は統計モデリングにおいて必須のコアの部分です。その意味でこれから統計モデリングしたいという人には6~8章はおすすめです。

付録A~Dは50ページ弱。付録が充実しすぎです。 付録Aは章末問題の解答ですが非常に丁寧です。 付録Bは個人的には一番欲しい情報が載っていた部分です(笑)。収束判定によく使われるR hatの算出方法、Effective Sample Sizeの算出方法があります。そして、NUTSに至るまでとNUTSの説明があります。NUTS自体もマイナーアップデートされているのですが、この付録Bのすごい所はそれらの論文まで読んで詳細に説明しているところです。 付録CはStanのセットアップと簡単な文法と使い方の説明です。丁寧ですがちょっと紙面が足りてない感じです。 付録Dは各例題のStanコードです。インデントされていないところが若干気に入りませんが紙面の都合もあるかと思います。generated quantitiesブロックの使い方はぜひ参考にしてほしいです。