Copyright | (c) 2015 Jared Tobin |
---|---|
License | MIT |
Maintainer | Jared Tobin <jared@jtobin.ca> |
Stability | unstable |
Portability | ghc |
Safe Haskell | None |
Language | Haskell2010 |
Common types for implementing Markov Chain Monte Carlo (MCMC) algorithms.
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 here is the type of the parameter space
itself (held here in chainPosition
) but in practice some additional
information is typically useful. Additionally there is chainScore
for
holding the most recent score of the chain, as well as the target itself for
implementing things like annealing. The chainTunables
field can be used
to hold arbitrary data.
One should avoid exploiting these features 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.
- type Transition m a = StateT a (Prob m) ()
- data Chain a b = Chain {
- chainTarget :: Target a
- chainScore :: !Double
- chainPosition :: a
- chainTunables :: Maybe b
- data Target a = Target {}
Documentation
type Transition m a = StateT a (Prob m) () Source #
A generic transition operator.
Has access to randomness via the underlying Prob
monad.
The Chain
type specifies the state of a Markov chain at any given
iteration.
Chain | |
|