未完放流

終わりなど無い、有るのは試練だけだ……

「StanとRでベイズ統計モデリング」を購入

Stan の知識を整頓したいと思い購入。 この内容でお値段3000円は安い。でも消費税240円は高く感じる。

本稿執筆時の Stan のバージョンは 2.17.1

多分、Stan を知ったのも著者のWebページがきっかけだったと思われる。 ただ入手は少し苦労した。近所の大きめの本屋では置いていなかった。 最近は Deep Learning の教科書は小さな本屋でも手に入るが Stan のようなややマニアックな DSL はユーザーが少ないようだ。

個人的にはベイジアンモデリングは2000年辺りが一つのピークな気がする、その後ゲイツ様も賞賛していた。 若い人たちベイズ統計を勉強する際に通称ミドリ本を使うらしいが、オッサンの緑本はこちら

計算統計 II?マルコフ連鎖モンテカルロ法とその周辺 (統計科学のフロンティア)

計算統計 II?マルコフ連鎖モンテカルロ法とその周辺 (統計科学のフロンティア)

この本で理解しても良いと思う。一部の人には難解と言われているのでお好みでどうぞ。 読了後、様々な業界で有名になったモデルをベイズ的というか確率分布で解釈したものを見てニヤニヤするのが楽しかった。

R と Stan の魅力

Stan を R から使うのは、やはりRの影響を受けていると思われる文法と RStudio との連携に魅力を感じる。 RStudio は Stan の syntax highlihgt にも対応してくれる。意外に少ない。

自分のスタイルとしては人工データの生成スクリプトは R で作成し、推定は Stan 、プロットは RStudio という感じ。 実用段階に近くなってもRは豊富なフォーマットに対応しているのでデータの変換が楽。 このサイクルを回し速度が必要ならば、gibbs sampler の方が実用的かモデルを手計算で整頓できないかなど検討する。

そして Stan の何よりの魅力は、(基礎的な確率分布が頭に入っていることが前提となるが) 簡潔な記述で確率モデルが記述できることである。 主要な分布は標準関数で用意されているので、余程特殊なものでない限り困ることはないと思う。 C++などと比べたら、コードの量は10分の1ぐらいかも?

確率論ドメイン固有言語としては良いが

プログラミング言語としては不便に感じる部分があるのも事実。 例えば、ユーザー定義の確率密度関数を作ろうとすると現在では制限が多く、 組み込み関数と同等のものは作れないと思われる。 本気でやるとしたら C++ で拡張として書くべきなのかもしれない。

離散数の推定も基本的にはできないのも残念。 これはHMCが連続空間への変換が前提になっているから仕方がない。 個人的には試作として使えれば充分なので速度を犠牲にした Random Walk 型の MH 推定などがあっても良いかも? 後は int と real 間のキャストぐらいは認めてほしかった。

確率モデル系のライブラリ

少し毛色の違うトピックになるが、Stan を使う人には興味がある話題だと思うので記載する。

まだ使用していないがGPUなどを使った高速化にも対応しているらしい。 Blei lab 流石と思う。しかし Python library としての提供。

Edward – Home

こちらは配車などでお馴染み Uber の lab が開発したもの。 やはり Python、乗り換えざるを得ないかも?

github.com

個人的には Jupyter lab 次第と言ったところか。

実はベイズ統計モデリングの教科書としても優れているらしい

Amazon のレビューを見ると、この本でベイズ統計が分かったとコメントが多いのが少し意外だった。 自分の動機はあくまで Stan の言語周りの知識の整頓、もっと具体的には9章と11章が読みたかった。

案外、タイトルを「RStan で学ぶベイズ統計モデリング」などにした方が間口が広がったのかもしれない。