Skipping the Hastings computation for symmetric proposals #45
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an attempt to fix #41 so that the Hastings part of the Metropolis-Hastings log acceptance probability is not computed for symmetric proposals.
I separated out the computation from
AbstractMCMC.step
, and defined different behaviors for the ratio computation for different proposals. Basically, if the proposal is a (vector of) symmetric distribution, the Hastings part is not computed.I added two tests to check if a sampler is indeed symmetric. I'm happy to add tests as directed. (I found it hard to test that the correct behavior was achieved because this merely skips the computation of something that evaluates to 0...)
Not sure if this is a good way to do this. An alternative solution might have been to add a filed in
MetropolisHastings
(e.g.issymmetric::Bool
) to specify whether the proposal is symmetric. I'm open to suggestions.