Stan 入門

rstan による Stan の利用

Bayesian
Computation
Stan
Author

司馬 博文

Published

5/17/2024

Modified

9/17/2024

概要
Stan は MCMC や変分推論などのベイズ推論エンジンを備えた,統計モデリングのための確率的プログラミング言語です.CLI,Python,Julia,R など,主要な言語からパッケージを通じて利用可能です.本稿では Stan 言語の基本をまとめます.

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 RStanPyStan

RPython という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)

References

Carpenter, B., Gelman, A., Hoffman, M. D., Lee, D., Goodrich, B., Betancourt, M., … Riddell, A. (2017). Stan: A probabilistic programming language. Journal of Statistical Software, 76(1), 1–32.
Gelman, A., Lee, D., and Guo, J. (2015). Stan: A probabilistic programming language for bayesian inference and optimization. Journal of Educational and Behavioral Statistics, 40(5), 530–543.