Changelog
Source:NEWS.md
distributions3 0.3.0
CRAN release: 2026-08-20
New
Empirical()distribution based on a randomsample. This is particularly useful when forecasts are represented by samples rather than by parametric distributions (#98 and #120 by Reto Stauffer).New
SinhArcsinh()distribution implementing the Sinh-Arcsinh distribution from Jones and Pewsey (2009, Biometrika) (#128 by Reto Stauffer).Fallback methods for all standard
distributions3methods such ascdf(),pdf(),quantile(),random(), and moments such asmean(),variance(),skewness(), andkurtosis(). These leverage those methods that are available but fill the gaps using numerical integration/differentiation (#120 by Reto Stauffer).New generic functions
score()andhessian()to compute the score (first derivative of the log-likelihood with respect to the parameters) and Hessian (corresponding second derivative). There are numeric fallback methods for general distribution objects and analytic methods for a few distributions. Thehessian()methods should typically have an argumentexpectedwhich allows to select whether the observed (expected = FALSE) or expected (expected = TRUE) Hessian should be computed. Some methods may only support one or the other specification and throw an error message otherwise (#124 and #128 by Reto Stauffer and Achim Zeileis).All distribution constructor functions such as
Poisson()andBinomial()now have default arguments for all distribution parameters. Typically, these new defaults are empty so that for examplePoisson()yields a Poisson distribution of length zero. Only those distributions which already previously had a default such asNormal(mu = 0, sigma = 1)yield a distribution of length one (#26 and #129 by Reto Stauffer).Methods for
crps()function from the scoringRules package for computing the (continuous) ranked probabiity score of a distribution. This is a useful proper scoring rule as an alternative to the log-likelihood. A numerical fallback method is provided as well (#88 and #120 by Reto Stauffer and Achim Zeileis).Streamline the
apply_dpqr()workhorse function to avoid unnecessary computations more carefully (#123 and #125 by Achim Zeileis).Reduce the hard dependencies:
ggplot2is now a “Suggests” dependency and the usage ofglueis replaced by base R functionsprintf()(#126 and #125 by Achim Zeileis).Avoid using
rlang::check_dots_used()multiple times when calling a single method. For generic functions fromdistributions3, such ascdf()andvariance()etc., the call torlang::check_dots_used()is directly in the generic. For generic functions defined elsewhere, namelyquantile()andmean()from base R andcrps()fromscoringRules, all methods callrlang::check_dots_used()themselves (#127 by Reto Stauffer).
distributions3 0.2.4
CRAN release: 2026-07-22
Achim Zeileis (@zeileis) takes over maintenance from Alex Hayes (@alexpghayes). All URLs, links, and documentation updated correspondingly.
Fix incorrect moment calculations and documentation (reported by @vincenzocoia in #114, fixed by @zeileis in #115)
distributions3 0.2.3
CRAN release: 2025-09-12
- Updates to plotting functions for compatibility new version of
ggplot2(#111)
distributions3 0.2.2
CRAN release: 2024-09-16
- New
PoissonBinomial()distribution, a generalization of the binomial distribution. The Poisson binomial is characterized by n independent Bernoulli trials but with potentially different success probabilities. Thed/p/q/rfunctions employ the efficient implementation from the PoissonBinomial package, if available. In case it is not available, fallback computation based on a normal approximation are provided - with a warning, by default (#100). - The
prodist()methods for various count regression objects now distinguish between computations for the classic pscl package and the newer countreg package (currently on Codeberg, soon to be released to CRAN). - The
simulate()method fordistributionobjects is now better aligned withsimulate.lm()in base R: It now always returns adata.framewithseedattribute. - New
simulate()default method which leveragesprodist()and subsequently uses thesimulate()method fordistributionobjects. - New
prodist()methods fordistributionobjects which just returns the unmodifieddistributionobject itself. - The
format()method - and hence theprint()method - fordistributionobjects has been simplified. For example, nowNormal(mu = 0, sigma = 1)is used instead ofNormal distribution (mu = 0, sigma = 1)in order to yield a more compact output, especially for vectors of distributions (#101). - Added an
as.character()method which essentially callsformat(..., digits = 15, drop0trailing = TRUE). This mimics the behavior and precision of base R for real vectors. Note that this enables usingmatch()for distribution objects. - Added a
duplicated()method which relies on the corresponding method for thedata.frameof parameters in a distribution. - Enabled the inclusion of
distributionvectors as columns intibbledata objects, see?vec_proxy.distributionfor further details and a practical example. - Fixed errors in notation of cumulative distribution function in the documentation of
HurdlePoisson()andHurdleNegativeBinomial()(by @dkwhu in #94 and #96). - The
prodist()method forglmobjects can now also handlefamilyspecifications fromMASS::negative.binomial(theta)with fixedtheta(reported by Christian Kleiber). - Replace
ellipsisdependency byrlangas the former will be deprecated/archived (by @olivroy in #105). - Further small improvements in methods and manual pages.
distributions3 0.2.1
CRAN release: 2022-09-07
- New generics
is_discrete()andis_continous()with methods for all distribution objects in the package. Theis_discrete()methods returnTRUEfor every distribution that is discrete on the entire support andFALSEotherwise. Analogously,is_continuous()returnsTRUEfor every distribution that is continuous on the entire support andFALSEotherwise. Thus, for mixed discrete-continuous distributions both methods should yieldFALSE(#90). - New logical argument
elementwise = NULLinapply_dpqr()and hence inherited incdf(),pdf(),log_pdf(), andquantile(). It provides type-safety when applying one of the functions to a vector of distributionsdto a numeric argumentxwhere bothdandxare of length n > 1. By settingelementwise = TRUEthe function is applied element-by-element, also yielding a vector of length n. By settingelementwise = FALSEthe function is applied for all combinations yielding an n-by-n matrix. The defaultelementwise = NULLcorresponds toFALSEifdandxare of different lengths andTRUEif the are of the same length n > 1 (#87). - Extended support for various count data distributions, now enompassing both the Poisson and negative binomial distributions along with various adjustments for zero counts (hurdle, inflation, and truncation, respectively). More details are provided in the following items (#86).
- New
d/p/q/rfunctions forhnbinom,zinbinom,ztnbinom, andztpoissimilar to the correspondingnbinomandpoisfunctions from base R. - New
HurdleNegativeBinomial(),ZINegativeBinomial(),ZTNegativeBinomial(), andZTPoisson()distribution constructors along with the corresponding S3 methods for the “usual” generics (exceptskewness()andkurtosis()). - New
prodist()methods for extracting the fitted/predicted probability distributions from models estimated byhurdle(),zeroinfl(), andzerotrunc()objects from either thepsclpackage or thecountregpackage. - Added argument
prodist(..., sigma = "ML")to thelmmethod for extracting the fitted/predicted probability distribution from a linear regression model. In the previous version theprodist()method always used the least-squares estimate of the error variance (= residual sum of squares divided by the residual degrees of freedom, n - k), as also reported by thesummary()method. Now the default is to use the maximum-likelihood estimate instead (divided by the number of observations, n) which is consistent with thelogLik()method. The previous behavior can be obtained by specifyingsigma = "OLS"(#91). - Similarly to the
lmmethod theglmmethodprodist(..., dispersion = NULL)now, by default, uses thedispersionestimate that matches thelogLik()output. This is based on the deviance divided by the number of observations, n. Alternatively,dispersion = "Chisquared"uses the estimate employed in thesummary()method, based on the Chi-squared statistic divided by the residual degrees of freedom, n - k. - Small improvements in methods for various distribution objects: Added
support()method for GEV-based distributions (GEV(),GP(),Gumbel(),Frechet()). Added arandom()method for theTukey()distribution (using the inversion method).
distributions3 0.2.0
CRAN release: 2022-06-21
- Vectorized univariate distribution objects by Moritz Lang and Achim Zeileis (#71 and #82). This allows representation of fitted probability distributions from regression models. New helper functions are provided to help setting up such distribution objects in a unified way. In particular,
apply_dpqr()helps to apply the standardd/p/q/rfunctions available in base R and many packages. The accompanying manual page provides some worked examples and further guidance. - New vignette (by Achim Zeileis) on using
distributions3to go from basic probability theory to probabilistic regression models. Illustrated with Poisson GLMs for the number of goals per team in the 2018 FIFA World Cup explained by the teams’ ability differences. (#74) - New generic function
prodist()to extract fitted (in-sample) or predicted (out-of-sample) probability distributions from model objects likelm,glm, orarima. (#83) - Extended support for count data distributions (by Achim Zeileis): Alternative parameterization for negative binomial distribution (commonly used in regression models), zero-inflated Poisson, and zero-hurdle Poisson. (#80 and #81)
distributions3 0.1.2
CRAN release: 2022-01-03
- Added a plotting generic for univariate distributions (@paulnorthrop, PR #56)
- Added support for the Generalised Extreme Value (GEV), Frechet, Gumbel, reversed Weibull and Generalised Pareto (GP) distributions (@paulnorthrop, PR #52)
- Added support for the Erlang distribution (@ellessenne, PR #54)
- Various minor bug fixes