Up

PyStan2の利用

 

岡本安晴いまさら聞けないPythonデータ分析丸善出版StanスクリプトはPyStan2対応である。PyStan2は、以下のようにインストールして利用できる。手順は、1.WindowsUbunutLinux)をインストールする。2.UbuntuMiniCondaをインストールする。3.MinicondaPython 3.9の仮想環境を用意する。4.Python 3.9の仮想環境にPyStan 2をインストールする。であるが、それぞれ以下のように簡単な手順である。

 

 

まず、WSLUbuntuをインストールする。WindowsPowerShellを起動して次のコマンドを実行するとUbuntuがインストールされる。

 

PS C:\Users\yasuh> wsl --install Ubuntu

 

Ubuntuをインストールしたら、exitコマンドでPowerShellをいったん終了する。

Ubuntuがインストールされているので、WindowsのスタートメニュからUbuntuを見つけて起動する。

起動したら、まず次のコマンドでUbuntuの更新を行う。

 

yasuh@pcyo:~$ sudo apt update && sudo apt upgrade

 

更新が終了すれば、いったんUbuntuexitコマンドで終了する。

 

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のファイルを実行する。WindowsCドライブは、Ubuntuでは/mnt/cで表される。/mnt/ccは小文字であることに注意。

 

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の終了である。

 

Up