chkpt_stan {chkptstanr} | R Documentation |
Checkpoint Sampling: Stan
Description
Fit Bayesian models using Stan with checkpointing.
Usage
chkpt_stan(
model_code,
data,
iter_warmup = 1000,
iter_sampling = 1000,
iter_per_chkpt = 100,
iter_typical = 150,
parallel_chains = 2,
threads_per = 1,
chkpt_progress = TRUE,
control = NULL,
seed = 1,
path,
...
)
Arguments
model_code |
Character string corresponding to the Stan model. |
data |
A named list of R objects (like for RStan).
Further details can be found in |
iter_warmup |
(positive integer) The number of warmup iterations to run per chain (defaults to 1000). |
iter_sampling |
(positive integer) The number of post-warmup iterations to run per chain (defaults to 1000). |
iter_per_chkpt |
(positive integer). The number of iterations per
checkpoint. Note that |
iter_typical |
(positive integer) The number of iterations in the
initial warmup, which finds the so-called typical set.
This is an initial phase, and not included in
|
parallel_chains |
(positive integer) The maximum number of MCMC
chains to run in parallel. If parallel_chains is not
specified then the default is to look for the option
|
threads_per |
(positive integer) Number of threads to use in within-chain
parallelization (defaults to |
chkpt_progress |
logical. Should the |
control |
A named list of parameters to control the sampler's behavior.
It defaults to NULL so all the default values are used.
For a comprehensive overview see |
seed |
(positive integer). The seed for random number generation to make results reproducible. |
path |
Character string. The path to the folder, that is used for saving the checkpoints. |
... |
Currently ignored. |
Value
An objet of class chkpt_stan
Examples
## Not run:
# path for storing checkpoint info
path <- create_folder(folder_name = "chkpt_folder_fit1")
stan_code <- make_stancode(bf(formula = count ~ zAge + zBase * Trt + (1|patient),
family = poisson()),
data = epilepsy)
stan_data <- make_standata(bf(formula = count ~ zAge + zBase * Trt + (1|patient),
family = poisson()),
data = epilepsy)
# "random" intercept
fit1 <- chkpt_stan(model_code = stan_code,
data = stan_data,
iter_warmup = 1000,
iter_sampling = 1000,
iter_per_chkpt = 250,
path = path)
draws <- combine_chkpt_draws(object = fit1)
posterior::summarise_draws(draws)
# eight schools example
# path for storing checkpoint info
path <- create_folder(parent_folder = "chkpt_folder_fit2")
stan_code <- "
data {
int<lower=0> n;
real y[n];
real<lower=0> sigma[n];
}
parameters {
real mu;
real<lower=0> tau;
vector[n] eta;
}
transformed parameters {
vector[n] theta;
theta = mu + tau * eta;
}
model {
target += normal_lpdf(eta | 0, 1);
target += normal_lpdf(y | theta, sigma);
}
"
stan_data <- schools.data <- list(
n = 8,
y = c(28, 8, -3, 7, -1, 1, 18, 12),
sigma = c(15, 10, 16, 11, 9, 11, 10, 18)
)
fit2 <- chkpt_stan(model_code = stan_code,
data = stan_data,
iter_warmup = 1000,
iter_sampling = 1000,
iter_per_chkpt = 250,
path = path)
draws <- combine_chkpt_draws(object = fit2)
posterior::summarise_draws(draws)
## End(Not run)