Stan: RStan 2.7.0で並列化 [統計]
Stan 2.7がリリースされました。RStanがCRANにはいって、並列化に対応したとのことなので、ためしてみました。
以前の常微分方程式をつかったモデルのパラメーター推定の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_progressをTRUEにしておくと、途中経過を確認できます。OS Xでは、ブラウザに表示されました。
コメント 0