name: declarative
version: 0.5.4
synopsis: DIY Markov Chains.
homepage: http://github.com/jtobin/declarative
license: MIT
license-file: LICENSE
author: Jared Tobin
maintainer: jared@jtobin.ca
category: Math
build-type: Simple
tested-with: GHC == 8.2.2, GHC == 8.8.3, GHC == 8.10.4
cabal-version: >=1.10
description:
This package presents a simple combinator language for Markov transition
operators that are useful in MCMC.
.
Any transition operators sharing the same stationary distribution and obeying
the Markov and reversibility properties can be combined in a couple of ways,
such that the resulting operator preserves the stationary distribution and
desirable properties amenable for MCMC.
.
We can deterministically concatenate operators end-to-end, or sample from
a collection of them according to some probability distribution. See
for details.
.
A useful strategy is to hedge one's 'sampling risk' by occasionally
interleaving a computationally-expensive transition (such as a gradient-based
algorithm like Hamiltonian Monte Carlo or NUTS) with cheap Metropolis
transitions.
.
> transition = frequency [
> (9, metropolis 1.0)
> , (1, hamiltonian 0.05 20)
> ]
.
Alternatively: sample consecutively using the same algorithm, but over a
range of different proposal distributions.
.
> transition = concatAllT [
> slice 0.5
> , slice 1.0
> , slice 2.0
> ]
.
Or just mix and match and see what happens!
.
> transition =
> sampleT
> (sampleT (metropolis 0.5) (slice 0.1))
> (sampleT (hamiltonian 0.01 20) (metropolis 2.0))
.
Check the test suite for example usage.
Source-repository head
Type: git
Location: http://github.com/jtobin/declarative.git
library
default-language: Haskell2010
hs-source-dirs: lib
exposed-modules:
Numeric.MCMC
, Numeric.MCMC.Anneal
build-depends:
base >= 4 && < 6
, kan-extensions >= 5 && < 6
, mcmc-types >= 1.0.1 && < 2
, mwc-probability >= 2.0 && < 3
, mighty-metropolis >= 2.0 && < 3
, lens >= 4 && < 6
, primitive >= 0.6 && < 1.0
, pipes >= 4 && < 5
, hasty-hamiltonian >= 1.3 && < 2
, speedy-slice >= 0.1.5 && < 1
, transformers >= 0.5 && < 1.0
Test-suite rosenbrock
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Rosenbrock.hs
default-language: Haskell2010
ghc-options:
-rtsopts
build-depends:
base >= 4 && < 6
, mwc-probability >= 2.0 && < 3
, declarative