mcmc_sample {psborrow2} | R Documentation |
Sample from Stan model
Description
Method to sample from compiled Stan model and
return a CmdStanMCMC
object with draws.
Usage
mcmc_sample(x, ...)
## S4 method for signature 'ANY'
mcmc_sample(x, ...)
## S4 method for signature 'Analysis'
mcmc_sample(
x,
iter_warmup = 1000L,
iter_sampling = 10000L,
chains = 4L,
verbose = FALSE,
...
)
## S4 method for signature 'Simulation'
mcmc_sample(
x,
posterior_quantiles = c(0.025, 0.975),
iter_warmup = 1000L,
iter_sampling = 10000L,
chains = 4L,
verbose = FALSE,
keep_cmd_stan_models = FALSE,
...
)
Arguments
x |
object to sample, such as |
... |
additional arguments passed to the $sample() method of a
|
iter_warmup |
integer. The number of warm up iterations to run per chain. The default is 1000. |
iter_sampling |
integer. The number of post-warm up iterations to run per chain. The default is 10000. |
chains |
integer. The number of Markov chains to run. The default is 4. |
verbose |
logical. Whether to print sampler updates ( |
posterior_quantiles |
numeric vector of length two.
The posterior quantiles used for summarizing simulation results. The
default is |
keep_cmd_stan_models |
logical. Whether to keep the
|
Details
Simulation objects
This function takes draws from an MCMC sampler and summarizes results.
Value
An object of class CmdStanMCMC
An object of class MCMCSimulationResult
Examples
## Analysis objects
if (check_cmdstan()) {
anls <- create_analysis_obj(
data_matrix = example_matrix,
covariates = add_covariates(
covariates = c("cov1", "cov2"),
priors = prior_normal(0, 1000)
),
outcome = outcome_surv_weibull_ph(
"time",
"cnsr",
shape_prior = prior_normal(0, 1000),
baseline_prior = prior_normal(0, 1000)
),
borrowing = borrowing_hierarchical_commensurate(
"ext",
prior_exponential(.001)
),
treatment = treatment_details("trt", prior_normal(0, 1000))
)
mcmc_results <- mcmc_sample(anls, chains = 1, iter_warmup = 500L, iter_sampling = 1000L)
}
## Simulation objects
base_mat <- matrix(
c(
rep(0, 200), rep(0, 200), rep(1, 200),
rep(1, 200), rep(0, 200), rep(0, 200),
rep(0, 600)
),
ncol = 3,
dimnames = list(NULL, c("ext", "trt", "driftOR"))
)
add_binary_endpoint <- function(odds_ratio,
base_matrix = base_mat) {
linear_predictor <- base_matrix[, "trt"] * log(odds_ratio)
prob <- 1 / (1 + exp(-linear_predictor))
bin_endpoint <- rbinom(
NROW(base_matrix),
1,
prob
)
cbind(base_matrix, matrix(bin_endpoint, ncol = 1, dimnames = list(NULL, "ep")))
}
data_list <- list(
list(add_binary_endpoint(1.5), add_binary_endpoint(1.5)),
list(add_binary_endpoint(2.5), add_binary_endpoint(2.5))
)
guide <- data.frame(
trueOR = c(1.5, 2.5),
driftOR = c(1.0, 1.0),
index = 1:2
)
sdl <- sim_data_list(
data_list = data_list,
guide = guide,
effect = "trueOR",
drift = "driftOR",
index = "index"
)
if (check_cmdstan()) {
sim_object <- create_simulation_obj(
data_matrix_list = sdl,
outcome = outcome_bin_logistic("ep", prior_normal(0, 1000)),
borrowing = sim_borrowing_list(list(
full_borrowing = borrowing_full("ext"),
bdb = borrowing_hierarchical_commensurate("ext", prior_exponential(0.0001))
)),
treatment = treatment_details("trt", prior_normal(0, 1000))
)
mcmc_sample(sim_object, chains = 1, iter_warmup = 500L, iter_sampling = 1000L)
}
## Not run:
library(future)
# Use two separate R processes
plan("multisession", workers = 2)
# and two parallel threads in each.
mcmc_sample(sim_object, chains = 1, iter_warmup = 500L, iter_sampling = 1000L, parallel_chains = 2)
# Tidy up processes when finished
plan("sequential")
## End(Not run)