README.md (1548B)
1 # mcmc-types 2 3 [![Build Status](https://secure.travis-ci.org/jtobin/mcmc-types.png)](http://travis-ci.org/jtobin/mcmc-types) 4 [![Hackage Version](https://img.shields.io/hackage/v/mcmc-types.svg)](http://hackage.haskell.org/package/mcmc-types) 5 [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/jtobin/mcmc-types/blob/master/LICENSE) 6 7 Common types for implementing Markov Chain Monte Carlo (MCMC) algorithms. 8 9 An instance of an MCMC problem can be characterized by the following: 10 11 * A *target distribution* over some parameter space 12 * A *parameter space* for a Markov chain to wander over 13 * A *transition operator* to drive the Markov chain 14 15 *mcmc-types* provides the suitably-general `Target`, `Chain`, and 16 `Transition` types for usefully representing these things respectively. 17 18 * `Target` is a product type intended to hold a log-target density function and 19 potentially its gradient. 20 21 * The `Chain` type represents an 'annotated' parameter space. Technically all 22 that's required is the type of the parameter space itself (held here in 23 `chainPosition`) but in practice some additional information is typically 24 useful. The `chainTunables` field can be used to hold arbitrary data; one 25 should avoid using it to do something nasty like, say, invalidating the Markov 26 property. 27 28 * The `Transition` type permits probabilistic transitions over some state space 29 by way of the underlying `Prob` monad. 30 31 See e.g. the [mighty-metropolis](http://github.com/jtobin/mighty-metropolis) 32 library for example use. 33