v3.4.1 Final
There was no 3.4 release due to a naming issue on PyPI.
New features
- Add
logit_pkeyword topm.Bernoulli, so that users can specify the logit of the success probability. This is faster and more stable than usingp=tt.nnet.sigmoid(logit_p). - Add
randomkeyword topm.DensityDistthus enabling users to pass custom random method which in turn makes sampling from aDensityDistpossible. - 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_nnow can reports N_eff>N. - Added
KroneckerNormaldistribution and a correspondingMarginalKron
Gaussian Process implementation for efficient inference, along with
lower-level functions such ascartesianandkroneckerproducts. - Added
Coregioncovariance 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 then. - Add
offsetkwarg to.glm. - Changed the
comparefunction 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
VonMisesdoes 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
bwcontrolling 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
randommethod, 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,theanowould try to compile it and fail to find inputs, raising atheano.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 betheano.tensor.TensorConstants ortheano.tensor.sharedvar.SharedVariables. Nevertheless, indistribution._draw_value, these would be passed todistribution._compile_theano_functionas if they weretheano.tensor.TensorVariables. This could lead to the following exceptionsTypeError: ('Constants not allowed in param list', ...)orTypeError: Cannot use a shared variable (...). The fix was to not addtheano.tensor.TensorConstantortheano.tensor.sharedvar.SharedVariablenamed nodes into thegivensdict that could be used indistribution._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
njobsandnchainskwarg are deprecated in favor ofcoresandchainsforsamplelagkwarg inpm.stats.autocorrandpm.stats.autocovis deprecated.