mcmc-types

Common types for implementing MCMC algorithms.
git clone git://git.jtobin.io/mcmc-types.git
Log | Files | Refs | README | LICENSE

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