Comparison to other PP frameworks
UNDER CONSTRUCTION
Infer.NET | Stan | Edward | PyMC3 | Pyro | |
---|---|---|---|---|---|
Inference | EP, VMP, Gibbs | NUTS, HMC, ADVI | |||
Language | C#, F#, Csoft1 | Stan (Mix of C++ and R) Interfaces with Python and others | Python | ||
License | MIT | BSD (parts use GPL v3) | Apache v2 | ||
Online inference latency | Tiny | ||||
Scalability | |||||
Discrete random variables | Yes | No | Algorithm dependent | ||
Continuous random variables | Yes | Yes | Yes | ||
String random variables | Yes | No | No | ||
Stochastic gates (if / switch) | Yes | No | No | ||
Mixture models | Yes | Awkward | Yes | ||
Repeat blocks / raising model to power | Yes | No | No | ||
Arrays of arrays (jagged arrays) | Yes | No | No | ||
Increment log density | Yes | Yes | Yes | ||
Turing complete | No | No3 | Yes? | ||
Model evidence computation | Yes | No | No | ||
Non-parametric models | GP only | No | No |
- Support for Csoft (Probabilistic C#) is still experimental.
- Has an extensibility mechanism for adding new user-defined factors, message operators, distributions and constraints.
- “Turing complete” here means any computable random variable can be expressed in the modelling language. Stan is “Turing complete” in the sense that the user can specify any computable posterior density. Converting a computation that generates a random variable into a computation for the posterior density is a non-trivial task (and arguably the job of a probabilistic programming language). See On the computability of conditional probability.
For a comparison to Bayesian network software, see https://www.cs.ubc.ca/~murphyk/Software/bnsoft.html.