統計の知識が一ミリもない状態からPythonでベイズ推定ができるようになるまでに読んだ本
統計の知識が一ミリもない状態から、3ヶ月くらい勉強してなんとなくPythonでベイズ推定ができるようになったので、その過程で勉強した本を挙げていきます。
勉強した内容は大きく分けて以下です。
統計学の基礎
以下2冊挙げましたが、両方とも読む必要はないです。どちらも平均や分散の考え方から始まって、いろいろな検定(t検定、F検定、分散分析など)や回帰の考え方と方法をメインに説明しています。しいて言えば、前者は全体的に狭く深い感じで数学的に詳しく、後者は広く浅い説明で応用例がわかりやすいので気に入った方を読めばいいと思います。
Pythonによるデータ操作
データ分析をやる場合、だいたい言語としてRかPythonを使うと思います。私はPythonの方がなじみがあったのでPythonでR的なことをするのに必要なライブラリであるnumpy
とpandas
の勉強を以下の本でしました。
包括的にpandas
の使い方が書いてあっていい本だと思うのですが、個人的に中だるみ感がすごかったので、適当に読んでだいたいどういうことが出来るのかということをさらうようにしました。その後実際にデータ分析をしながら、あの本でやってたあれはどうやってやるんだっけ…と思ったことを公式ドキュメントで見ていくことで、pandas
の基本的な操作ができるようになりました。
ベイズ推定とMCMC
ベイズ統計の本として最初に読みました。ベイズ統計の考え方が例に基づいて丁寧に書かれているので、なにもわからない人がとりあえず読む本としてかなり良いと思います。統計の基礎がわかっていれば読み始めることができて、最終的には時空間構造を考慮した階層ベイズモデルをMCMCで解くところまでわかるようになります。
この本を読むと、PyMCというPythonが書ける人にとって理解しやすい(と思う)MCMCのライブラリの使い方がわかるようになります。ベイズ統計の基本的な説明もかなりわかりやすいと思うので、最初に読んでも大丈夫です。出てくる例が「データ解析のための統計モデリング入門」と毛色が全然違う(こちらの方がエンジニアにとって実用的っぽいパラメータの変化点の検出とかA/Bテストの例などが載っている)ので、とくにプログラミングが出来る人が統計モデリングをやってみる的な意味で良いと思います。翻訳版もあるっぽいです(→Pythonで体験するベイズ推論 PyMCによるMCMC入門)。
PyMCで複雑なモデルを作るのが難しい感じがしたので、MCMCの別のライブラリであるStanの使い方を覚えるために読みました。これも全体的に説明がわかりやすい良い本です。タイトルはStanとRとなっていますが、PythonにもStanが使えるPyStanというライブラリがあるので、まったく問題なくPythonで実装しながら読み進められます。Stanに特有のテクニックなどの記述もあるので、ベイズ推定一般というよりはStanに興味があって読む方が良いかもしれません。また、本筋ではない部分だと思いますが、確率分布を列挙する章が実例や使い方の説明を含んでいて、他の統計の本の似たような章と比べると比較にならないほど面白いです(比較にならないなら比べない方がいいんでは…)。
薄いムックです(ガチャピンです(?))。なんとなくベイズ推定の初心者向けっぽい風潮があるような気がしますが(?)、理論的な説明は薄い一方で、具体的なライブラリの使い方や特徴がよくまとまっているため、むしろある程度基本がわかって自分でベイズ推定を試してから読んだ方が得るものが多いと思います。
野球における打者の打率の推定を例とした経験ベイズの本です。野球が好きなのでなんとなく読みました。経験ベイズに対してはベイズの事前分布をデータからちゃんとしたやつみたいな適当なイメージしかなかったのですが、事前分布を思ってたよりめちゃくちゃ狭くしてたり、階層ベイズになると事前分布が増えていったり、けっこう普通のベイズと違うな…という印象を得ました。ベータ分布+二項分布で話が進んでいくのでMCMCは出てきません。
まとめ
統計の勉強のために今まで読んできた本を、統計学の基礎・Pythonによるデータ操作・ベイズ推定とMCMCに分野分けして紹介しました。紹介した本はどれも自分が読んでわかりやすかったし、評判も良いものばかりなので読むと良いと思います。
今後は、もっと数学的な基礎みたいな本を読みたいのと、実際の応用例を知りたい感じがします。