# mwc-probability: Sampling function-based probability distributions.

[ library, math, mit ] [ Propose Tags ]

A simple probability distribution type, where distributions are characterized by sampling functions.

This implementation is a thin layer over mwc-random, which handles RNG state-passing automatically by using a PrimMonad like IO or ST s under the hood.

Examples

Transform a distribution's support while leaving its density structure invariant:

-- uniform over [0, 1] to uniform over [1, 2]
fmap succ uniform

Sequence distributions together using bind:

-- a beta-binomial compound distribution
beta 1 10 >>= binomial 10

Use do-notation to build complex joint distributions from composable, local conditionals:

hierarchicalModel = do
[c, d, e, f] <- replicateM 4 $uniformR (1, 10) a <- gamma c d b <- gamma e f p <- beta a b n <- uniformR (5, 10) binomial n p [Skip to Readme] Versions [faq] 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.1.3, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4 CHANGELOG base (>=4.8 && <6), mwc-random (>0.13 && <0.15), primitive (>=0.6 && <1.0), transformers (>=0.5 && <1.0) [details] MIT Jared Tobin, Marco Zocca jared@jtobin.ca, zocca.marco gmail Revision 1 made by JaredTobin at Wed Jul 11 23:26:40 UTC 2018 Math http://github.com/jtobin/mwc-probability head: git clone http://github.com/jtobin/mwc-probability.git by JaredTobin at Sat Jun 30 05:53:25 UTC 2018 LTSHaskell:2.0.4, NixOS:2.0.4, Stackage:2.0.4 3772 total (38 in the last 30 days) (no votes yet) [estimated by rule of succession] λ λ λ Docs available Last success reported on 2018-06-30 ## Modules [Index] ## Downloads Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'. #### Maintainer's Corner For package maintainers and hackage trustees ## Readme for mwc-probability-2.0.4 [back to package description] # mwc-probability Sampling function-based probability distributions. A simple probability distribution type, where distributions are characterized by sampling functions. This implementation is a thin layer over mwc-random, which handles RNG state-passing automatically by using a PrimMonad like IO or ST s under the hood. ## Examples • Transform a distribution's support while leaving its density structure invariant: -- uniform over [0, 1] transformed to uniform over [1, 2] succ <$> uniform

• Sequence distributions together using bind:

-- a beta-binomial composite distribution
beta 1 10 >>= binomial 10

• Use do-notation to build complex joint distributions from composable, local conditionals:

hierarchicalModel = do
[c, d, e, f] <- replicateM 4 (uniformR (1, 10))
a <- gamma c d
b <- gamma e f
p <- beta a b
n <- uniformR (5, 10)
binomial n p


Check out the haddock-generated docs on Hackage for other examples.

## Etc.

PRs and issues welcome.