# Proposal generators ## List of built-in proposals ```@docs StaticProposal ``` ```@docs RandomWalk ``` ```@docs TransformedProposal ``` ```@docs StackedProposal ``` ```@docs ComponentwiseProposal ``` ## Custom Proposal generator To define a custom proposal inherit from the abstract type ```julia struct MyProposal <: AbstractProposal{issymmetric::Bool} # ... end ``` ```@docs propose ``` Implement the sampling methods - initialization x₀ ~ p₀(⋅) by `x₀ = propose(p)` - and transition y ~ q(⋅|x) by `y = propose(p, x)` ```julia propose(rng::AbstractRNG, p::MyProposal) = ... propose(rng::AbstractRNG, p::MyProposal, x) = ... ``` For symmetric proposals `q(x|y) = q(y|x)` and the likelihood ratio can be neglected. For asymmetric proposals also implement method for calculating q(y|x) ```julia logpdf(p::AbstractProposal{false},x,y) = ... ```