R/mcmc-kernels.R
mcmc_metropolis_hastings.Rd
The Metropolis-Hastings algorithm is a Markov chain Monte Carlo (MCMC) technique which uses a proposal distribution to eventually sample from a target distribution.
mcmc_metropolis_hastings(inner_kernel, seed = NULL, name = NULL)
inner_kernel |
|
---|---|
seed | integer to seed the random number generator. |
name | string prefixed to Ops created by this function. Default value: |
a Monte Carlo sampling kernel
Note: inner_kernel$one_step
must return kernel_results
as a collections$namedtuple
which must:
have a target_log_prob
field,
optionally have a log_acceptance_correction
field, and,
have only fields which are Tensor
-valued.
The Metropolis-Hastings log acceptance-probability is computed as:
log_accept_ratio = (current_kernel_results.target_log_prob - previous_kernel_results.target_log_prob + current_kernel_results.log_acceptance_correction)
If current_kernel_results$log_acceptance_correction
does not exist, it is
presumed 0
(i.e., that the proposal distribution is symmetric).
The most common use-case for log_acceptance_correction
is in the
Metropolis-Hastings algorithm, i.e.,
accept_prob(x' | x) = p(x') / p(x) (g(x|x') / g(x'|x)) where, p represents the target distribution, g represents the proposal (conditional) distribution, x' is the proposed state, and, x is current state
The log of the parenthetical term is the log_acceptance_correction
.
The log_acceptance_correction
may not necessarily correspond to the ratio of
proposal distributions, e.g, log_acceptance_correction
has a different
interpretation in Hamiltonian Monte Carlo.
Other mcmc_kernels:
mcmc_dual_averaging_step_size_adaptation()
,
mcmc_hamiltonian_monte_carlo()
,
mcmc_metropolis_adjusted_langevin_algorithm()
,
mcmc_no_u_turn_sampler()
,
mcmc_random_walk_metropolis()
,
mcmc_replica_exchange_mc()
,
mcmc_simple_step_size_adaptation()
,
mcmc_slice_sampler()
,
mcmc_transformed_transition_kernel()
,
mcmc_uncalibrated_hamiltonian_monte_carlo()
,
mcmc_uncalibrated_langevin()
,
mcmc_uncalibrated_random_walk()