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)

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

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

epsilon | leapfrog stepsize hyperparameter (positive, will be tuned) |

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

proposal | the probability distribution used to generate proposal states |

max_doublings | 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.