commit f3a20123ca4a37bd282fd16721e9148f53d171a3
parent 4d3238db73c1a001e8a76aa253190d795977df97
Author: 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.