R stan、コンパイルとMCMCサンプリング [データサイエンス、統計モデル]
ステップ 1 rstanを呼び出す
library(rstan)
rstan_options(auto_write = TRUE)
options(mc.cores = parallel::detectCores())
ステップ 2 データとモデルを読み込む
外部データでも良いし、Rの中に記述するやり方でも良いです。
↑
3-1, 3-2を同時にする方法もあって、下記の様に書くと、コンパイルとモデルが同時に実行されます。
fit = stan(file="./stan/Binom.stan", data=data_stan_bin)
イテレーションの回数を変更したい、とか、chainsをとりあえず1回にして、後で4回実行したいという要望があると思うので、コンパイルとサンプリングは分けておいた方が良い気がします。
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回実行したいという要望があると思うので、コンパイルとサンプリングは分けておいた方が良い気がします。