pymc3
Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Theano
Decision gist · record as of 2026-08-14
Yes, but with conditions. PyMC3 is production-stable and well-documented, with low install friction and no known vulnerabilities. However, it is now legacy—the PyMC project has been renamed and moved to newer backends. Install PyMC3 if you are maintaining existing code, learning Bayesian modeling from established tutorials, or need its specific theano-pymc integration. For new projects, evaluate the current PyMC version first to avoid future maintenance burden.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires theano-pymc as a compiled backend; some systems may need additional build tools or BLAS/LAPACK libraries for optimal performance.
- Low install friction with a pure-wheel distribution and 12 runtime dependencies.
- The package is actively maintained with recent commits and has been in production use since 2016, though it is now legacy—the project has transitioned to PyMC (renamed), and this version relies on theano-pymc as its computational backend.
License · maintenance · safety
Apache License, Version 2.0 (permissive) — Licensed under Apache License, Version 2.0 (permissive), allowing commercial and private use with minimal restrictions. You may use, modify, and distribute PyMC3 freely provided you include the license notice.
last release 2024-05-31 (805 days) · last repo commit 2026-08-13 · 9,710 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 319,118 downloads/mo, #7,647 on PyPI
Alternatives
Verify before relying
import pymc3 as pm
import numpy as np
with pm.Model() as model:
mu = pm.Normal('mu', mu=0, sigma=1)
obs = pm.Normal('obs', mu=mu, sigma=1, observed=np.array([1, 2, 3]))
trace = pm.sample()- Whether theano-pymc remains actively maintained and suitable for new projects given PyMC3's legacy status
- Performance characteristics and scalability for models with many parameters
- Compatibility and migration path from PyMC3 to the current PyMC version
What it is and what it does
PyMC3 is a mature probabilistic programming framework that lets you specify Bayesian statistical models using intuitive syntax and then fit them using state-of-the-art sampling and inference algorithms. It wraps theano-pymc for computational optimization and provides both MCMC methods (including the No U-Turn Sampler) and variational inference (ADVI) for approximate posterior estimation, making it applicable to a wide range of statistical modeling problems.
The package is designed for researchers and practitioners who need flexible Bayesian modeling without deep expertise in sampling algorithms. It handles missing value imputation transparently and supports complex models. However, PyMC3 is now considered legacy—the project has been renamed to PyMC and moved to newer computational backends. New projects should evaluate whether to use the current PyMC version instead, though PyMC3 remains functional and documented.
Use it for
- Fit hierarchical Bayesian models to experimental or observational data with uncertainty quantification
- Perform approximate Bayesian inference on large datasets using mini-batch ADVI
- Build custom probabilistic models for time-series forecasting, causal inference, or mixed-effects analysis
- Impute missing values in datasets while propagating uncertainty through downstream analyses
- Compare competing statistical models using posterior predictive checks and model diagnostics
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, but with conditions.
PyMC3 is production-stable and well-documented, with low install friction and no known vulnerabilities. However, it is now legacy—the PyMC project has been renamed and moved to newer backends. Install PyMC3 if you are maintaining existing code, learning Bayesian modeling from established tutorials, or need its specific theano-pymc integration. For new projects, evaluate the current PyMC version first to avoid future maintenance burden.
Install
pymc3 on PyPI
Before you install
Low install friction with a pure-wheel distribution and 12 runtime dependencies. The package is actively maintained with recent commits and has been in production use since 2016, though it is now legacy—the project has transitioned to PyMC (renamed), and this version relies on theano-pymc as its computational backend.
Requires theano-pymc as a compiled backend; some systems may need additional build tools or BLAS/LAPACK libraries for optimal performance.
License in practice
Licensed under Apache License, Version 2.0 (permissive), allowing commercial and private use with minimal restrictions. You may use, modify, and distribute PyMC3 freely provided you include the license notice.
Quickstart
import pymc3 as pm
import numpy as np
with pm.Model() as model:
mu = pm.Normal('mu', mu=0, sigma=1)
obs = pm.Normal('obs', mu=mu, sigma=1, observed=np.array([1, 2, 3]))
trace = pm.sample()
Verify before relying
- Whether theano-pymc remains actively maintained and suitable for new projects given PyMC3's legacy status
- Performance characteristics and scalability for models with many parameters
- Compatibility and migration path from PyMC3 to the current PyMC version
Package facts
| License | Apache License, Version 2.0 permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 12 packagesarvizcachetoolsdeprecatdillfastprogressnumpypandaspatsyscipysemvertheano-pymctyping-extensions |
| Maintenance | Actively maintained 805 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 319,118 / month, #7,647 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: Science/ResearchLicense :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Scientific/EngineeringTopic :: Scientific/Engineering :: Mathematics |
Evidence: pymc3-3.11.6-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “markov chain monte carlo sampling”
- pymc3PyMC3 is a Python package for Bayesian statistical modeling and…
- tfp-nightlyTensorFlow Probability provides probabilistic modeling, statistical…
- pymcPyMC is a Python package for Bayesian statistical modeling and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Scientific/Engineering packages
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
pandas provides fast, flexible data structures (Series and DataFrame) for loading, cleaning, transforming, and analyzing labeled or relational data in Python.
scipy provides numerical algorithms for mathematics, science, and engineering—including optimization, integration, linear algebra, Fourier transforms, signal and image processing, and ODE solvers—built on numpy arrays.
scikit-learn provides a comprehensive Python library for supervised and unsupervised machine learning, including classification, regression, clustering, dimensionality reduction, and model evaluation tools built on NumPy and SciPy.
Install it if you need to train, evaluate, or deploy supervised or unsupervised learning models.
dill extends Python's pickle module to serialize and deserialize a much wider range of Python objects, including functions, lambdas, classes, and interpreter sessions, to byte streams for storage or network transmission.
Multiprocess is an enhanced fork of Python's standard multiprocessing library that uses dill for better serialization, allowing you to spawn processes with a threading-like API and share complex objects between them.
Install it if you use multiprocessing and encounter pickle serialization limits with lambdas or complex objects.
See also emcee · pymc · pymc-extras · numpyro · pymc-marketing · cmdstanpy · google-meridian · nutpie · pyAgrum-nightly · tensorflow-probability