SSブログ

R stan、コンパイルとMCMCサンプリング [データサイエンス、統計モデル]

ステップ 1 rstanを呼び出す
library(rstan)
rstan_options(auto_write = TRUE)
options(mc.cores = parallel::detectCores())

ステップ 2 データとモデルを読み込む
外部データでも良いし、Rの中に記述するやり方でも良いです。

# stan モデルの定義
stan_code <- '
data{
  int n;
  int x;
}

parameters{
  real p;
}

model{
  x ~ binomial(n, p);
}
'
# stan データの定義
data_stan_bin <- list(n=30, x=3)

ステップ 3-1 C++に変換してコンパイルする
model.mcmc = rstan::stan_model(model_code = stan_code)

ステップ 3-2 MCMCサンプリング
fit = rstan::sampling(model.mcmc, data = data_stan_bin, iter = 10000, chains = 4)


3-1, 3-2を同時にする方法もあって、下記の様に書くと、コンパイルとモデルが同時に実行されます。
fit = stan(file="./stan/Binom.stan", data=data_stan_bin)

イテレーションの回数を変更したい、とか、chainsをとりあえず1回にして、後で4回実行したいという要望があると思うので、コンパイルとサンプリングは分けておいた方が良い気がします。

nice!(3)  コメント(0) 
共通テーマ:日記・雑感