StanとRでベイズ統計モデリング(アヒル本)をPythonにしてみる - 目次

すでにいくつか記事はありますが、[StanとRでベイズ統計モデリング](https://www.amazon.co.jp/Stan%E3%81%A8R%E3%81%A7%E3%83%99%E3%82%A4%E3%82%BA%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0-Wonderful-R-%E6%9D%BE%E6%B5%A6-%E5%81%A5%E5%A4%AA%E9%83%8E/dp/4320112423/)をPythonにしてみました。手元では全て変換し終わっているので、見直してから順次上げていきます。最後のほうの章でstatsmodelsのlowessが2次元に対応していないっぽいのでrpy2からRカーネルにアクセスするという方法でかろうじてFull Pythonを保って(?)います。

# 実行環境
Jupyter on Docker

実行時にworkspaceにホスト側のファイルをマウントしています。
データは'data'、Stanのコードは'stan'に置いていますので、試してみる場合は筆者の[Githubページ](https://github.com/MatsuuraKentaro/RStanBook)からダウンロードしてきて適当に置いてください。
書籍の実行結果とは異なる部分もありますが、RStanとPyStanの実装の違いかと思います。(こちらの手違いでしたら教えてください)

```:Dockerfile
FROM ubuntu:16.04
RUN apt update && apt upgrade -qy
RUN apt install -qy language-pack-ja
ENV LANG "ja_JP.UTF-8"

RUN apt install -qy python3=3.5.1-3
RUN apt install -qy python3-pip=8.1.1-2ubuntu0.4
RUN pip3 install --upgrade pip

RUN pip3 install pystan==2.17.1.0

RUN pip3 install scipy==1.1.0
RUN pip3 install statsmodels==0.9.0
RUN pip3 install scikit-learn==0.19.2
RUN pip3 install pandas==0.23.3
RUN pip3 install jupyter==1.0.0 \
    && jupyter notebook --generate-config \
    && sed -i -e "s/#c.NotebookApp.token = '<generated>'/c.NotebookApp.token = 'jupyter'/" /root/.jupyter/jupyter_notebook_config.py
RUN pip3 install jupyter_contrib_nbextensions==0.5.0 \
    && jupyter contrib nbextension install \
    && jupyter nbextension enable codefolding/main \
    && jupyter nbextension enable collapsible_headings/main \
    && jupyter nbextension enable exercise2/main \
    && jupyter nbextension enable hide_input/main \
    && jupyter nbextension enable hinterland/hinterland \
    && jupyter nbextension enable toc2/main \
    && jupyter nbextension enable varInspector/main
RUN jupyter notebook --allow-root --no-browser --ip=0.0.0.0 &
RUN cd /root/.jupyter/nbconfig \
    && sed -i "2i   \"hinterland\": {\n    \"hint_delay\": \"500\"\n  }," ./notebook.json \
    && sed -i "2i   \"toc2\": {\n    \"toc_window_display\": true,\n    \"oc_window_display\": true,\n    \"skip_h1_title\": true\n  }," ./notebook.json
RUN pip3 install matplotlib==2.2.2
RUN pip3 install seaborn==0.9.0
RUN pip3 install bokeh==0.13.0
RUN pip3 install Pillow==5.2.0
RUN pip3 install opencv-python==3.4.2.17
RUN pip3 install japanmap==0.0.12

RUN echo "deb https://cloud.r-project.org/bin/linux/ubuntu xenial/" >> /etc/apt/sources.list \
    && apt install -y apt-transport-https \
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 \
    && apt update \
    && apt install -y r-base=3.4.4-1xenial0
RUN pip3 install rpy2==2.9.4
RUN pip3 install tzlocal==1.5.1

RUN apt clean
RUN rm -rf /var/lib/apt/lists/*

VOLUME /root/workspace
WORKDIR /root/workspace
```
## 一覧
- [4.4 単回帰](https://qiita.com/shngt/items/bfb790bbdce98e899553)
- [Chapter 4 練習問題](https://qiita.com/shngt/items/6b8baf27c5aa8879605f)
- [5.1 重回帰](https://qiita.com/shngt/items/f784b6c92a42b0e5f1a7)
- [5.2 二項ロジスティック回帰](https://qiita.com/shngt/items/b21398cf5e71ef876335)
- [5.3 ロジスティック回帰](https://qiita.com/shngt/items/24246c9683d8652f7db5)
- [Chapter 5 練習問題](https://qiita.com/shngt/items/0691298f9f6ef29972e3)
- [Chapter 6 練習問題](https://qiita.com/shngt/items/ea3468429be2a40f9106)
- [7.2 対数をとるか否か](https://qiita.com/shngt/items/ca58dae9e3c49fe9788e)
- [7.3 非線形の関係](https://qiita.com/shngt/items/363351ac7cf56636414b)
- [7.5 交絡](https://qiita.com/shngt/items/0b2c64f60f58274b003e)
- [7.8 打ち切り](https://qiita.com/shngt/items/cdadeda2d46205d294dd)
- [7.9 外れ値](https://qiita.com/shngt/items/7c01cd3346b7d4e0aeb5)
- [8.1 階層モデルの導入](https://qiita.com/shngt/items/4ff096ab1544df01db40)
- [8.2 複数の階層を持つ階層モデル](https://qiita.com/shngt/items/6b9be8bee8070b0e4bfd)
- [8.3 非線形モデルの階層モデル](https://qiita.com/shngt/items/6dfbd5e790ca0edcdf43)
- [8.4 ロジスティック回帰の階層モデル](https://qiita.com/shngt/items/36b7e6d8e4566f9b1b85)
- [Chapter 8 練習問題](https://qiita.com/shngt/items/8d08f0c3fcb7ab124797)
- [10.1 パラメータの識別可能性](https://qiita.com/shngt/items/5f527ad4a30f113a511f)
- [10.2 弱情報事前分布](https://qiita.com/shngt/items/1225c26cbc05a0f45e02)
- [10.3 再パラメータ化](https://qiita.com/shngt/items/87fbb2040ccdbeb932c6)
- [11.2 混合正規分布](https://qiita.com/shngt/items/863c7a96d3070a054a06)
- [11.3 ゼロ過剰ポアソン分布](https://qiita.com/shngt/items/3d513a2dc98dbd2a037e)
- [11.4 Latent_Dirichlet_Allocation](https://qiita.com/shngt/items/65aefdf612c87e554ed8)
- [12.1 状態空間モデルことはじめ](https://qiita.com/shngt/items/d943269fd7413971cec4)
- [12.2-季節調整項](https://qiita.com/shngt/items/d74eaf8fbce2684f8714)
- [12.3 変化点検出](https://qiita.com/shngt/items/c9027ea50e1542fdf9d1)
- [12.6 1次元の空間構造](https://qiita.com/shngt/items/cb8be24e3fa6319497cd)
- [12.7 2次元の空間構造](https://qiita.com/shngt/items/962e16a1cee0678268fc)
- [12.8 地図を使った空間構造](https://qiita.com/shngt/items/da0d428e080da7e5f09d)
- [Chapter 12 練習問題](https://qiita.com/shngt/items/c34e2c57e21967c43164)