- Source: PyMC
PyMC (formerly known as PyMC3) is a probabilistic programming language written in Python. It can be used for Bayesian statistical modeling and probabilistic machine learning.
PyMC performs inference based on advanced Markov chain Monte Carlo and/or variational fitting algorithms.
It is a rewrite from scratch of the previous version of the PyMC software.
Unlike PyMC2, which had used Fortran extensions for performing computations, PyMC relies on PyTensor, a Python library that allows defining, optimizing, and efficiently evaluating mathematical expressions involving multi-dimensional arrays.
From version 3.8 PyMC relies on ArviZ to handle plotting, diagnostics, and statistical checks. PyMC and Stan are the two most popular probabilistic programming tools.
PyMC is an open source project, developed by the community and has been fiscally sponsored by NumFOCUS.
PyMC has been used to solve inference problems in several scientific domains, including
astronomy,
epidemiology,
molecular biology,
crystallography,
chemistry,
ecology
and psychology.
Previous versions of PyMC were also used widely, for example in
climate science,
public health, neuroscience,
and parasitology.
After Theano announced plans to discontinue development in 2017, the PyMC team evaluated TensorFlow Probability as a computational backend, but decided in 2020 to fork Theano under the name Aesara.
Large parts of the Theano codebase have been refactored and compilation through JAX and Numba were added.
The PyMC team has released the revised computational backend under the name PyTensor and continues the development of PyMC.
Inference engines
PyMC implements non-gradient-based and gradient-based Markov chain Monte Carlo (MCMC) algorithms for Bayesian inference and stochastic, gradient-based variational Bayesian methods for approximate Bayesian inference.
MCMC-based algorithms:
No-U-Turn sampler (NUTS), a variant of Hamiltonian Monte Carlo and PyMC's default engine for continuous variables
Metropolis–Hastings, PyMC's default engine for discrete variables
Sequential Monte Carlo for static posteriors
Sequential Monte Carlo for approximate Bayesian computation
Variational inference algorithms:
Black-box Variational Inference
See also
Stan is a probabilistic programming language for statistical inference written in C++
ArviZ a Python library for exploratory analysis of Bayesian models
Bambi is a high-level Bayesian model-building interface based on PyMC
References
Further reading
Martin, Osvaldo (2024). Bayesian Analysis with Python : A Practical Guide to Probabilistic Modeling (Third ed.). Packt. ISBN 978-1-80512-716-1.
External links
PyMC website
PyMC source, a Git repository hosted on GitHub
PyTensor is a Python library for defining, optimizing, and efficiently evaluating mathematical expressions involving multi-dimensional arrays.
Kata Kunci Pencarian:
- PyMC
- Probabilistic programming
- Theano (software)
- ArviZ
- Allen B. Downey
- Causal model
- Plate notation
- Bambi (software)
- Hamiltonian Monte Carlo
- Markov chain Monte Carlo