Skip to content

Fix / tidy / consolidate MCMC code #511

Open
@darrenjw

Description

@darrenjw

I've been having a look at the MCMC code in Breeze, and it seems like it could do with some tidying up. There are currently two separate implementations, which is confusing, neither of them are well-documented, and currently only one of them actually works correctly.

Within stats.distributions there is a MarkovChain object containing some Kernel functionality, and metropolisHastings code. The metropolisHastings kernel contains bugs which lead to incorrect output. I guess this means that no one has actually ever used this code. This is obviously a problem, requiring deleting, deprecating or fixing (it shouldn't be that difficult to fix).

Completely separate to this, there is breeze.stats.mcmc which also contains functions for carrying out Metropolis Hastings sampling. In some ways I prefer the MarkovChain API, but to be fair the code in stats.mcmc does appear to give correct output for the one example that I've tried...

Both implementations could be improved. eg. both work with raw acceptance ratios, which makes them very vulnerable to numerical underflow. I'd be happy to help tidy things up, but I wondered if there was any kind of plan for how to consolidate things.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions