Returns a program that takes a Metropolis-Hastings step.
oryx.experimental.mcmc.metropolis_hastings(
unnormalized_log_prob: oryx.core.ppl.LogProbFunction
,
inner_step: oryx.core.ppl.LogProbFunction
) -> oryx.core.ppl.LogProbFunction
The Metropolis-Hastings algorithm takes a proposal distribution (inner_step
)
and iteratively accepts or rejects proposals from it according to an accept
ratio calculated from unnormalized_log_prob
and log_prob(inner_step)
. This
creates a Markov Chain whose stationary distribution is some target
distribution (specified by unnormalized_log_prob
).
Args |
unnormalized_log_prob
|
A function that computes the log probability of a
state.
|
inner_step
|
A probabilistic program that acts as the proposal distribution
for a Metropolis-Hasting step.
|
Returns |
A program that proposes a new state and accepts or rejects according to the
unnormalized log probability and proposal distribution transition
probabilities.
|