Skip to content

Releases: pymc-devs/pymc

v3.5 Final

21 Jul 20:58
4e695f6
Compare
Choose a tag to compare

New features

  • Add documentation section on survival analysis and censored data models
  • Add check_test_point method to pm.Model
  • Add Ordered Transformation and OrderedLogistic distribution
  • Add Chain transformation
  • Improve error message Mass matrix contains zeros on the diagonal. Some derivatives might always be zero during tuning of pm.sample
  • Improve error message NaN occurred in optimization. during ADVI
  • Save and load traces without pickle using pm.save_trace and pm.load_trace
  • Add Kumaraswamy distribution
  • Add TruncatedNormal distribution
  • Rewrite parallel sampling of multiple chains on py3. This resolves
    long standing issues when transferring large traces to the main process,
    avoids pickling issues on UNIX, and allows us to show a progress bar
    for all chains. If parallel sampling is interrupted, we now return
    partial results.
  • Add sample_prior_predictive which allows for efficient sampling from
    the unconditioned model.
  • SMC: remove experimental warning, allow sampling using sample, reduce autocorrelation from
    final trace.
  • Add model_to_graphviz (which uses the optional dependency graphviz) to
    plot a directed graph of a PyMC3 model using plate notation.
  • Add beta-ELBO variational inference as in beta-VAE model (Christopher P. Burgess et al. NIPS, 2017)
  • Add __dir__ to SingleGroupApproximation to improve autocompletion in interactive environments

Fixes

  • Fixed grammar in divergence warning, previously There were 1 divergences ... could be raised.
  • Fixed KeyError raised when only subset of variables are specified to be recorded in the trace.
  • Removed unused repeat=None arguments from all random() methods in distributions.
  • Deprecated the sigma argument in MarginalSparse.marginal_likelihood in favor of noise
  • Fixed unexpected behavior in random. Now the random functionality is more robust and will work better for sample_prior when that is implemented.
  • Fixed scale_cost_to_minibatch behaviour, previously this was not working and always False

v3.4.1 Final

19 Apr 02:51
544a806
Compare
Choose a tag to compare

There was no 3.4 release due to a naming issue on PyPI.

New features

  • Add logit_p keyword to pm.Bernoulli, so that users can specify the logit of the success probability. This is faster and more stable than using p=tt.nnet.sigmoid(logit_p).
  • Add random keyword to pm.DensityDist thus enabling users to pass custom random method which in turn makes sampling from a DensityDist possible.
  • Effective sample size computation is updated. The estimation uses Geyer's initial positive sequence, which no longer truncates the autocorrelation series inaccurately. pm.diagnostics.effective_n now can reports N_eff>N.
  • Added KroneckerNormal distribution and a corresponding MarginalKron
    Gaussian Process implementation for efficient inference, along with
    lower-level functions such as cartesian and kronecker products.
  • Added Coregion covariance function.
  • Add new 'pairplot' function, for plotting scatter or hexbin matrices of sampled parameters.
    Optionally it can plot divergences.
  • Plots of discrete distributions in the docstrings
  • Add logitnormal distribution
  • Densityplot: add support for discrete variables
  • Fix the Binomial likelihood in .glm.families.Binomial, with the flexibility of specifying the n.
  • Add offset kwarg to .glm.
  • Changed the compare function to accept a dictionary of model-trace pairs instead of two separate lists of models and traces.
  • add test and support for creating multivariate mixture and mixture of mixtures
  • distribution.draw_values, now is also able to draw values from conditionally dependent RVs, such as autotransformed RVs (Refer to PR #2902).

Fixes

  • VonMises does not overflow for large values of kappa. i0 and i1 have been removed and we now use log_i0 to compute the logp.
  • The bandwidth for KDE plots is computed using a modified version of Scott's rule. The new version uses entropy instead of standard deviation. This works better for multimodal distributions. Functions using KDE plots has a new argument bw controlling the bandwidth.
  • fix PyMC3 variable is not replaced if provided in more_replacements (#2890)
  • Fix for issue #2900. For many situations, named node-inputs do not have a random method, while some intermediate node may have it. This meant that if the named node-input at the leaf of the graph did not have a fixed value, theano would try to compile it and fail to find inputs, raising a theano.gof.fg.MissingInputError. This was fixed by going through the theano variable's owner inputs graph, trying to get intermediate named-nodes values if the leafs had failed.
  • In distribution.draw_values, some named nodes could be theano.tensor.TensorConstants or theano.tensor.sharedvar.SharedVariables. Nevertheless, in distribution._draw_value, these would be passed to distribution._compile_theano_function as if they were theano.tensor.TensorVariables. This could lead to the following exceptions TypeError: ('Constants not allowed in param list', ...) or TypeError: Cannot use a shared variable (...). The fix was to not add theano.tensor.TensorConstant or theano.tensor.sharedvar.SharedVariable named nodes into the givens dict that could be used in distribution._compile_theano_function.
  • Exponential support changed to include zero values.

Deprecations

  • DIC and BPIC calculations have been removed
  • df_summary have been removed, use summary instead
  • njobs and nchains kwarg are deprecated in favor of cores and chains for sample
  • lag kwarg in pm.stats.autocorr and pm.stats.autocov is deprecated.

v3.3 Final

25 Jan 00:58
d97fda8
Compare
Choose a tag to compare

New features

  • Improve NUTS initialization advi+adapt_diag_grad and add jitter+adapt_diag_grad (#2643)
  • Added MatrixNormal class for representing vectors of multivariate normal variables
  • Implemented HalfStudentT distribution
  • New benchmark suite added (see http://pandas.pydata.org/speed/pymc3/)
  • Generalized random seed types
  • Update loo, new improved algorithm (#2730)
  • New CSG (Constant Stochastic Gradient) approximate posterior sampling algorithm (#2544)
  • Michael Osthege added support for population-samplers and implemented differential evolution metropolis (DEMetropolis). For models with correlated dimensions that can not use gradient-based samplers, the DEMetropolis sampler can give higher effective sampling rates. (also see PR#2735)
  • Forestplot supports multiple traces (#2736)
  • Add new plot, densityplot (#2741)
  • DIC and BPIC calculations have been deprecated
  • Refactor HMC and implemented new warning system (#2677, #2808)

Fixes

  • Fixed compareplot to use loo output.
  • Improved posteriorplot to scale fonts
  • sample_ppc_w now broadcasts
  • df_summary function renamed to summary
  • Add test for model.logp_array and model.bijection (#2724)
  • Fixed sample_ppc and sample_ppc_w to iterate all chains(#2633, #2748)
  • Add Bayesian R2 score (for GLMs) stats.r2_score (#2696) and test (#2729).
  • SMC works with transformed variables (#2755)
  • Speedup OPVI (#2759)
  • Multiple minor fixes and improvements in the docs (#2775, #2786, #2787, #2789, #2790, #2794, #2799, #2809)

Deprecations

  • Old (minibatch-)advi is removed (#2781)

v3.2 Final

10 Oct 19:11
Compare
Choose a tag to compare
  • This version includes two major contributions from our Google Summer of Code 2017 students:
    • Maxim Kochurov extended and refactored the variational inference module. This primarily adds two important classes, representing operator variational inference (OPVI) objects and Approximation objects. These make it easier to extend existing variational classes, and to derive inference from variational optimizations, respectively. The variational module now also includes normalizing flows (NFVI).
    • Bill Engels added an extensive new Gaussian processes (gp) module. Standard GPs can be specified using either Latent or Marginal classes, depending on the nature of the underlying function. A Student-T process TP has been added. In order to accomodate larger datasets, approximate marginal Gaussian processes (MarginalSparse) have been added.
  • Documentation has been improved as the result of the project's monthly "docathons".
  • An experimental stochastic gradient Fisher scoring (SGFS) sampling step method has been added.
  • The API for find_MAP was enhanced.
  • SMC now estimates the marginal likelihood.
  • Added Logistic and HalfFlat distributions to set of continuous distributions.
  • Bayesian fraction of missing information (bfmi) function added to stats.
  • Enhancements to compareplot added.
  • QuadPotential adaptation has been implemented.
  • Script added to build and deploy documentation.
  • MAP estimates now available for transformed and non-transformed variables.
  • The Constant variable class has been deprecated, and will be removed in 3.3.
  • DIC and BPIC calculations have been sped up.
  • Arrays are now accepted as arguments for the Bound class.
  • random method was added to the Wishart and LKJCorr distributions.
  • Progress bars have been added to LOO and WAIC calculations.
  • All example notebooks updated to reflect changes in API since 3.1.
  • Parts of the test suite have been refactored.

Fixes

  • Fixed sampler stats error in NUTS for non-RAM backends
  • Matplotlib is no longer a hard dependency, making it easier to use in settings where installing Matplotlib is problematic. PyMC will only complain if plotting is attempted.
  • Several bugs in the Gaussian process covariance were fixed.
  • All chains are now used to calculate WAIC and LOO.
  • AR(1) log-likelihood function has been fixed.
  • Slice sampler fixed to sample from 1D conditionals.
  • Several docstring fixes.

v3.1 Final

25 Jun 15:26
Compare
Choose a tag to compare

This is the first major update to PyMC 3 since its initial release. Highlights of this release include:

  • Gaussian Process submodule
  • Much improved variational inference support that includes:
    • Stein Variational Gradient Descent
    • Minibatch processing
    • Additional optimizers, including ADAM
    • Experimental operational variational inference (OPVI)
    • Full-rank ADVI
  • MvNormal supports Cholesky Decomposition now for increased speed and numerical stability.
  • NUTS implementation now matches current Stan implementation.
  • Higher-order integrators for HMC
  • Elliptical slice sampler is now available
  • Added Approximation class and the ability to convert a sampled trace into an approximation via its Empirical subclass.
  • Add MvGaussianRandomWalk and MvStudentTRandomWalk distributions.

v3.0 Final

09 Jan 14:19
Compare
Choose a tag to compare

This is the first major release of PyMC3. A number of major changes since splitting from the PyMC2 project include:

  • Added gradient-based MCMC samplers: Hamiltonian MC (HMC) and No-U-Turn Sampler (NUTS)
  • Automatic gradient calculations using Theano
  • Convenient generalized linear model specification using Patsy formulae
  • Parallel sampling via multiprocessing
  • New model specification using context managers
  • New Automatic Differentiation Variational InferenceAVDI (ADVI) allowing faster sampling than HMC for some problems.
  • Mini-batch ADVI

v3.0 Release Candidate 6

02 Jan 00:38
Compare
Choose a tag to compare

Sixth release candidate of PyMC3 3.0.

v3.0 Release Candidate 5

01 Jan 20:16
Compare
Choose a tag to compare

Fifth release candidate of PyMC3 3.0.

v3.0 Release Candidate 4

01 Dec 22:47
Compare
Choose a tag to compare

Fourth release candidate of PyMC3 3.0.

v3.0.rc3_full

01 Dec 22:26
Compare
Choose a tag to compare

Updating the release tag. and this is a full release of release candidate 3.