Functions to set up MCMC samplers and change the starting values of their parameters, for use in mcmc().

hmc(Lmin = 5, Lmax = 10, epsilon = 0.1, diag_sd = 1)

rwmh(proposal = c("normal", "uniform"), epsilon = 0.1, diag_sd = 1)

slice(max_doublings = 5)



minimum number of leapfrog steps (positive integer, Lmin > Lmax)


maximum number of leapfrog steps (positive integer, Lmax > Lmin)


leapfrog stepsize hyperparameter (positive, will be tuned)


estimate of the posterior marginal standard deviations (positive, will be tuned).


the probability distribution used to generate proposal states


the maximum number of iterations of the 'doubling' algorithm used to adapt the size of the slice


a sampler object that can be passed to mcmc().


During the warmup iterations of mcmc, some of these sampler parameters will be tuned to improve the efficiency of the sampler, so the values provided here are used as starting values.

For hmc(), the number of leapfrog steps at each iteration is selected uniformly at random from between Lmin and Lmax. diag_sd is used to rescale the parameter space to make it more uniform, and make sampling more efficient.

rwmh() creates a random walk Metropolis-Hastings sampler; a a gradient-free sampling algorithm. The algorithm involves a proposal generating step proposal_state = current_state + perturb by a random perturbation, followed by Metropolis-Hastings accept/reject step. The class is implemented for uniform and normal proposals.

slice() implements a multivariate slice sampling algorithm. Currently this algorithm can only be used with single-precision models (set using the precision argument to model()). The parameter max_doublings is not tuned during warmup.