mcmc

Sample from a posterior using Markov chain Monte Carlo

https://github.com/dschrempf/mcmc#readme

Version on this page:0.4.0.0
LTS Haskell 18.22:0.5.0.0
Stackage Nightly 2022-01-19:0.6.1.0
Latest on Hackage:0.6.1.0

See all snapshots mcmc appears in

Markov chain Monte Carlo sampler

Sample from a posterior using Markov chain Monte Carlo (MCMC) algorithms.

At the moment, the following algorithms are available:

  • Metropolis-Hastings-Green 1;
  • Metropolis-coupled Markov chain Monte Carlo (also known as parallel tempering) 2 , 3.

Documentation

The source code contains detailed documentation about general concepts as well as specific functions.

Examples

Example MCMC analyses can be built with Stack and are attached to this repository.

git clone https://github.com/dschrempf/mcmc.git
cd mcmc
stack build

For example, estimate the accuracy of an archer with

stack exec archery

Footnotes

1 Geyer, C. J., Introduction to Markov chain Monte Carlo, In Handbook of Markov Chain Monte Carlo (pp. 45) (2011). CRC press.

2 Geyer, C. J., Markov chain monte carlo maximum likelihood, Computing Science and Statistics, Proceedings of the 23rd Symposium on the Interface, (), (1991).

3 Altekar, G., Dwarkadas, S., Huelsenbeck, J. P., & Ronquist, F., Parallel metropolis coupled markov chain monte carlo for bayesian phylogenetic inference, Bioinformatics, 20(3), 407–415 (2004).

Changes

Markov chain Monte Carlo sampling - ChangeLog

Unreleased changes

0.4.0.0

  • Greatly improve documentation.
  • Major design change: Introduction of the Algorithm type class; algorithms are data types. See MHG.
  • Metropolic-coupled Markov chain Monte Carlo algorithm (parallel chains).
  • Optimal acceptance rate depends on dimension of proposal.
  • Use a circular trace with constant memory usage (big change).
  • Therefore, batch monitors use vectors now.
  • Always save chain with complete trace (but with sensible length).
  • Determine necessary trace length at initialization.
  • Rename Item to Link.
  • Rename Status to Chain and separate Settings and Environment from the Chain.
  • Many bug fixes.

0.3.0

  • New shorter example/test for dating trees.
  • noData allows running a chain without likelihood function.
  • Give proposal parameters PName, PDescription, and PWeight newtype wrappers.
  • Give Tune a data type.
  • Allow periodical cleansing of state (Cleaner).
  • Add description string to proposals, so that they can be identified in an easier way.
  • Add simplices and proposals on simplices.
  • slideUniform renamed to slideUniformSymmetric.
  • Merge tools into internal.
  • Do not export internal modules.

0.2.4

  • Change order of arguments for proposals.
  • ‘slideStem’ was renamed to ‘slideBranch’.
  • Change ProposalSimple from newtype to type.
  • Contravariant instances of parameter and batch monitors. Use (>$<) instead of (@.) and (@#).
  • Add gammaDirichlet prior for partitioned dating analyses.

0.2.3

  • Contrary proposals.
  • Change how monitors are lifted (use normal function, not a lens).
  • Priors.
  • Remove concurrent monitors (was slow).
  • Improve MCMC sampler output.

0.2.2

  • Move away from hpack.

0.2.1

  • Consistently use ByteString instead of Text.
  • Verbosity levels.
  • Improved handling of proposals, moves, and monitors.
  • Bactrian moves.
  • Many small changes.

0.1.3

Many changes; notably it is now possible to continue a Markov chain run.