差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| stan:r [2018/04/18 17:57] – created watalu | stan:r [2018/04/18 20:18] (現在) – watalu | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ==== StanをRから使う ==== | ==== StanをRから使う ==== | ||
| - | === 必要なソフトウェア === | + | Stanが生成するのは、事後分布に従う乱数列(数値のデータ)である。この設計思想は実に潔い。Stanのユーザは必ず、Stan以外にも何らかのソフトウェアを用いて、メディアンを計算したり、ヒストグラムを描いたりすることになる。 |
| + | |||
| + | Rを通じてStanを利用すると決めた場合は、Stanを単独でインストールするのではなく、次のような手順を踏んでインストールを進める。 | ||
| + | |||
| + | - Rをインストールする | ||
| + | - RStudioをインストールする | ||
| + | - Stanを使用するのに必要な(OSごとに異なる)ソフトウェアをインストールする | ||
| + | - Rの中でRStanパッケージをインストールする | ||
| + | |||
| + | === RとStanのための開発環境 === | ||
| + | |||
| + | C言語やC++言語でコードを書きたくないから、R言語を使うし、Stanに頼ってハミルトニアンモンテカルロ法を用いるとは思う。しかし自分でC++言語を用いた開発をする予定がなくとも、Stanの利用には、C++言語の開発環境が必要である。Rと一緒に用いるのであれば、Rをコンパイルできる環境とともに揃えるのが望ましい。 | ||
| + | |||
| + | Windows用にはコンパイルのための道具が収められた[[https:// | ||
| - | Stanを利用するにはC++言語の開発環境が必須である。またRと一緒に用いるのであれば、Rをコンパイルできる環境とともに揃えるのが望ましい。 | ||
| - | Windows用にはコンパイルのための道具が収められた[[https:// | ||
| Rは[[https:// | Rは[[https:// | ||
| - | |OS|R|RStudio|開発環境| | + | |OS|Rのコンパイル環境| |
| - | |Windows|[[https:// | + | |Windows|[[https:// |
| - | |macOS|[[https:// | + | |macOS|[[https:// |
| - | |Linux|[[https:// | + | |Linux|GCCおよび必要なライブラリ一式| |
| - | Linuxでは、Rをソースからビルドしてもいいし、各ディストリビューションに関係するパッケージを用いても良い。 | + | === RとRStudio === |
| - | === 準備 === | + | まず、RとRStudioをインストールするか最新版に更新しておくこと。Rは[[https:// |
| - | まず、RとRStudioをインストールするか最新版に更新しておくこと。Rの総本山のウェブサイトの国内ミラーである、統計数理研究所提供のCRANサイトから、使用するOS用のRの最新版をダウンロードしてインストールすると良い。RをRStudioから使う人は更に、RStudioの開発元であるRStudio.comから使用するOS用の RStudio Desktop (Open Source License) の最新版をダウンロードしてインストールすると良い。 | + | バイナリをインストールするなら、[[http:// |
| + | |||
| + | === Windowsユーザ向けのStanのインストール手順 === | ||
| - | == Windowsユーザ向け == | ||
| Windowsを用いる人は[[https:// | Windowsを用いる人は[[https:// | ||
| - https:// | - https:// | ||
| - 上のインストール中に、システムの環境変数のPATHを編集するように指示する | - 上のインストール中に、システムの環境変数のPATHを編集するように指示する | ||
| - | - RもしくはRStudioを起動し、次の1行を実行してみる。< | + | - RもしくはRStudioを起動し、次の1行を実行してみる。< |
| - | | + | - 次にStanおよび関連するR用のパッケージをインストールする。< |
| - | - 次にStanおよび関連するR用のパッケージをインストールする。< | + | |
| - | install.packages(“rstan“, | + | |
| ここまで終われば、たくさんのパッケージがインストールされて、やっとStanをRから呼び出す準備が整う。 | ここまで終われば、たくさんのパッケージがインストールされて、やっとStanをRから呼び出す準備が整う。 | ||
| - | == Macユーザ向け == | + | === Macユーザ向けのStanのインストール手順 === |
| macOSを用いる人は[[https:// | macOSを用いる人は[[https:// | ||
| - App StoreからXcodeをインストールするか、最新版に更新する。 | - App StoreからXcodeをインストールするか、最新版に更新する。 | ||
| + | - RもしくはRStudioを起動し、次の1行を実行してみる。< | ||
| + | - コンパイラのバージョンなどを返してくれば、準備が整ったことが確認できる。 | ||
| + | - 次にStanおよび関連するR用のパッケージをインストールする。< | ||
| - | == Linuxユーザ向け == | + | ここまで終われば、たくさんのパッケージがインストールされて、やっとStanをRから呼び出す準備が整う。 |
| - | Linuxを用いる人はコンパイラとライブラリが一通り入っていれば良い。 | + | === Linuxユーザ向けのStanのインストール手順 === |
| - | そしてRもしくはRStudioを起動し、次の1行を実行してみる。 | + | |
| + | Linuxを用いる人はコンパイラとライブラリが一通り入っていれば良い。そしてRもしくはRStudioを起動し、次の1行を実行してみる。 | ||
| + | < | ||
| system(“g++ -v“) | system(“g++ -v“) | ||
| - | system(“clang++ -v“) | + | </ |
| - | いずれも、コンパイラのバージョンなどを返してくれば、準備が整ったことが確認できる。次にStanおよび関連するR用のパッケージをインストールする。 | + | コンパイラのバージョンなどを返してくれば、準備が整ったことが確認できる。次にStanおよび関連するR用のパッケージをインストールする。 |
| - | install.packages(“rstan“, | + | < |
| + | install.packages(“rstan“, | ||
| + | </ | ||
| ここまで終われば、たくさんのパッケージがインストールされて、やっとStanをRから呼び出す準備が整う。 | ここまで終われば、たくさんのパッケージがインストールされて、やっとStanをRから呼び出す準備が整う。 | ||
| + | |||
| + | === RStanの使い方(概要) === | ||
| + | |||
| + | RStanというパッケージは、 | ||
| + | - Stanモデリング言語で記述されたファイルから、Stanでモデルファイルを作る | ||
| + | - データとモデルを与える未知パラメータの事後分布からのサンプリングを行う | ||
| + | |||
| + | という順序で動作する。 | ||
| + | まずRで | ||
| + | < | ||
| + | library(rstan) | ||
| + | </ | ||
| + | を実行し、必要なパッケージを読み込む。 | ||
| + | R上でこの2つのステップを同時に実行するには | ||
| + | < | ||
| + | binomial.fit <- stan(" | ||
| + | </ | ||
| + | とすればよい。 | ||
| + | 2段階を分けて実行するには | ||
| + | < | ||
| + | binomial.model <- stan_model(" | ||
| + | binomial.fit <- sampling(binomial.model, | ||
| + | </ | ||
| + | とする。モデルファイルを作る際にコンパイルを行っていて、ここに少々の時間がかかる。一度コンパイルしたモデルファイルは、RDSという形式でRの外に保存することができる。 | ||
| + | < | ||
| + | saveRDS(binomial.model," | ||
| + | </ | ||
| + | 読み込むには、次のreadRDS関数を用いる。 | ||
| + | < | ||
| + | binomial.model <- readRDS(" | ||
| + | </ | ||
| + | |||
| + | === RStanの使い方(スケルトン) === | ||
| + | |||
| + | 以下では、Stanモデリング言語を記述したファイルをexample.stan、観測される確率変数をx、モデルの未知パラメータをthetaと置く。 | ||
| + | |||
| + | - Stanモデリング言語で記述したコードを用意する。 | ||
| + | - Rの中で観測値を入力する。(以下では、example.obsというオブジェクトとする) | ||
| + | - Rからモデルを作成するように指示を出す。< | ||
| + | - 作成したモデルに基づいて、事後分布に従う乱数を生成するように指示を出す。< | ||
| + | - NUTSが法則収束していることを確認する。< | ||
| + | stan_dens(example.nuts, | ||
| + | stan_ac(example.nuts, | ||
| + | stan_rhat(example.nuts) | ||
| + | stan_ess(example.nuts) | ||
| + | </ | ||
| + | - 事後分布を確認する。< | ||
| + | -事後分布を目視で確認し、併せて先ほどの平均やメディアンが合致しているかどうかを確認する。< | ||
| + | - 事後分布と事後信頼区間を得る。< | ||
| + | |||