The dagger library for probabilistic programming in OCaml.
Single-site Metropolis-Hastings, a.k.a. lightweight Metropolis-Hastings
Incrementalized single-site MH, similar to that implemented in Hakaru10
Sequential Monte-Carlo, with systematic and stratified resampling
The main package is
provide distributions implemented respectively through the GSL (GPL-licensed) and
Look no further for the documentation.
Examples will be made available in the
examples subdirectory. For now, you'll find:
an implementation of a 2d ising model and a toy study of its behaviour around its critical temperature
an experiment on forecasting wind power production using an ad-hoc Kalman filter
Contributions and issue reports are welcome. Development currently happen on https://gitlab.com/igarnier/monorepo/ but
I can take care of cherry-picking pull requests submitted here.
The name dagger refers to two things:
a good mathematical framework for giving a semantics to probabilistic
programming is a certain dagger category of Markov
kernels, see eg this or that paper;
Bayesian inversion corresponds to a particular symmetry of a mathematical
structure and this symmetry is denoted using the † symbol.
the underlying representation of the probabilistic model when using the
incrementalized backend is as a directed acyclic graph (ie a DAG, which
sounds exactly like the French translation of dagger)