quantile()
method for dist_multivariate_normal()
now defaults to
equicoordinate quantiles. To obtain marginal quantiles, you should use
quantile(dist, p, type = "marginal")
.support()
now shows whether the interval of support is open or
closed (@venpopov, #97).cdf()
which estimates the CDF using Monte Carlo
integration (@robjhyndman, #122).dist_gk()
for g-and-k distributions.dist_gh()
for g-and-h distributions.dist_gev()
for the Generalised Extreme Value distribution and
dist_gpd()
for the Generalised Pareto distribution (@robjhyndman, #124).dist_mixture()
now displays the components of the mixture when the output
width is sufficiently wide (@statasaurus, #112).generate()
now respects dimnames()
for multivariate distributions.dist_mixture()
now supports multivariate distributions (@robjhyndman, #122).dist_normal()
(@venpopov, #95)quantile()
and cdf()
for transformed distributions with
monotonically decreasing transformations (#100).dist_sample()
methods not structuring multivariate
results correctly as matrices.cdf()
method for dist_multivariate_normal()
now gives the P(X <= q)
rather than P(X > q) for consistency with all other cdf()
methods.quantile()
method for dist_multivariate_normal()
now correctly gives
the boundaries when p=0
or p=1
when type="equicoordinate"
.quantile()
method for dist_multivariate_normal()
now only square roots
the diagonal elements when type="marginal"
.Small patch to resolve issues with CRAN checks.
quantile(<dist_mixture>)
.cdf(<dist_sample>)
as Pr(X <= x), not Pr(X < x).p
for log_quantile()
.mean
and sd
as aliases for mu
and sigma
respectively in
dist_normal()
and dist_student_t()
to match arguments of the stats package
interface (#76).scale
argument for alternative specification for dist_burr()
and
dist_gamma()
.na.rm
and other parameters to
be passed to distribution methods, even if these parameters aren't used. The
package no longer checks the usage of ...
with the ellipsis
package, if
you'd like to check that all ...
are used, you can write your own wrapping
functions.dist_transformed()
, allowing the
transformation to differ for each distribution.covariance()
and other matrix output functions of multivariate distributions
now name the result using the distribution's dimension names.dist_categorical()
for the Categorical distribution.dist_lognormal()
for the log-normal distribution. Mathematical
conversion shortcuts have also been added, so exp(dist_normal())
produces
dist_lognormal()
.parameters()
generic for obtaining the distribution's parameters.family(<distribution>)
for getting the distribution's family name.covariance()
to return the covariance of a distribution.support()
to identify the distribution's region of support (#8).log_likelihood()
for computing the log-likelihood of observing a
sample from a distribution.variance()
now always returns a variance. It will not default to providing
a covariance matrix for matrices. This also applies to multivariate
distributions such as dist_multivariate_normal()
. The covariance can now
be obtained using the covariance()
function.dist_wrap()
can now search for distribution functions in any environment,
not just packages. If the package
argument is NULL
, it will search the
calling environment for the functions. You can also provide a package name as
before, and additionally an arbitrary environment to this argument.median()
methods will now ignore the na.rm
option when it does not apply
to that distribution type (#72).dist_sample()
now allows for missing values to be stored. Note that
density()
, quantile()
and cdf()
will remove these missing values by
default. This behaviour can be changed with the na.rm
argument.<hilo>
objects now support non-numeric and multivariate distributions.
<hilo>
vectors that have different bound types cannot be mixed (#74).mean()
and variance()
, which
no longer use sampling based means and variances for univariate continuous
distributions (#71, @mjskay)dist_binomial()
distributions now return integers for quantile()
and
generate()
methods.format()
function for distributions classes that have not
defined this method (#67).variance()
on a dist_multivariate_normal()
will now return the diagonal
instead of the complete variance-covariance matrix.dist_bernoulli()
will now return logical values for quantile()
and
generate()
.is_distribution()
to identify if an object is a distribution.is.na()
and
vctrs
vector resizing / filling functionality.as.character(<hilo>)
method, allowing datasets containing hilo()
objects to be saved as a text file (#57).hdr()
range size
incorrectly being treated as 100-size
,
giving 5% ranges for 95% sizes and vice-versa (#61).A small performance and methods release. Some issues with truncated distributions have been fixed, and some more distribution methods have been added which improve performance of common tasks.
dist_missing()
for representing unknown or missing (NA) distributions.cdf()
method for dist_sample()
which uses the emperical cdf.dist_mixture()
now preserves dimnames()
if all distributions have the same
dimnames()
.density()
and generate()
methods for sample distributions.skewness()
method for dist_sample()
.dist_truncated()
distributions.dist_truncated()
distributions with no upper or
lower limit.dist_wrap()
for wrapping distributions not yet added in the package.likelihood()
for computing the likelihood of observing a sample from a
distribution.skewness()
for computing the skewness of a distribution.kurtosis()
for computing the kurtosis of a distribution.density()
, cdf()
and quantile()
methods now accept a log
argument
which will use/return probabilities as log probabilities.distributions3
package.View()
.hilo()
intervals can no longer be added to other intervals, as this is a
common mistake when aggregating forecasts.d
for numDeriv::hessian()
when computing mean and variance of
transformed distributions.autoplot.distribution()
is now deprecated
in favour of using the ggdist
package. The ggdist
package allows
distributions produced by distributional to be used directly with ggplot2 as
aesthetics.First release.
distribution
: Distributions are represented in a vectorised format using the
vctrs package. This makes
distributions suitable for inclusion in model prediction output. A
distribution
is a container for distribution-specific S3 classes.hilo
: Intervals are also stored in a vector. A hilo
consists of a lower
bound, upper
bound, and confidence level
. Each numerical element can be
extracted using $
, for example my_hilo$lower to obtain the lower bounds.hdr
: Highest density regions are currently stored as lists of hilo
values.
This is an experimental feature, and is likely to be expanded upon in an
upcoming release.Values of interest can be computed from the distribution using generic functions. The first release provides 9 functions for interacting with distributions:
density()
: The probability density/mass function (equivalent to d...()
).cdf()
: The cumulative distribution function (equivalent to p...()
).generate()
: Random generation from the distribution (equivalent to r...()
).quantile()
: Compute quantiles of the distribution (equivalent to q...()
).hilo()
: Compute probability intervals of probability distribution(s).hdr()
: Compute highest density regions of probability distribution(s).mean()
: Obtain the mean(s) of probability distribution(s).median()
: Obtain the median(s) of probability distribution(s).variance()
: Obtain the variance(s) of probability distribution(s).autoplot()
method for visualising the probability density function
([density()
]) or cumulative distribution function ([cdf()
]) of one or more
distribution.geom_hilo_ribbon()
and geom_hilo_linerange()
geometries for ggplot2.
These geoms allow uncertainty to be shown graphically with hilo()
intervals.dist_beta()
, dist_burr()
, dist_cauchy()
, dist_chisq()
,
dist_exponential()
, dist_f()
, dist_gamma()
, dist_gumbel()
,
dist_hypergeometric()
, dist_inverse_exponential()
, dist_inverse_gamma()
,
dist_inverse_gaussian()
, dist_logistic()
, dist_multivariate_normal()
,
dist_normal()
, dist_pareto()
, dist_student_t()
,
dist_studentized_range()
, dist_uniform()
, dist_weibull()
dist_bernoulli()
, dist_binomial()
, dist_geometric()
,
dist_logarithmic()
, dist_multinomial()
, dist_negative_binomial()
,
dist_poisson()
, dist_poisson_inverse_gaussian()
dist_degenerate()
, dist_percentile()
, dist_sample()
dist_inflated()
which inflates a specific value of a distribution by
a given probability. This can be used to produce zero-inflated distributions.dist_transformed()
for transforming distributions. This can be used
to produce log distributions such as logNormal:
dist_transformed(dist_normal(), transform = exp, inverse = log)
dist_mixture()
for producing weighted mixtures of distributions.dist_truncated()
to impose boundaries on a distribution's domain via
truncation.