Rでベイズに関する理解を深めよう!『ベイズ分析の理論と応用』を現役DSが読んで得た学び

R
元教師
元教師

こんにちは!データサイエンティストの青木和也(https://twitter.com/kaizen_oni)です!

今回の記事では『Pythonによるベイズ統計学入門』に並ぶベイズ分析の入門書『ベイズ分析の理論と応用』を現役データサイエンティストが読んで、得た学びについて共有させていただきたいと思います。

本書は『Pythonによるベイズ統計学入門』とは打って変わって、Rで実装を行うベイズ分析の入門書になりますが、Rコードの分量は圧巻の分量であり、否が応でもR言語でのベイズ分析について理解が深まる1冊となっております。

また、実データを使ったベイズ分析も豊富に紹介されているため、理論に止まらない、かゆいところまで手が届く1冊となっております。

本書の概要

本書は大屋(2020)レベル*1の統計学の知識を前提として、ベイズ統計学の理論と実践を学部上級、あるいは大学院初級レベルで修得することを目標として設計されています。

*1: 大屋幸輔(2020) 『コア・テキスト統計学 第3版』, 新世社

各務和彦著『ベイズ分析の理論と応用 R言語による経済データの分析』(新世社/2022)

本書はある程度の統計学の知識を前提としていながらも、ベイズ統計学の入門〜中級にあたる内容を実践的なコードとデータを元に解説してくれる1冊となっています。

対象読者層からも分かる通り、書籍序盤はベイズ初学者にとってもかなりわかりやすいような表現が多用されており、非常にスラスラと内容が入ってくる、一方で後半に差し掛かると実データを使った高度なベイズ分析の内容が襲いかかってくる、というような二面性を持った1冊になっています。

また、Githubで公開されているRコードも凄まじい分量となっているので、ベイズ分析を学ぶための骨太な教材としては満足いただけるものと思われます。

本書の章立ては以下のようになっています。

第1章 はじめに
  1.1 データ分析の重要性
  1.2 所得分配の不平等を考える
  1.3 ベイズの定理
  1.4 本書の構成

第2章 ベイズ分析
  2.1 出塁率のベイズ分析
  2.2 ヒストリカル・ボラティリティのベイズ分析
  2.3 モデルの比較

第3章 マルコフ連鎖モンテカルロ法
  3.1 モンテカルロ法
  3.2 マルコフ連鎖
  3.3 マルコフ連鎖モンテカルロ法
  3.4 MCMC標本の評価

第4章 一変量データのベイズ分析
  4.1 炭鉱の爆発事故における構造変化の分析
  4.2 所得分配の不平等を考える
  4.3 ボラティリティ・クラスタリングの分析

第5章 線形回帰モデルのベイズ分析
  5.1 集積の経済は存在するのか
  5.2 生産関数における非効率性の分析
  5.3 直接効果と間接効果の計測
  5.4 線形回帰モデルを分析するに当たって

第6章 制限従属変数モデルのベイズ分析
  6.1 景気循環の要因分析
  6.2 その他の制限従属変数モデル

付録A R言語
  A.1 R言語とは
  A.2 R言語の基本的な使い方

付録B 確率分布
  B.1 離散確率変数
  B.2 連続確率変数

付録C その他のMHアルゴリズムと比較
  C.1 その他のMHアルゴリズム
  C.2 MHアルゴリズムの比較

第1章から第3章がベイズ分析の基礎の部分をみっちりと詰め込む章になっており、ベイズ分析を始めて触れる方でもかなりわかりやすく解釈できる内容となっています。

第4章から第6章が模擬データを使ったベイズ分析となっており、かなり高度な内容でありつつも非常に学びの多い章となっております。

本書から得た学び

私が本書から得た学びは以下のとおりです。

  • ベイズ分析の結果から言えることの限界
  • MCMCのアルゴリズムの違いによる実装の違い
  • 収束判定条件と非効率性因子

順を追って解説していきます。

ベイズ分析の結果から言えることの限界

歴史に疎く明確な結論が得られないにもかかわらず、あえてこの例を取り上げたのは、データを分析するにあたって、統計学や統計モデルに関する知識だけでは、統計分析ができないということを知ってもらいたかったからです。

各務和彦著『ベイズ分析の理論と応用 R言語による経済データの分析』(新世社/2022) P93

この分析からは、2005年から2010年の5年間で、所得分配の不平等が拡大したであろうことまではいえますが、その原因が何であったのかまでは分かりません。

各務和彦著『ベイズ分析の理論と応用 R言語による経済データの分析』(新世社/2022) P102

私はベイズ統計学というものを勉強し始めた初学者なので、ベイズ統計学を勉強していると

「へえ〜、事前分布を定義してあげれば少ないデータセットからでもここまでのことが言えるんだ〜」

とベイズ統計学の利点に関心を寄せることが多いです。

一方で、本書籍では随所に「この分析ではここまでのことは言えるが、これ以上のことは言えない」といったような釘を刺していただく場面が度々登場します。

技術書において、驚き屋の「これを使えばこんななことができちゃう!すごいでしょ!」的な視点ではなく、「技術には可能性もあるけど限界もあるんだよ」ということを提示してくれるのが本書の良さであり、データサイエンティストとして改めて認識しておく教訓だな、というのが学びでした。

MCMCのアルゴリズムの違いによる実装の違い

本書では、事後分布(ベイズ分析によって推測したい何らかの値の分布)から乱数を生成するために、以下の3つの方法のいずれかを使用します。

  • MHアルゴリズム(メトロポリス・ヘイスティング・アルゴリズム)
  • ギブス・サンプラー
  • データ拡大法

上記アルゴリズムは推測したい値の特性によって、どの方法を使うかを使い分ける必要があります。

そして本書においては、以下のような事項を網羅的に教えてくれます。

  • それぞれの方法のどのような点が利点なのか
  • どのような前提であればどの方法を使用することができるのか
  • その方法を使うとしたときにどのようにRスクリプトで実装すればいいのか

つまりは、それぞれの方法について知らない場合でも、長所・短所や前提条件や実装方法について詳しくなることができるのです。

もちろん、本書を読んだだけで現実のベイズ分析の場合にすぐさま「これはデータ拡大法を使うべき問題だろう」ということを導くのは難しいものと思われます。

一方で、本書があれば「このような前提条件の場合はどれを使えばいいのだろうか」ということに疑問に対するヒントを得られるようになるはずです。

収束判定条件と非効率性因子

『Pythonによるベイズ統計学入門』というPythonでベイズ分析について学ぶ書籍においては、MCMCが出力した標本が適切に収束しているのかを判定するためにGelman-Rubinの収束判定の基準$\hat{R}$というものを使用しました。

本書では、Gelman-Rubinの収束判定の基準$\hat{R}$とは異なる指標として、以下の2つが登場します。

  • Gewekeの収束診断(CD)
  • 非効率性因子(IF)

上記を簡単に解説すると、Gewekeの収束診断(CD)は前半のMCMC標本の標本平均$\bar{\theta_{i,f}}$と$\bar{\theta_{i,S}}$に対して、「2つの標本平均には差がない」という帰無仮説に対する検定を行うことによって、不変分布($=$安定的な分布)に収束したかどうかを判定するための値です。

この場合は、

帰無仮説が否定されない $\to$ 2つの標本平均には差がない $\to$ 不変分布に収束している

という論法が成り立つので、有意水準を$\alpha$(本書においては$\alpha = 0.01$)としたときに、CDの値が$\alpha$より大きければ上手く収束している、として判定を行っています。

一方で、非効率性因子(IF)は「独立な標本$R$個をサンプリングしたいときに、MCMC標本からサンプリングするためには$qR$個必要なのか」の$q$の値にあたります。

$q$が1に近いほどMCMC標本からのサンプリング数は少なく済むので効率的ですし、逆に$q$の値が大きければMCMC標本から大量のサンプリングを行う必要があるので非効率的であると言えます。

なぜこのようなことを考える必要があるのかというと、前提としてMCMC(マルコフ連鎖モンテカルロ法)においては前の標本設定を引き継いで次の標本を求めるような場面が多々あります。

次の標本が前の標本に依存した標本になることが往々にしてあり、そのために標本同士が「独立」であるとは言えないことがあるからです。

そして、独立な標本でないと初期値などによって偏った標本が抽出できてしまい、ベイズ分析の結果の妥当性に疑問をもたらしてしまうため、「10回おきの標本を最終的な標本としてして使用する」($=$シニング)のような作業をする必要が出てしまいます。

10回おきに標本を取り出すという形で標本抽出を行うと、独立な標本分布から標本を取り出すよりも10倍サンプリングを行う必要があるので非効率的と言えます。

よって、「シニングの回数を何回に設定すべきか」や「この方法はどれだけ効率的なのか、場合によっては他の方法を検討しなければならないのか」を考えるために非効率性因子を使う必要があるのです。

まとめ

今回の記事では『Pythonによるベイズ統計学入門』に並ぶベイズ分析の入門書『ベイズ分析の理論と応用』を現役データサイエンティストが読んで、得た学びについて紹介させていただきました。

ベイズ分析については歯応えバッチリなほど統計的な解説とRコードの実装が待ち受けている1冊になっているので、実務でベイズ分析を行いたい方はぜひお手に取っていただけると幸いです!

コメント

タイトルとURLをコピーしました