PyStan2の利用
岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版のStanスクリプトはPyStan2対応である。PyStan2は、以下のようにインストールして利用できる。手順は、1.WindowsにUbunut(Linux)をインストールする。2.UbuntuにMiniCondaをインストールする。3.MinicondaにPython 3.9の仮想環境を用意する。4.Python 3.9の仮想環境にPyStan 2をインストールする。であるが、それぞれ以下のように簡単な手順である。
まず、WSLにUbuntuをインストールする。WindowsのPowerShellを起動して次のコマンドを実行するとUbuntuがインストールされる。
PS
C:\Users\yasuh> wsl --install Ubuntu
Ubuntuをインストールしたら、exitコマンドでPowerShellをいったん終了する。
Ubuntuがインストールされているので、WindowsのスタートメニュからUbuntuを見つけて起動する。
起動したら、まず次のコマンドでUbuntuの更新を行う。
yasuh@pcyo:~$
sudo apt update && sudo apt upgrade
更新が終了すれば、いったんUbuntuをexitコマンドで終了する。
WindowsのスタートメニューからUbuntuを選んで起動する。
Stanスクリプトの実行にはC++コンパイラーが必要なので、C++コンパイラーをインストールするが、g++をインストールするとC++コンパイラーも含めて必要なものがインストールされる。g++を次のコマンドでインストールする。
sudo apt
install g++
g++のインストールが終了したら、次にMinicondaをインストールする。
Minicondaのファイルは、次のウェブサイトから入手できる。
https://www.anaconda.com/docs/getting-started/miniconda/main
ウェブサイトからのダウンロードは、Windowsのブラウザー(Edgeなど)で適当なフォルダにダウンロードすればよい。
ダウンロードしたフォルダにカレントディレクトリを移して、ダウンロードしたMinicondaのファイルを実行する。WindowsのCドライブは、Ubuntuでは/mnt/cで表される。/mnt/cのcは小文字であることに注意。
yasuh@pcyo:~$ cd
/mnt/c/Download/Linux/
yasuh@pcyo:/mnt/c/Download/Linux$ ls
Miniconda3-latest-Linux-x86_64.sh
yasuh@pcyo:/mnt/c/Download/Linux$ bash
Miniconda3-latest-Linux-x86_64.sh
インストールの最後に初期化を行うかどうか聞いてくるが、「yes」と答えておくと後の作業が楽である。
Proceed with initialization? [yes|no]
[no] >>> yes
インストールが終了すれば、exitコマンドを入力して、いったんUbuntuを終了する。
WindowsのスタートメニューからUbuntuを選んで起動する。

コマンドプロンプトの先頭が「(base)」で始まっていることに注意。これは、Minicondaの仮想環境baseがアクティブであることを表す。Ubuntuのコマンドも普通に使える。
次のコマンド「conda …」を実行して、conda本体のアップデートを行う。「-n」の「-」は、「-」が1個である。
(base)
yasuh@pcyo:~$ conda update -n base conda
続いて、次のコマンドによりパッケージのアップデートを行う。「--all」における「--」は「-」が2個である。
(base)
yasuh@pcyo:~$ conda update --all
Python3.9の仮想環境を作成する。
(base)
yasuh@pcyo:~$ conda create -n py39 python=3.9
「-n py39」により「py39」という名前の仮想環境が作成される。
「python=3.9」により、Python3.9の最新版がインストールされる。「=」が1個であることに注意。
上のコマンドを実行して仮想環境py39が作成されたら、次のコマンドで仮想環境py39をアクティブにする。
(base)
yasuh@pcyo:~$ conda activate py39
仮想環境py39をアクティブにすると、プロンプトの先頭が「py39」で始まる。

次のコマンドでPyStanをインストールする。
(py39)
yasuh@pcyo:~$ conda install pystan
インストールしたPyStanを使ってみる。
サンプルスクリプトBinStr.pyの置かれているフォルダに移動して、サンプルスクリプトを以下のように表示した。
(py39)
yasuh@pcyo:/mnt/c/WorkSpace/Samples$ cat BinStr.py
import pystan
import matplotlib.pyplot as plt
Stan_Model = """
data{
int N;
int k;
}
parameters{
simplex[2] theta;
}
model{
k ~ binomial(N, theta[1]);
}
"""
Data = {'N': 10, 'k': 7}
sm = pystan.StanModel(model_code =
Stan_Model)
fit = sm.sampling(data = Data)
print(fit)
f = open('fit.txt', 'w')
f.write('fit = \n{}'.format(fit))
f.close()
fit.plot()
plt.show()
(py39)
yasuh@pcyo:/mnt/c/WorkSpace/Samples$
次のコマンドでスクリプトを実行した。
(py39)
yasuh@pcyo:/mnt/c/WorkSpace/Samples$ python BinStr.py
MCMCサンプリング後のトレース図が下図のように表示される。

上のトレース図のWindowを閉じると、スクリプトの実行終了である。端末画面は下図のようである。

上の画面で、コマンドexitを入力するとUbuntuの終了である。