Common types for implementing MCMC algorithms.
Log | Files | Refs | README | LICENSE

commit 4252def31d7e35fd56c588e3bbf008aff5edaf96
parent 83e8dfa11786e7b8bcdc458509e0de719da74604
Author: Jared Tobin <>
Date:   Tue,  6 Oct 2015 20:49:58 +1300

1.0.0 Update.

Diffstat: | 39+++++++++++++++++++++++++++++++++++++++
Mmcmc-types.cabal | 22++++++++++++++++++----
Mstack.yaml | 4++--
3 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/ b/ @@ -0,0 +1,39 @@ +# mcmc-types [![Build Status](]( + +Markov Chain Monte Carlo (MCMC) algorithms are useful for approximating +integrals in Bayesian statistics. + +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: + +* A *target distribution* over some parameter space +* A *parameter space* for the chain to wander over +* A *transition operator* to drive the Markov chain + +The *mcmc-types* library provides generic definitions for each of these. + +`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 `Transition` type permits probabilistic transitions over some state space +by way of the underlying `Prob` monad. + +See e.g. the [mighty-metropolis]( +library for example use. + diff --git a/mcmc-types.cabal b/mcmc-types.cabal @@ -1,7 +1,6 @@ name: mcmc-types -version: +version: 1.0.0 synopsis: Common types for sampling. -description: Common types for sampling. homepage: license: MIT license-file: LICENSE @@ -9,13 +8,28 @@ author: Jared Tobin maintainer: build-type: Simple cabal-version: >= 1.18 +description: + Common types for implementing Markov Chain Monte Carlo (MCMC) algorithms. + + An instance of an MCMC problem can be characterized by the following: + + * A /target distribution/ over some parameter space + * A /parameter space/ for a Markov chain to wander over + * A /transition operator/ to drive the Markov chain + + /mcmc-types/ provides the suitably-general 'Target', 'Chain', and + 'Transition' types for representing these things respectively. + +Source-repository head + Type: git + Location: library exposed-modules: Data.Sampling.Types default-language: Haskell2010 build-depends: - base + base < 5 , containers - , mwc-probability + , mwc-probability >= 1.0.0 , transformers diff --git a/stack.yaml b/stack.yaml @@ -1,6 +1,6 @@ flags: {} packages: - '.' - - ../mwc-probability -extra-deps: [] +extra-deps: + - mwc-probability-1.0.0 resolver: lts-3.3