最近、久保拓弥「データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学)を読んでいる。

生態学のデータ解析 - 久保拓弥
http://hosho.ees.hokudai.ac.jp/~kubo/ce/KuboTakuya.html

本ではR + WinBUGSを使っているが、今回はJulia(1.1.0) + Mambaを使って実装した(10章まで)。実装はGithubに載せてある。


実装の中身は上のJupyter Notebookを見てもらうとして、それ以外に実装していて何点か躓いたことがあったので備忘のために記載しておく。

Binomial分布のGLM

  formula で指定する説明変数は、0から1の間になっている必要がある。個体の数で割って、wtsに個体の数を指定してフィッティングを行う。

df.yy = df.y ./ df.N
df.N = convert(Array{Float64}, df.N)
result = glm(@formula(yy ~ x + f), df, Binomial(), wts = df.N)

モデルのグラフ表示

Mambaのチュートリアルではモデルのグラフ表示にGraphViz.jlパッケージを使っている。

ただGraphViz.jlはメンテナンスが止まっているようで、Julia v0.7以降では動かないようである

ForneyLab.jlがGraphViz.jlの後継としてモデルのグラフ表示をサポートしているので、こちらを使用すれば良い。

Multiprocessing

Mambaは addproc でプロセスを追加して、

using Distributed
addprocs(3)

Mambaをインポートするときに @everywhere を付ければMambaが自動的にMCMCのチェインごとのサンプリングを並列化してくれる。(section10.ipynb参照)

@everywhere using Mamba

11章の空間構造のある階層ベイズモデル(intrinsic Gaussian CARモデル)も実装できたらアップデートしたい。

3/14追記: 11章の空間構造のある階層ベイズモデルも実装したのでアップデートした。これで一通り読破したことになるのかな?次は以前読もうとして諦めた「Pythonで体験するベイズ推論」をJuliaでやってみようか。