So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

Stan: RStan 2.7.0で並列化 [統計]

Stan 2.7がリリースされました。RStanCRANにはいって、並列化に対応したとのことなので、ためしてみました。

以前の常微分方程式をつかったモデルのパラメーター推定のRコードをRStan 2.7標準の並列化に対応させてみます。環境はOS X 10.10.4、R 3.2.1、RStan 2.7.0-1です。

## データ
set.seed(123)
r <- 0.1
K <- 1000
ts <- seq(0, 30)
N <- vector("integer", length(ts))
N[1] <- 100
for (t in seq_along(ts)[-1]) {
  N[t] <- rpois(1, N[t -1] + r * N[t - 1] * (K - N[t - 1]) / K)
}

## モデル
library(rstan)
rstan_options(auto_write = TRUE)
options(mc.cores = parallel::detectCores())

inits <- list()
inits[[1]] <- list(theta = c(0.01, 1500))
inits[[2]] <- list(theta = c(0.1, 500))
inits[[3]] <- list(theta = c(0.05, 2000))
inits[[4]] <- list(theta = c(0.2, 1000))
seed <- 3

fit  <- stan(file = "logistic2.stan",
             data = list(T = length(ts) - 1,
                         N0 = N[1],
                         N = N[-1],
                         t0 = ts[1],
                         ts = ts[-1]),
             init = inits, seed = seed,
             chains = 4, iter = 2000,
             open_progress = FALSE)

rstan_options(auto_write = TRUE)options(mc.cores = parallel::detectCores())を指定しておくと並列化計算するようです。また、stan()関数中のopen_progressTRUEにしておくと、途中経過を確認できます。OS Xでは、ブラウザに表示されました。


タグ:STAn RStan
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0