A Blog Entry on Bayesian Computation by an Applied Mathematician
$$
$$
1 Stan 言語
1.1 はじめに
Stan 言語は確率モデルを3つのブロックに分けて記述する.
その3つとはデータ,パラメータとモデルである.
以上の3要素により,事後分布が定まる.
その後 Stan は内部で c++ を用いて事後分布の対数密度とその勾配を自動微分により計算し,Hamiltonian Monte Carlo による事後分布サンプリングを実行する.
1.2 data
ブロック
2 Stan エコシステム
2.1 Stan インターフェイス
2.1.1 CmdStan
の仕組み
CmdStan
は makefiles の集合からなる最も軽量な,コマンドラインベースのインターフェイスである.
これを直接 R で wrap した CmdStanR
パッケージ や CmdStanPy
パッケージが存在し,同時に Julia, Mathematica, Matlab からも利用可能である.
Stan の Math ライブラリ,Algorithm ライブラリなどの出力をテキストファイルで出力してやり取りする.
CmdStan
は最も軽量なインターフェイスであり,Stan
の性能を純粋に引き出す場合に使われる.
2.1.2 CmdStan
のインストール
CmdStan Installation によると,conda
による方法とソースからのインストールの2つの方法がある.
一方で次稿で扱う CmdStanR
を通じてインストールすることもできる:
2.1.3 RStan
と PyStan
R
と Python
という2大言語を Stan と直接繋げるインターフェイスを提供している.
CmdStan
のように一度テキストファイルに書き出すということがなく,メモリ上でやり取りされるが,それ故に CmdStan
よりも追加の処理が多くなりがちである.
3 文献紹介
手軽に概要を掴むには Michael Betancourt によるブログ記事 An introduction to Stan が良い.
より本格的な解説論文には (Gelman et al., 2015), (Carpenter et al., 2017) がある.
公式の文献紹介 が stan.org から出ているが,情報が古い.
また,Stan には 日本語のマニュアル もある:stan-ja (GitHub).