2016年12月3日土曜日

stan本で私もデビューできました

本記事はStan Advent Calender3日目の記事です。
stanというツールを知ってから、しばらく時が経過しますが、なかなか導入に踏み切れていませんでした。
私はR言語をよく使いますが、昔はstanをRから呼び出すのも苦労があった時代もあったりして、ハードルが高いなという印象があったり、なかなかHMCを活用したサンプラーによりシミュレーションを行うモデリングまで現実の問題を落とし込めていなかったりしていたからでした。

しかし、2016年はそんな過去の時代とは違います。




2016年10月末に革命的な本が出されました。
これにより、現在stanによるベイズモデリングが一部地域でかなり流行っています。

この本の構成としては下記のような目次になっています。

第1部 導入編
統計モデリングとStanの概要
ベイズ推定の復習
統計モデリングをはじめる前に
第2部 Stan入門編
StanとRStanをはじめよう
基本的な回帰とモデルのチェック
第3部 発展編
統計モデリングの視点から確率分布の紹介
回帰分析の悩みどころ
階層モデル
一歩進んだ文法
収束しない場合の対処法
離散値をとるパラメータを使う
時間や空間を扱うモデル

Stanの本とはいえ、まず初めにベイズ推定の復習や統計モデリングを始める前に考えておかなければならない観点が丁寧に解説されています。
ここは非常に重要だと思います。
機械学習の方面でもまず複雑なアルゴリズムありきで話題を始めてしまう例もよく見受けられてしまうのですが、モデリングにおける試行錯誤の重要性はスモールスタートであることを改めて思い知らされます。

また、stanでのモデリングに必要な確率分布の説明も非常に丁寧です。
日常確率分布に多く触れる人も少ないはずですから、このような解説記事と共に掲載されているのは著者の配慮によるところでしょう。

MacOSによるstanの準備


著者がWindows環境なので、Macの場合の準備の手順を紹介します。
step1.Rをインストールする またはアップデートする
まずはお手持ちのMacにRをインストールしましょう。
またすでにRが入っている場合は適切なVerにアップデートしてください。
こちらのリンクからCRANの各mirrorサーバーからダウンロードできます。

次にRstudioをインストールしましょう。
Rstudioはこちらから入手できます。
またXcodeをお持ちでない場合はAppStoreからXcodeを入手しましょう。

rstanのインストール

install.packages('rstan',dependencies=TRUE)
これで準備完了です。

Stanの基本的な文法

stanコードの基本的な構成は下記の通り3つのブロックになっています。

data {
データYの宣言
}

parameters {
サンプリングしたいパラメータθの宣言
}
model {
尤度p(Y|θ)の記述
事前分布p(θ)の記述
}

コーディング規約

松浦さんによる最低限守るべきルール
1、インデントは必ずする
2、データを表す変数の先頭の文字を大文字にし、パラメータを表す変数の先頭の文字を小文字にする
3、各ブロックの間は1行開ける
4、変数名はcamelCase(単語の区切りが大文字)ではなく、snake_case(単語の区切りがアンダースコア)にする
5、「~」(確率的な生成)「=」(代入)の前後は1スペース開ける

普段、Rを使っている とstanコードの記述は少し独特なので、この辺のコーディング規約は業界標準として成り立つと良いと思いますね。

さて、これでスタートラインに立つことができました。
非常にお手軽ですね。
実践的な解析例はStan Advent Calenderの他の記事に譲るとして、他国の例を紹介します。

来る2017年1月にstan conference 2017が開催されるようです。
内容を見ていると、stanのイントロから各専門領域における使い方の紹介、そして発展系の内容の構成となっているようですね。

これはstan本でもすでに実現している構成ではありませんか?
このstan本を読めばある程度のグローバルスタンダードに立つことができるかもしれません。ありがたいですね。
それでは、皆さんもこの本を携えて、stanでモデリングの海に飛び込みましょう!

0 件のコメント:

ページビューの合計