-
sample() defaults changed: tuning is enabled for the first 500 samples which are then discarded from the trace as burn-in.
-
Many optimizations and speed-ups.
-
NUTS implementation now matches current Stan implementation.
-
Add higher-order integrators for HMC.
-
ADVI stopping criterion implemented.
-
Improved support for theano's floatX setting to enable GPU computatiosn (experimental).
-
MvNormal supports Cholesky Decomposition now for increased speed and numerical stability.
-
Add Stein-Variational Gradient Descent (experimental).
-
Model
can now be inherited from and act as a base class for user specified models (see pymc3.models.linear). -
Add MvGaussianRandomWalk and MvStudentTRandomWalk distributions.
-
Add
EdwardModel
wrapper to run PyMC3 models in Edward. -
GLM models do not need a left-hand variable anymore.
-
Add support for cholesky parametrizations for cov/corr matrices.
-
Refactored HMC and NUTS for better readability.
-
Add support for Python 3.6.
-
Bound now works for discrete distributions as well.
-
Random sampling now returns the correct shape even for higher dimensional RVs.
-
Use theano Psi and GammaLn functions to enable GPU support for them.
We are proud and excited to release the first stable version of PyMC3, the product of more than 5 years of ongoing development and contributions from over 80 individuals. PyMC3 is a Python module for Bayesian modeling which focuses on modern Bayesian computational methods, primarily gradient-based (Hamiltonian) MCMC sampling and variational inference. Models are specified in Python, which allows for great flexibility. The main technological difference in PyMC3 relative to previous versions is the reliance on Theano for the computational backend, rather than on Fortran extensions.
Since the beta release last year, the following improvements have been implemented:
-
Added
variational
submodule, which features the automatic differentiation variational inference (ADVI) fitting method. Also supports mini-batch ADVI for large data sets. Much of this work was due to the efforts of Taku Yoshioka, and important guidance was provided by the Stan team (specifically Alp Kucukelbir and Daniel Lee). -
Added model checking utility functions, including leave-one-out (LOO) cross-validation, BPIC, WAIC, and DIC.
-
Implemented posterior predictive sampling (
sample_ppc
). -
Implemented auto-assignment of step methods by
sample
function. -
Enhanced IPython Notebook examples, featuring more complete narratives accompanying code.
-
Extensive debugging of NUTS sampler.
-
Updated documentation to reflect changes in code since beta.
-
Refactored test suite for better efficiency.
-
Added von Mises, zero-inflated negative binomial, and Lewandowski, Kurowicka and Joe (LKJ) distributions.
-
Adopted
joblib
for managing parallel computation of chains. -
Added contributor guidelines, contributor code of conduct and governance document.
- Argument order of tau and sd was switched for distributions of the normal family:
Normal()
Lognormal()
HalfNormal()
Old: Normal(name, mu, tau)
New: Normal(name, mu, sd)
(supplying keyword arguments is unaffected).
MvNormal
calling signature changed: Old:MvNormal(name, mu, tau)
New:MvNormal(name, mu, cov)
(supplying keyword arguments is unaffected).
We on the PyMC3 core team would like to thank everyone for contributing and now feel that this is ready for the big time. We look forward to hearing about all the cool stuff you use PyMC3 for, and look forward to continued development on the package.
The following authors contributed to this release:
Chris Fonnesbeck [email protected] John Salvatier [email protected] Thomas Wiecki [email protected] Colin Carroll [email protected] Maxim Kochurov [email protected] Taku Yoshioka [email protected] Peadar Coyle (springcoil) [email protected] Austin Rochford [email protected] Osvaldo Martin [email protected]
In addition, the following community members contributed to this release:
A Kuz [email protected] A. Flaxman [email protected] Abraham Flaxman [email protected] Alexey Goldin [email protected] Anand Patil [email protected] Andrea Zonca [email protected] Andreas Klostermann [email protected] Andres Asensio Ramos Andrew Clegg [email protected] Anjum48 Benjamin Edwards [email protected] Boris Avdeev [email protected] Brian Naughton [email protected] Byron Smith Chad Heyne [email protected] Corey Farwell [email protected] David Huard [email protected] David Stück [email protected] DeliciousHair [email protected] Dustin Tran Eigenblutwurst [email protected] Gideon Wulfsohn [email protected] Gil Raphaelli [email protected] Gogs [email protected] Ilan Man Imri Sofer [email protected] Jake Biesinger [email protected] James Webber [email protected] John McDonnell [email protected] Jon Sedar [email protected] Jordi Diaz Jordi Warmenhoven [email protected] Karlson Pfannschmidt [email protected] Kyle Bishop [email protected] Kyle Meyer [email protected] Lin Xiao Mack Sweeney [email protected] Matthew Emmett [email protected] Michael Gallaspy [email protected] Nick [email protected] Osvaldo Martin [email protected] Patricio Benavente [email protected] Raymond Roberts Rodrigo Benenson [email protected] Sergei Lebedev [email protected] Skipper Seabold [email protected] Thomas Kluyver [email protected] Tobias Knuth [email protected] Volodymyr Kazantsev Wes McKinney [email protected] Zach Ploskey [email protected] akuz [email protected] brandon willard [email protected] dstuck [email protected] ingmarschuster [email protected] jan-matthis [email protected] jason JasonTam22@gmailcom kiudee [email protected] maahnman [email protected] macgyver [email protected] mwibrow [email protected] olafSmits [email protected] paul sorenson [email protected] redst4r [email protected] santon [email protected] sgenoud [email protected] stonebig Tal Yarkoni [email protected] x2apps [email protected] zenourn [email protected]
Probabilistic programming allows for flexible specification of Bayesian statistical models in code. PyMC3 is a new, open-source probabilistic programmer framework with an intuitive, readable and concise, yet powerful, syntax that is close to the natural notation statisticians use to describe models. It features next-generation fitting techniques, such as the No U-Turn Sampler, that allow fitting complex models with thousands of parameters without specialized knowledge of fitting algorithms.
PyMC3 has recently seen rapid development. With the addition of two new major features: automatic transforms and missing value imputation, PyMC3 has become ready for wider use. PyMC3 is now refined enough that adding features is easy, so we don't expect adding features in the future will require drastic changes. It has also become user friendly enough for a broader audience. Automatic transformations mean NUTS and find_MAP work with less effort, and friendly error messages mean its easy to diagnose problems with your model.
Thus, Thomas, Chris and I are pleased to announce that PyMC3 is now in Beta.
- Transforms now automatically applied to constrained distributions
- Transforms now specified with a
transform=
argument on Distributions.model.TransformedVar
is gone. - Transparent missing value imputation support added with MaskedArrays or pandas.DataFrame NaNs.
- Bad default values now ignored
- Profile theano functions using
model.profile(model.logpt)
- A. Flaxman [email protected]
- Andrea Zonca [email protected]
- Andreas Klostermann [email protected]
- Andrew Clegg [email protected]
- AustinRochford [email protected]
- Benjamin Edwards [email protected]
- Brian Naughton [email protected]
- Chad Heyne [email protected]
- Chris Fonnesbeck [email protected]
- Corey Farwell [email protected]
- John Salvatier [email protected]
- Karlson Pfannschmidt [email protected]
- Kyle Bishop [email protected]
- Kyle Meyer [email protected]
- Mack Sweeney [email protected]
- Osvaldo Martin [email protected]
- Raymond Roberts [email protected]
- Rodrigo Benenson [email protected]
- Thomas Wiecki [email protected]
- Zach Ploskey [email protected]
- maahnman [email protected]
- paul sorenson [email protected]
- zenourn [email protected]