stanファイルの準備
次のようにファイルを作る。
ここではstan_file.stanとしておく。
data{ |
データとして、N
とvals
を読み込む造りである。
RStanのインポート
RでRStanをインポートする。
library(rstan) |
ここで、高速化のためにRDSファイルの再コンパイル節約と並列化を併せて設定した。
データの読み込み
stanファイルではデータとしてN
とvals
を読み込むので、それらのリストを次の形式で作る。
sample_data <- list(N=xxxxx, vals=xxxxx) |
MCMCの実行
result <- stan( |
必要に応じて、以下も引数に加える。
iter
:乱数生成の繰り返し数(収束へ向かわせる)warmup
:バーンイン期間(初期値への依存性を緩和する)thin
:生成する乱数の間引き(自己相関を緩和する)chains
:何セット初期値から収束へ向かわせてみるか(チェーンごとに分布が異ならないかチェックするため)
結果の出力
ci <- c(0.025, 0.975) |
サンプル抽出
sample <- rstan::extract(result, permuted=F) # permuted=Fはサンプルの順番が変更されるのを防ぐため |
でサンプルが抽出できる。
このとき、sample
は3次元になっており、iter
・chains
・parameters
に対応する値が格納されている。
(バーンイン期間を経過した)全ての繰り返しについて、第2チェーンのmu
を取り出すなら
sample[,"chain:2","mu"] |
となる。
これを利用して代表値を計算することができる。