Up

Stanによるベイズ分析

 

確率モデルに対して、ベイズ分析ではパラメータの確率と組み合わせて同時確率分布

 

 

を考える(Gelman et al., 2014)。パラメータの確率は、分析の目的に応じて設定される。

次式(2)の条件付確率

 

 

は、ベイズの定理と呼ばれることがある。式(2)は条件付確率の定義であるが、慣例上「ベイズの定理」と呼ばれている。Gelman et al. (2014)では、ベイズの規則(Bayes rule)と呼んでいる(p.7)。

は、データ以外の影響をできるだけ小さくするときは、できるだけ無情報な分布が選ばれる(Gelman et al., 2021)。

 

式(2)の分布は、シミュレーションによるサンプリングで推定できる。そのためのソフトとしてStanがよく知られている。

Stanは、Python用のソフトCmdStanPyで利用できる。

CmdStanPyは、Ubuntu (あるいはFedora)で利用できるが、仮想環境Minicondaを利用すると、インストールが簡単である。

 

Windowsの場合は、WindowsUbuntu (Fedora)をインストールすればよい。WindowsへのUbuntuFedora)のインストールは、このウェブサイトで説明している。Ubuntuでの使用は、端末における簡単なコマンドによる使用であるが、コマンドの簡単な説明を、このウェブサイトあるいはこのウェブサイトで行っている。

 

UbuntuFedora)へのMinicondaのインストールは、このウェブサイトで説明している。

 

MinicondaCmdStanPyをインストールするために、インストール用の仮想環境を用意する。すでにある仮想環境でもよいが、新しく作成するときは、次のコマンドを実行すればよい。

 

conda create -n stan Python=3.14

 

名前「stan」は、任意のものでよい。Pythonは、現在は、Python 3.14が良いようである。

 

仮想環境、上の場合stan、を作成したら、作成した仮想環境をアクティベイトする。

 

conda activate stan

 

アクティベイトした環境、上の場合はstan、においてCmdStanPyをインストールする。

 

conda install cmdstanpy

 

上のコマンドによりCmdStanPyがインストールできたら、後、必要なライブラリをインストールしていく。

 

conda install numpy scipy matplotlib arviz

 

などとやればよい。

 

いま、2項分布モデルを例として説明する。

2項分布のモデルをStanスクリプトでリスト1のように表す。

 

 

リスト1 2項分布のStanスクリプト(binomial.stan

 

data {

    int n;

    int k;

}

parameters {

    real<lower=0, upper=1> p;

}

model {

    p ~ uniform(0, 1);

    k ~ binomial(n, p);

}

 

 

リスト1のStanスクリプトを用いてベイズ分析するPythonスクリプトをリスト2のように作成する。

 

 

リスト2 ベイズ分析スクリプト(anal_ba.py

 

from cmdstanpy import CmdStanModel

 

sm = CmdStanModel(stan_file='binomial.stan')

fit = sm.sample(data={'n':10, 'k':7})

print(fit.summary())

 

 

リスト1のStanスクリプトファイルとリスト2のPythonスクリプトファイルを同じフォルダにおいて、置いたフォルダにおいて次のコマンドを実行すればよい。

 

python anal_ba.py

 

実行画面を図1に示す。

 

図1

 

 

なお、エラー無く走っていたStanプログラムが、別のシステムで実行するとエラーになることがある。これは、ビルド済みのモデルが当該のシステムに合わないためである。このときは、ビルドをやり直せばよい。ビルドのやり直しは、パラメータ「force_compile=Trueを付けて実行すればよい。すなわち、

 

sm = CmdStanModel(stan_file='binomial.stan', force_compile=True)

 

とする。

 

 

 

参考文献

Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2014). Bayesian Data Analysis, third edition. CRC Press. (free download)

Gelman, A., Hill, J., & Vehtari, A. (2021). Regression and other stories. Cambridge University

岡本安晴(2019) いまさら聞けないPythonでデータ分析.丸善出版

 

 

Home