commitf3a20123ca4a37bd282fd16721e9148f53d171a3parent4d3238db73c1a001e8a76aa253190d795977df97Author:Jared Tobin <jared@jtobin.ca>Date:Tue, 6 Oct 2015 20:56:07 +1300 Update README.Diffstat:

M | README.md | | | 40 | +++++++++++++++------------------------- |

1 file changed, 15 insertions(+), 25 deletions(-)diff --git a/README.md b/README.md@@ -1,38 +1,28 @@ # mcmc-types [![Build Status](https://secure.travis-ci.org/jtobin/mcmc-types.png)](http://travis-ci.org/jtobin/mcmc-types) -Markov Chain Monte Carlo (MCMC) algorithms are useful for approximating -integrals in Bayesian statistics. +Common types for implementing Markov Chain Monte Carlo (MCMC) algorithms. -Typically one wants to integrate (something proportional to) a probability -density over some state space corresponding to a model's parameters. Coming up -with a suitable grid of points when approximating an integral can be hard, but -using a Markov chain to do the dirty work offloads the problem to probability -theory. - -The idea is that the Markov chain wanders around the state space such that, in -the limit, it visits regions of the space in proportion to their probability. -The points that it visits can then be used to approximate integrals. This is -usually preferable to stateless Monte Carlo methods like rejection or -importance sampling when the number of dimensions is high. - -An instance of an MCMC problem can be characterized by the following types: +An instance of an MCMC problem can be characterized by the following: * A *target distribution* over some parameter space -* A *parameter space* for the chain to wander over +* A *parameter space* for a Markov chain to wander over * A *transition operator* to drive the Markov chain -The *mcmc-types* library provides generic definitions for each of these. +*mcmc-types* provides the suitably-general `Target`, `Chain`, and +`Transition` types for usefully representing these things respectively. -`Target` is a product type intended to hold a log-target density function and -potentially its gradient. +* `Target` is a product type intended to hold a log-target density function and + potentially its gradient. -The `Chain` type represents a kind of 'annotated' parameter space. Technically -all that's required is the type of the parameter space itself (held here in -`chainPosition`) but in practice some additional information is typically -useful. +* The `Chain` type represents an 'annotated' parameter space. Technically all + that's required is the type of the parameter space itself (held here in + `chainPosition`) but in practice some additional information is typically + useful. The `chainTunables` field can be used to hold arbitrary data; one + should avoid using it to do something nasty like, say, invalidating the Markov + property. -The `Transition` type permits probabilistic transitions over some state space -by way of the underlying `Prob` monad. +* The `Transition` type permits probabilistic transitions over some state space + by way of the underlying `Prob` monad. See e.g. the [mighty-metropolis](http://github.com/jtobin/mighty-metropolis) library for example use.