StatModeling Memorandum

StatModeling Memorandum

StanとRとPythonでベイズ統計モデリングします. たまに書評.

Stanのリポジトリにある「BUGS Example」で修行する

たまにはBUGSやStanの勉強法について書きます。 まずは久保先生の緑本の例題(ただし11章を除く)をBUGSやStanで実装するのがhello worldに相当します。

次にThe BUGS Bookをはじめから読みつつ気になったBUGSコードを実際に書いてみるのがよいと思います。

洋書なんか読みたくない!という方には以下の本をオススメします。ただちょっと高い。しかもBUGSの例題の解説が日本語でなされている感じ。でも読みやすいです。

本なんか買いたくない!という人はBUGSの例題をじっくり見ていくのが一番でしょう。BUGSならこちら。Stanならこちらを参照してください。特に基本で応用範囲の広そうなオススメの例題を挙げておきますと以下になります。上から順番にやっていくのがよいように並べました。似たようなものが続くので飽きたらskipしてください。

  • Air: "Berkson measurement error"
  • Seeds: "Random effect logistic regression"
  • Oxford: "smooth fit to log-odds ratios"
  • Surgical: "Institutional ranking"
  • Rats: "a normal hierarchical model"
  • Dyes: "variance components model"
  • LSAT: "item response"
  • Dugongs: "nonlinear growth curve"
  • Salm: "extra - Poisson variation in dose - response study"
  • Pumps: "conjugate gamma-Poisson hierarchical model"
  • Simulating Data: "learning about the degrees of freedom of a t-distribution "
  • Blocker: "random effects meta-analysis of clinical trials"
  • Jaws: "repeated measures analysis of variance"
  • Birats: "a bivariate normal hierarchical model"
  • Schools: "ranking school examination results using multivariate hierarchical models"

advancedだけど押さえておきたいものは以下です。

  • Stagnant: "a changepoint problem and an illustration of how NOT to do MCMC!"
    • 変化点検出。
  • Beetles: "choice of link function"
  • Fun Shapes: "general constraints"
    • 変数への制限・条件のつけ方。一部難しいのがあるけどそれらはパスしてください。
  • Eyes: "Normal Mixture Model"
    • 混合正規分布。離散パラメータを含んでいるためStanだとややこしくなっています。log_sum_expの練習。
  • Hearts: "a mixture model for count data"
    • 離散パラメータを含んでいるためStanだとややこしくなっています。log_sum_expの練習。
  • Hepatitis: "random effects model with measurement error"
    • NA含んでいるためStanだとややこしくなっています。サンプルプログラムより分かりやすくする余地あり。
  • Mice: "Weibull regression"
    • 生存時間解析。打ち切りの扱いがStanだと面倒。

その他の例題はとりあえず後回しでいい気がしました。アドホックで応用が難しそうなものも結構ありました。

なお、データはここの「Stan Files」のところにある「*.data.R」をコピペでRにはりつけるなり、ここに書いてある通り{rstan}ライブラリのread_rdump()関数を使って読み込むのがよいと思います。

上記には含まれていないけど、押さえておきたいモデルに時系列のモデルがあります。これはBUGS Bookの「11.2 Time series models」もしくはStanのマニュアルの「13.1 Autoregressive Models」だけはとりあえず読んでおいて、Sunspotsのデータ黒点の変化のデータとのこと)を使って色々やってみるところからはじめるのがよいと思います。ナイル川のデータ(1899年にアスワンダムができた影響をうけたデータとのこと)は状態空間モデルでないと厳しそうです。状態空間モデルについてはマニュアルやExampleにはシンプルな導入がありませんでした。Itoさん(@monotropastrum)のブログ記事を参考にするのがよいと思います。