All Versions
24
Latest Version
Avg Release Cycle
95 days
Latest Release
475 days ago

Changelog History
Page 1

  • v3.11.2 Changes

    March 14, 2021

    πŸ†• New Features

    • πŸ‘€ pm.math.cartesian can now handle inputs that are themselves >1D (see #4482).
    • πŸ‘€ Statistics and plotting functions that were removed in 3.11.0 were brought back, albeit with deprecation warnings if an old naming scheme is used (see #4536). In order to future proof your code, rename these function calls:
      • pm.traceplot β†’ pm.plot_trace
      • pm.compareplot β†’ pm.plot_compare (here you might need to rename some columns in the input according to the arviz.plot_compare documentation)
      • pm.autocorrplot β†’ pm.plot_autocorr
      • pm.forestplot β†’ pm.plot_forest
      • pm.kdeplot β†’ pm.plot_kde
      • pm.energyplot β†’ pm.plot_energy
      • pm.densityplot β†’ pm.plot_density
      • pm.pairplot β†’ pm.plot_pair

    🚧 Maintenance

    • πŸ‘€ ⚠ Our memoization mechanism wasn't robust against hash collisions (#4506), sometimes resulting in incorrect values in, for example, posterior predictives. The pymc3.memoize module was removed and replaced with cachetools. The hashable function and WithMemoization class were moved to pymc3.util (see #4525).
    • pm.make_shared_replacements now retains broadcasting information which fixes issues with Metropolis samplers (see #4492).

    πŸš€ Release manager for 3.11.2: Michael Osthege (@michaelosthege)

  • v3.11.1 Changes

    February 12, 2021

    πŸ†• New Features

    • πŸ‘€ Automatic imputations now also work with ndarray data, not just pd.Series or pd.DataFrame (see#4439).
    • pymc3.sampling_jax.sample_numpyro_nuts now returns samples from transformed random variables, rather than from the unconstrained representation (see #4427).

    🚧 Maintenance

    • πŸ›  We upgraded to Theano-PyMC v1.1.2 which includes bugfixes for...
      • ⚠ a problem with tt.switch that affected the behavior of several distributions, including at least the following special cases (see #4448)
      • Bernoulli when all the observed values were the same (e.g., [0, 0, 0, 0, 0]).
      • TruncatedNormal when sigma was constant and mu was being automatically broadcasted to match the shape of observations.
      • Warning floods and compiledir locking (see #4444)
    • πŸ‘€ math.log1mexp_numpy no longer raises RuntimeWarning when given very small inputs. These were commonly observed during NUTS sampling (see #4428).
    • πŸ‘€ ScalarSharedVariable can now be used as an input to other RVs directly (see #4445).
    • πŸ‘€ pm.sample and pm.find_MAP no longer change the start argument (see #4458).
    • πŸ›  Fixed Dirichlet.logp method to work with unit batch or event shapes (see #4454).
    • πŸ›  Bugfix in logp and logcdf methods of Triangular distribution (see #4470).

    πŸš€ Release manager for 3.11.1: Michael Osthege (@michaelosthege)

  • v3.11.0 Changes

    January 21, 2021

    πŸš€ This release breaks some APIs w.r.t. 3.10.0. It also brings some dreadfully awaited fixes, so be sure to go through the (breaking) changes below.

    πŸ’₯ Breaking Changes

    • πŸ‘€ ⚠ Many plotting and diagnostic functions that were just aliasing ArviZ functions were removed (see 4397). This includes pm.summary, pm.traceplot, pm.ess and many more!
    • πŸš€ ⚠ We now depend on Theano-PyMC version 1.1.0 exactly (see #4405). Major refactorings were done in Theano-PyMC 1.1.0. If you implement custom Ops or interact with Theano in any way yourself, make sure to read the Theano-PyMC 1.1.0 release notes.
    • πŸ‘€ ⚠ Python 3.6 support was dropped (by no longer testing) and Python 3.9 was added (see #4332).
    • ⚠ Changed shape behavior: No longer collapse length 1 vector shape into scalars. (see #4206 and #4214)
      • Applies to random variables and also the .random(size=...) kwarg!
      • To create scalar variables you must now use shape=None or shape=().
      • shape=(1,) and shape=1 now become vectors. Previously they were collapsed into scalars
      • 0-length dimensions are now ruled illegal for random variables and raise a ValueError.
    • In sample_prior_predictive the vars kwarg was removed in favor of var_names (see #4327).
    • Removed theanof.set_theano_config because it illegally changed Theano's internal state (see #4329).

    πŸ†• New Features

    • πŸ‘€ Option to set check_bounds=False when instantiating pymc3.Model(). This turns off bounds checks that ensure that input parameters of distributions are valid. For correctly specified models, this is unneccessary as all parameters get automatically transformed so that all values are valid. Turning this off should lead to faster sampling (see #4377).
    • πŸ‘€ OrderedProbit distribution added (see #4232).
    • plot_posterior_predictive_glm now works with arviz.InferenceData as well (see #4234)
    • βž• Add logcdf method to all univariate discrete distributions (see #4387).
    • βž• Add random method to MvGaussianRandomWalk (see #4388)
    • πŸ‘€ AsymmetricLaplace distribution added (see #4392).
    • πŸ‘€ DirichletMultinomial distribution added (see #4373).
    • βž• Added a new predict method to BART to compute out of sample predictions (see #4310).

    🚧 Maintenance

    • πŸ›  Fixed bug whereby partial traces returns after keyboard interrupt during parallel sampling had fewer draws than would've been available #4318
    • Make sample_shape same across all contexts in draw_values (see #4305).
    • πŸ‘€ The notebook gallery has been moved to https://github.com/pymc-devs/pymc-examples (see #4348).
    • πŸ‘€ math.logsumexp now matches scipy.special.logsumexp when arrays contain infinite values (see #4360).
    • πŸ›  Fixed mathematical formulation in MvStudentT random method. (see #4359)
    • πŸ›  Fix issue in logp method of HyperGeometric. It now returns -inf for invalid parameters (see 4367)
    • πŸ›  Fixed MatrixNormal random method to work with parameters as random variables. (see #4368)
    • ⚑️ Update the logcdf method of several continuous distributions to return -inf for invalid parameters and values, and raise an informative error when multiple values cannot be evaluated in a single call. (see 4393 and #4421)
    • πŸ‘Œ Improve numerical stability in logp and logcdf methods of ExGaussian (see #4407)
    • πŸ‘€ Issue UserWarning when doing prior or posterior predictive sampling with models containing Potential factors (see #4419)
    • ⚑️ Dirichlet distribution's random method is now optimized and gives outputs in correct shape (see #4416)
    • πŸ‘€ Attempting to sample a named model with SMC will now raise a NotImplementedError. (see #4365)

    πŸš€ Release manager for 3.11.0: Eelke Spaak (@Spaak)

  • v3.10.0 Changes

    December 07, 2020

    πŸš€ This is a major release with many exciting new features. The biggest change is that we now rely on our own fork of Theano-PyMC. This is in line with our big announcement about our commitment to PyMC3 and Theano.

    ⬆️ When upgrading, make sure that Theano-PyMC and not Theano are installed (the imports remain unchanged, however). If not, you can uninstall Theano:

    conda remove theano
    

    And to install:

    conda install -c conda-forge theano-pymc
    

    Or, if you are using pip (not recommended):

    pip uninstall theano
    

    And to install:

    pip install theano-pymc
    

    πŸ‘€ This new version of Theano-PyMC comes with an experimental JAX backend which, when combined with the new and experimental JAX samplers in PyMC3, can greatly speed up sampling in your model. As this is still very new, please do not use it in production yet but do test it out and let us know if anything breaks and what results you are seeing, especially speed-wise.

    πŸ†• New features

    • πŸ†• New experimental JAX samplers in pymc3.sample_jax (see notebook and #4247). Requires JAX and either TFP or numpyro.
    • βž• Add MLDA, a new stepper for multilevel sampling. MLDA can be used when a hierarchy of approximate posteriors of varying accuracy is available, offering improved sampling efficiency especially in high-dimensional problems and/or where gradients are not available (see #3926)
    • βž• Add Bayesian Additive Regression Trees (BARTs) #4183)
    • βž• Added pymc3.gp.cov.Circular kernel for Gaussian Processes on circular domains, e.g. the unit circle (see #4082).
    • βž• Added a new MixtureSameFamily distribution to handle mixtures of arbitrary dimensions in vectorized form for improved speed (see #4185).
    • sample_posterior_predictive_w can now feed on xarray.Dataset - e.g. from InferenceData.posterior. (see #4042)
    • πŸ”„ Change SMC metropolis kernel to independent metropolis kernel #4115)
    • βž• Add alternative parametrization to NegativeBinomial distribution in terms of n and p (see #4126)
    • βž• Added semantically meaningful str representations to PyMC3 objects for console, notebook, and GraphViz use (see #4076, #4065, #4159, #4217, #4243, and #4260).
    • βž• Add Discrete HyperGeometric Distribution (see #4249)

    🚧 Maintenance

    • Switch the dependency of Theano to our own fork, Theano-PyMC.
    • βœ‚ Removed non-NDArray (Text, SQLite, HDF5) backends and associated tests.
    • 🏁 Use dill to serialize user defined logp functions in DensityDist. The previous serialization code fails if it is used in notebooks on Windows and Mac. dill is now a required dependency. (see #3844).
    • πŸ›  Fixed numerical instability in ExGaussian's logp by preventing logpow from returning -inf (see #4050).
    • Numerically improved stickbreaking transformation - e.g. for the Dirichlet distribution. #4129
    • Enabled the Multinomial distribution to handle batch sizes that have more than 2 dimensions. #4169
    • πŸ‘€ Test model logp before starting any MCMC chains (see #4211)
    • βœ… Fix bug in model.check_test_point that caused the test_point argument to be ignored. (see PR #4211)
    • πŸ”¨ Refactored MvNormal.random method with better handling of sample, batch and event shapes. #4207
    • The InverseGamma distribution now implements a logcdf. #3944
    • πŸ‘‰ Make starting jitter methods for nuts sampling more robust by resampling values that lead to non-finite probabilities. A new optional argument jitter-max-retries can be passed to pm.sample() and pm.init_nuts() to control the maximum number of retries per chain. 4298

    πŸ“š Documentation

    • βž• Added a new notebook demonstrating how to incorporate sampling from a conjugate Dirichlet-multinomial posterior density in conjunction with other step methods (see #4199).
    • πŸ‘€ Mentioned the way to do any random walk with theano.tensor.cumsum() in GaussianRandomWalk docstrings (see #4048).

    πŸš€ Release manager for 3.10.0: Eelke Spaak (@Spaak)

  • v3.9.3 Changes

    August 11, 2020

    πŸ†• New features

    • Introduce optional arguments to pm.sample: mp_ctx to control how the processes for parallel sampling are started, and pickle_backend to specify which library is used to pickle models in parallel sampling when the multiprocessing context is not of type fork (see #3991).
    • Add sampler stats process_time_diff, perf_counter_diff and perf_counter_start, that record wall and CPU times for each NUTS and HMC sample (see #3986).
    • Extend keep_size argument handling for sample_posterior_predictive and fast_sample_posterior_predictive, to work on ArviZ InferenceData and xarray Dataset input values (see PR #4006 and issue #4004).
    • SMC-ABC: add the Wasserstein and energy distance functions. Refactor API, the distance, sum_stats and epsilon arguments are now passed pm.Simulator instead of pm.sample_smc. Add random method to pm.Simulator. Add option to save the simulated data. Improved LaTeX representation #3996.
    • SMC-ABC: Allow use of potentials by adding them to the prior term. #4016.

    🚧 Maintenance

    • πŸ›  Fix an error on Windows and Mac where error message from unpickling models did not show up in the notebook, or where sampling froze when a worker process crashed (see #3991).
    • πŸ‘€ Require Theano >= 1.0.5 (see #4032).

    πŸ“š Documentation

    • πŸ‘€ Notebook on multilevel modeling has been rewritten to showcase ArviZ and xarray usage for inference result analysis (see #3963).

    πŸ“„ NB: The docs/* folder is still removed from the tarball due to an upload size limit on PyPi.

    πŸš€ Release manager for 3.9.3: Kyle Beauchamp (@kyleabeauchamp)

  • v3.9.2 Changes

    June 24, 2020

    🚧 Maintenance

    • πŸ‘€ Warning added in GP module when input_dim is lower than the number of columns in X to compute the covariance function (see #3974).
    • Pass the tune argument from sample when using advi+adapt_diag_grad (see issue #3965, fixed by #3979).
    • βž• Add simple test case for new coords and dims feature in pm.Model (see #3977).
    • πŸ‘€ Require ArviZ >= 0.9.0 (see #3977).
    • πŸ›  Fixed issue #3962 by making a change in the _random() method of GaussianRandomWalk class (see PR #3985). Further testing revealed a new issue which is being tracked by #4010.

    πŸ“„ NB: The docs/* folder is still removed from the tarball due to an upload size limit on PyPi.

    πŸš€ Release manager for 3.9.2: Alex Andorra (@AlexAndorra)

  • v3.9.1 Changes

    June 16, 2020

    πŸš€ The v3.9.0 upload to PyPI didn't include a tarball, which is fixed in this release. 🚚 Though we had to temporarily remove the docs/* folder from the tarball due to a size limit.

    πŸš€ Release manager for 3.9.1: Michael Osthege (@michaelosthege)

  • v3.9.0 Changes

    June 16, 2020

    πŸ†• New features

    • πŸ‘‰ Use fastprogress instead of tqdm #3693.
    • πŸ‘€ DEMetropolis can now tune both lambda and scaling parameters, but by default neither of them are tuned. See #3743 for more info.
    • πŸ‘€ DEMetropolisZ, an improved variant of DEMetropolis brings better parallelization and higher efficiency with fewer chains with a slower initial convergence. This implementation is experimental. See #3784 for more info.
    • πŸ“„ Notebooks that give insight into DEMetropolis, DEMetropolisZ and the DifferentialEquation interface are now located in the Tutorials/Deep Dive section.
    • Add fast_sample_posterior_predictive, a vectorized alternative to sample_posterior_predictive. This alternative is substantially faster for large models.
    • πŸ‘€ GP covariance functions can now be exponentiated by a scalar. See PR #3852
    • sample_posterior_predictive can now feed on xarray.Dataset - e.g. from InferenceData.posterior. (see #3846)
    • SamplerReport (MultiTrace.report) now has properties n_tune, n_draws, t_sampling for increased convenience (see #3827)
    • πŸ‘€ pm.sample(..., return_inferencedata=True) can now directly return the trace as arviz.InferenceData (see #3911)
    • pm.sample now has support for adapting dense mass matrix using QuadPotentialFullAdapt (see #3596, #3705, #3858, and #3893). Use init="adapt_full" or init="jitter+adapt_full" to use.
    • πŸ‘€ Moyal distribution added (see #3870).
    • πŸ‘€ pm.LKJCholeskyCov now automatically computes and returns the unpacked Cholesky decomposition, the correlations and the standard deviations of the covariance matrix (see #3881).
    • πŸ›  pm.Data container can now be used for index variables, i.e with integer data and not only floats (issue #3813, fixed by #3925).
    • πŸ›  pm.Data container can now be used as input for other random variables (issue #3842, fixed by #3925).
    • πŸ‘ Allow users to specify coordinates and dimension names instead of numerical shapes when specifying a model. This makes interoperability with ArviZ easier. (see #3551)
    • πŸ“š Plots and Stats API sections now link to ArviZ documentation #3927
    • Add SamplerReport with properties n_draws, t_sampling and n_tune to SMC. n_tune is always 0 #3931.
    • 🚚 SMC-ABC: add option to define summary statistics, allow to sample from more complex models, remove redundant distances #3940

    🚧 Maintenance

    • πŸ‘€ Tuning results no longer leak into sequentially sampled Metropolis chains (see #3733 and #3796).
    • We'll deprecate the Text and SQLite backends and the save_trace/load_trace functions, since this is now done with ArviZ. (see #3902)
    • ArviZ v0.8.3 is now the minimum required version
    • πŸ‘€ In named models, pm.Data objects now get model-relative names (see #3843).
    • πŸ‘€ pm.sample now takes 1000 draws and 1000 tuning samples by default, instead of 500 previously (see #3855).
    • πŸ’… Moved argument division out of NegativeBinomial random method. Fixes #3864 in the style of #3509.
    • πŸ‘€ The Dirichlet distribution now raises a ValueError when it's initialized with <= 0 values (see #3853).
    • πŸ›  Dtype bugfix in MvNormal and MvStudentT (see 3836).
    • End of sampling report now uses arviz.InferenceData internally and avoids storing pointwise log likelihood (see #3883).
    • 🍎 The multiprocessing start method on MacOS is now set to "forkserver", to avoid crashes (see issue #3849, solved by #3919).
    • πŸ‘€ The AR1 logp now uses the precision of the whole AR1 process instead of just the innovation precision (see issue #3892, fixed by #3899).
    • πŸ›  Forced the Beta distribution's random method to generate samples that are in the open interval $(0, 1)$, i.e. no value can be equal to zero or equal to one (issue #3898 fixed by #3924).
    • πŸ›  Fixed an issue that happened on Windows, that was introduced by the clipped beta distribution rvs function (#3924). Windows does not support the float128 dtype, but we had assumed that it had to be available. The solution was to only support float128 on Linux and Darwin systems (see issue #3929 fixed by #3930).

    πŸ—„ Deprecations

    • Remove sample_ppc and sample_ppc_w that were deprecated in 3.6.
    • πŸ‘€ Deprecated sd has been replaced by sigma (already in version 3.7) in continuous, mixed and timeseries distributions and now raises DeprecationWarning when sd is used. (see #3837 and #3688).
    • We'll deprecate the Text and SQLite backends and the save_trace/load_trace functions, since this is now done with ArviZ. (see #3902)
    • ⬇️ Dropped some deprecated kwargs and functions (see #3906)
    • ⬇️ Dropped the outdated 'nuts' initialization method for pm.sample (see #3863).

    πŸš€ Release manager for 3.9.0: Michael Osthege (@michaelosthege)

  • v3.8 Changes

    November 29, 2019

    πŸ†• New features

    • πŸ‘€ Implemented robust u turn check in NUTS (similar to stan-dev/stan#2800). See PR [#3605]
    • βž• Add capabilities to do inference on parameters in a differential equation with DifferentialEquation. See #3590 and #3634.
    • Distinguish between Data and Deterministic variables when graphing models with graphviz. PR #3491.
    • Sequential Monte Carlo - Approximate Bayesian Computation step method is now available. The implementation is in an experimental stage and will be further improved.
    • βž• Added Matern12 covariance function for Gaussian processes. This is the Matern kernel with nu=1/2.
    • Progressbar reports number of divergences in real time, when available #3547.
    • Sampling from variational approximation now allows for alternative trace backends [#3550].
    • Infix @ operator now works with random variables and deterministics #3619.
    • ArviZ is now a requirement, and handles plotting, diagnostics, and statistical checks.
    • Can use GaussianRandomWalk in sample_prior_predictive and sample_prior_predictive #3682
    • Now 11 years of S&P returns in data set#3682

    🚧 Maintenance

    • Moved math operations out of Rice, TruncatedNormal, Triangular and ZeroInflatedNegativeBinomial random methods. Math operations on values returned by draw_values might not broadcast well, and all the size aware broadcasting is left to generate_samples. Fixes #3481 and #3508
    • Parallelization of population steppers (DEMetropolis) is now set via the cores argument. (#3559)
    • πŸ›  Fixed a bug in Categorical.logp. In the case of multidimensional p's, the indexing was done wrong leading to incorrectly shaped tensors that consumed O(n**2) memory instead of O(n). This fixes issue #3535
    • Fixed a defect in OrderedLogistic.__init__ that unnecessarily increased the dimensionality of the underlying p. Related to issue issue #3535 but was not the true cause of it.
    • SMC: stabilize covariance matrix 3573
    • SMC: is no longer a step method of pm.sample now it should be called using pm.sample_smc 3579
    • SMC: improve computation of the proposal scaling factor 3594 and 3625
    • SMC: reduce number of logp evaluations 3600
    • 🚚 SMC: remove scaling and tune_scaling arguments as is a better idea to always allow SMC to automatically compute the scaling factor 3625
    • Now uses multiprocessong rather than psutil to count CPUs, which results in reliable core counts on Chromebooks.
    • sample_posterior_predictive now preallocates the memory required for its output to improve memory usage. Addresses problems raised in this discourse thread.
    • πŸ›  Fixed a bug in Categorical.logp. In the case of multidimensional p's, the indexing was done wrong leading to incorrectly shaped tensors that consumed O(n**2) memory instead of O(n). This fixes issue #3535
    • Fixed a defect in OrderedLogistic.__init__ that unnecessarily increased the dimensionality of the underlying p. Related to issue issue #3535 but was not the true cause of it.
    • πŸ›  Wrapped DensityDist.rand with generate_samples to make it aware of the distribution's shape. Added control flow attributes to still be able to behave as in earlier versions, and to control how to interpret the size parameter in the random callable signature. Fixes 3553
    • Added theano.gof.graph.Constant to type checks done in _draw_value (fixes issue 3595)
    • HalfNormal did not used to work properly in draw_values, sample_prior_predictive, or sample_posterior_predictive (fixes issue 3686)
    • πŸ“š Random variable transforms were inadvertently left out of the API documentation. Added them. (See PR 3690).
    • Refactored pymc3.model.get_named_nodes_and_relations to use the ancestors and descendents, in a way that is consistent with theano's naming convention.
    • Changed the way in which pymc3.model.get_named_nodes_and_relations computes nodes without ancestors to make it robust to changes in var_name orderings (issue #3643)
  • v3.7 Changes

    May 29, 2019

    πŸ†• New features

    • βž• Add data container class (Data) that wraps the theano SharedVariable class and let the model be aware of its inputs and outputs.
    • βž• Add function set_data to update variables defined as Data.
    • πŸ‘ Mixture now supports mixtures of multidimensional probability distributions, not just lists of 1D distributions.
    • GLM.from_formula and LinearComponent.from_formula can extract variables from the calling scope. Customizable via the new eval_env argument. Fixing #3382.
    • βž• Added the distributions.shape_utils module with functions used to help broadcast samples drawn from distributions using the size keyword argument.
    • Used numpy.vectorize in distributions.distribution._compile_theano_function. This enables sample_prior_predictive and sample_posterior_predictive to ask for tuples of samples instead of just integers. This fixes issue #3422.

    🚧 Maintenance

    • All occurances of sd as a parameter name have been renamed to sigma. sd will continue to function for backwards compatibility.
    • HamiltonianMC was ignoring certain arguments like target_accept, and not using the custom step size jitter function with expectation 1.
    • 🏁 Made BrokenPipeError for parallel sampling more verbose on Windows.
    • Added the broadcast_distribution_samples function that helps broadcasting arrays of drawn samples, taking into account the requested size and the inferred distribution shape. This sometimes is needed by distributions that call several rvs separately within their random method, such as the ZeroInflatedPoisson (fixes issue #3310).
    • The Wald, Kumaraswamy, LogNormal, Pareto, Cauchy, HalfCauchy, Weibull and ExGaussian distributions random method used a hidden _random function that was written with scalars in mind. This could potentially lead to artificial correlations between random draws. Added shape guards and broadcasting of the distribution samples to prevent this (Similar to issue #3310).
    • βž• Added a fix to allow the imputation of single missing values of observed data, which previously would fail (fixes issue #3122).
    • The draw_values function was too permissive with what could be grabbed from inside point, which lead to an error when sampling posterior predictives of variables that depended on shared variables that had changed their shape after pm.sample() had been called (fix issue #3346).
    • πŸ›  draw_values now adds the theano graph descendants of TensorConstant or SharedVariables to the named relationship nodes stack, only if these descendants are ObservedRV or MultiObservedRV instances (fixes issue #3354).
    • Fixed bug in broadcast_distrution_samples, which did not handle correctly cases in which some samples did not have the size tuple prepended.
    • πŸ”„ Changed MvNormal.random's usage of tensordot for Cholesky encoded covariances. This lead to wrong axis broadcasting and seemed to be the cause for issue #3343.
    • πŸ›  Fixed defect in Mixture.random when multidimensional mixtures were involved. The mixture component was not preserved across all the elements of the dimensions of the mixture. This meant that the correlations across elements within a given draw of the mixture were partly broken.
    • πŸ‘ Restructured Mixture.random to allow better use of vectorized calls to comp_dists.random.
    • βž• Added tests for mixtures of multidimensional distributions to the test suite.
    • Fixed incorrect usage of broadcast_distribution_samples in DiscreteWeibull.
    • 0️⃣ Mixture's default dtype is now determined by theano.config.floatX.
    • dist_math.random_choice now handles nd-arrays of category probabilities, and also handles sizes that are not None. Also removed unused k kwarg from dist_math.random_choice.
    • πŸ”„ Changed Categorical.mode to preserve all the dimensions of p except the last one, which encodes each category's probability.
    • πŸ”„ Changed initialization of Categorical.p. p is now normalized to sum to 1 inside logp and random, but not during initialization. This could hide negative values supplied to p as mentioned in #2082.
    • Categorical now accepts elements of p equal to 0. logp will return -inf if there are values that index to the zero probability categories.
    • βž• Add sigma, tau, and sd to signature of NormalMixture.
    • 0️⃣ Set default lower and upper values of -inf and inf for pm.distributions.continuous.TruncatedNormal. This avoids errors caused by their previous values of None (fixes issue #3248).
    • Converted all calls to pm.distributions.bound._ContinuousBounded and pm.distributions.bound._DiscreteBounded to use only and all positional arguments (fixes issue #3399).
    • Restructured distributions.distribution.generate_samples to use the shape_utils module. This solves issues #3421 and #3147 by using the size aware broadcating functions in shape_utils.
    • Fixed the Multinomial.random and Multinomial.random_ methods to make them compatible with the new generate_samples function. In the process, a bug of the Multinomial.random_ shape handling was discovered and fixed.
    • Fixed a defect found in Bound.random where the point dictionary was passed to generate_samples as an arg instead of in not_broadcast_kwargs.
    • Fixed a defect found in Bound.random_ where total_size could end up as a float64 instead of being an integer if given size=tuple().
    • πŸ›  Fixed an issue in model_graph that caused construction of the graph of the model for rendering to hang: replaced a search over the powerset of the nodes with a breadth-first search over the nodes. Fix for #3458.
    • βœ‚ Removed variable annotations from model_graph but left type hints (Fix for #3465). This means that we support python>=3.5.4.
    • 0️⃣ Default target_acceptfor HamiltonianMC is now 0.65, as suggested in Beskos et. al. 2010 and Neal 2001.
    • πŸ›  Fixed bug in draw_values that lead to intermittent errors in python3.5. This happened with some deterministic nodes that were drawn but not added to givens.

    πŸ—„ Deprecations

    • nuts_kwargs and step_kwargs have been deprecated in favor of using the standard kwargs to pass optional step method arguments.
    • 🚚 SGFS and CSG have been removed (Fix for #3353). They have been moved to pymc3-experimental.
    • 🚚 References to live_plot and corresponding notebooks have been removed.
    • 🚚 Function approx_hessian was removed, due to numdifftools becoming incompatible with current scipy. The function was already optional, only available to a user who installed numdifftools separately, and not hit on any common codepaths. #3485.
    • Deprecated vars parameter of sample_posterior_predictive in favor of varnames.
    • 🚚 References to live_plot and corresponding notebooks have been removed.
    • Deprecated vars parameters of sample_posterior_predictive and sample_prior_predictive in favor of var_names. At least for the latter, this is more accurate, since the vars parameter actually took names.

    Contributors sorted by number of commits

    45  Luciano Paz
    38  Thomas Wiecki
    23  Colin Carroll
    19  Junpeng Lao
    15  Chris Fonnesbeck
    13  Juan MartΓ­n Loyola
    13  Ravin Kumar
     8  Robert P. Goldman
     5  Tim Blazina
     4  chang111
     4  adamboche
     3  Eric Ma
     3  Osvaldo Martin
     3  Sanmitra Ghosh
     3  Saurav Shekhar
     3  chartl
     3  fredcallaway
     3  Demetri
     2  Daisuke Kondo
     2  David Brochart
     2  George Ho
     2  Vaibhav Sinha
     1  rpgoldman
     1  Adel Tomilova
     1  Adriaan van der Graaf
     1  Bas Nijholt
     1  Benjamin Wild
     1  Brigitta Sipocz
     1  Daniel Emaasit
     1  Hari
     1  Jeroen
     1  Joseph Willard
     1  Juan Martin Loyola
     1  Katrin Leinweber
     1  Lisa Martin
     1  M. Domenzain
     1  Matt Pitkin
     1  Peadar Coyle
     1  Rupal Sharma
     1  Tom Gilliss
     1  changjiangeng
     1  michaelosthege
     1  monsta
     1  579397