Welcome to Monad-Bayes¶
Monad-Bayes is a library for probabilistic programming written in Haskell.
Define distributions as programs
Perform inference with a variety of standard methods defined compositionally
Integrate with Haskell code like this because Monad-Bayes is just a library, not a separate language
Example¶
model :: Distribution Double
model = do
x <- bernoulli 0.5
normal (if x then (-3) else 3) 1
image :: Distribution Plot
image = fmap (plot . histogram 200) (replicateM 100000 model)
sampler image
The program model
is a mixture of Gaussians. Its type Distribution Double
represents a distribution over reals.
image
is a program too: as its type shows, it is a distribution over plots. In particular, plots that arise from forming a 200 bin histogram out of 100000 independent identically distributed (iid) draws from model
.
To sample from image
, we simply write sampler image
, with the result shown below: