Skip to content

Latest commit

 

History

History
535 lines (456 loc) · 9.82 KB

File metadata and controls

535 lines (456 loc) · 9.82 KB

[Univariate Distributions](@id univariates)

Univariate distributions are the distributions whose variate forms are Univariate (i.e each sample is a scalar). Abstract types for univariate distributions:

const UnivariateDistribution{S<:ValueSupport} = Distribution{Univariate,S}

const DiscreteUnivariateDistribution   = Distribution{Univariate, Discrete}
const ContinuousUnivariateDistribution = Distribution{Univariate, Continuous}

Common Interface

A series of methods is implemented for each univariate distribution, which provides useful functionalities such as moment computation, pdf evaluation, and sampling (i.e. random number generation).

Parameter Retrieval

Note: params are defined for all univariate distributions, while other parameter retrieval methods are only defined for those distributions for which these parameters make sense. See below for details.

params(::UnivariateDistribution)
scale(::UnivariateDistribution)
location(::UnivariateDistribution)
shape(::UnivariateDistribution)
rate(::UnivariateDistribution)
ncategories(::UnivariateDistribution)
ntrials(::UnivariateDistribution)
dof(::UnivariateDistribution)

For distributions for which success and failure have a meaning, the following methods are defined:

succprob(::DiscreteUnivariateDistribution)
failprob(::DiscreteUnivariateDistribution)

Computation of statistics

maximum(::UnivariateDistribution)
minimum(::UnivariateDistribution)
extrema(::UnivariateDistribution)
mean(::UnivariateDistribution)
var(::UnivariateDistribution)
std(::UnivariateDistribution)
median(::UnivariateDistribution)
modes(::UnivariateDistribution)
mode(::UnivariateDistribution)
skewness(::UnivariateDistribution)
kurtosis(::UnivariateDistribution)
kurtosis(::Distribution, ::Bool)
isplatykurtic(::UnivariateDistribution)
isleptokurtic(::UnivariateDistribution)
ismesokurtic(::UnivariateDistribution)
entropy(::UnivariateDistribution)
entropy(::UnivariateDistribution, ::Real)
mgf(::UnivariateDistribution, ::Any)
cgf(::UnivariateDistribution, ::Any)
cf(::UnivariateDistribution, ::Any)
pdfsquaredL2norm

Probability Evaluation

insupport(::UnivariateDistribution, x::Any)
pdf(::UnivariateDistribution, ::Real)
logpdf(::UnivariateDistribution, ::Real)
gradlogpdf(::ContinuousUnivariateDistribution, ::Real)
loglikelihood(::UnivariateDistribution, ::AbstractArray)
cdf(::UnivariateDistribution, ::Real)
logcdf(::UnivariateDistribution, ::Real)
logdiffcdf(::UnivariateDistribution, ::Real, ::Real)
ccdf(::UnivariateDistribution, ::Real)
logccdf(::UnivariateDistribution, ::Real)
quantile(::UnivariateDistribution, ::Real)
cquantile(::UnivariateDistribution, ::Real)
invlogcdf(::UnivariateDistribution, ::Real)
invlogccdf(::UnivariateDistribution, ::Real)

Sampling (Random number generation)

rand(::AbstractRNG, ::UnivariateDistribution)
rand!(::AbstractRNG, ::UnivariateDistribution, ::AbstractArray)

Continuous Distributions

using Distributions, GR

# display figures as SVGs
GR.inline("svg")

# plot probability density of continuous distributions
function plotdensity(
    (xmin, xmax),
    dist::ContinuousUnivariateDistribution;
    npoints=299,
    title="",
    kwargs...,
)
    figure(;
        title=title,
        xlabel="x",
        ylabel="density",
        grid=false,
        backgroundcolor=0, # white instead of transparent background for dark Documenter scheme
        font="Helvetica_Regular", # work around https://github.com/JuliaPlots/Plots.jl/issues/2596
        linewidth=2.0, # thick lines
        kwargs...,
    )
    return plot(range(xmin, xmax; length=npoints), Base.Fix1(pdf, dist))
end

# convenience function with automatic title
function plotdensity(
    xmin_xmax,
    ::Type{T},
    args=();
    title=string(T) * "(" * join(args, ", ") * ")",
    kwargs...
) where {T<:ContinuousUnivariateDistribution}
    return plotdensity(xmin_xmax, T(args...); title=title, kwargs...)
end
Arcsine
plotdensity((0.001, 0.999), Arcsine, (0, 1)) # hide
Beta
plotdensity((0, 1), Beta, (2, 2)) # hide
BetaPrime
plotdensity((0, 1), BetaPrime, (1, 2)) # hide
Biweight
plotdensity((-1, 3), Biweight, (1, 2)) # hide
Cauchy
plotdensity((-12, 5), Cauchy, (-2, 1)) # hide
Chernoff
plotdensity((-3, 3), Chernoff) # hide
Chi
plotdensity((0.001, 3), Chi, (1,)) # hide
Chisq
plotdensity((0, 9), Chisq, (3,)) # hide
Cosine
plotdensity((-1, 1), Cosine, (0, 1)) # hide
Epanechnikov
plotdensity((-1, 1), Epanechnikov, (0, 1)) # hide
Erlang
plotdensity((0, 8), Erlang, (7, 0.5)) # hide
Exponential
plotdensity((0, 3.5), Exponential, (0.5,)) # hide
FDist
plotdensity((0, 10), FDist, (10, 1)) # hide
Frechet
plotdensity((0, 20), Frechet, (1, 1)) # hide
Gamma
plotdensity((0, 18), Gamma, (7.5, 1)) # hide
GeneralizedExtremeValue
plotdensity((0, 30), GeneralizedExtremeValue, (0, 1, 1)) # hide
GeneralizedPareto
plotdensity((0, 20), GeneralizedPareto, (0, 1, 1)) # hide
Gumbel
plotdensity((-2, 5), Gumbel, (0, 1)) # hide
InverseGamma
plotdensity((0.001, 1), InverseGamma, (3, 0.5)) # hide
InverseGaussian
plotdensity((0, 5), InverseGaussian, (1, 1)) # hide
JohnsonSU
plotdensity((-20, 20), JohnsonSU, (0.0, 1.0, 0.0, 1.0)) # hide
Kolmogorov
plotdensity((0, 2), Kolmogorov) # hide
KSDist
KSOneSided
Kumaraswamy
plotdensity((0, 1), Kumaraswamy, (2, 5)) # hide
Laplace
plotdensity((-20, 20), Laplace, (0, 4)) # hide
Levy
plotdensity((0, 20), Levy, (0, 1)) # hide
Lindley
plotdensity((0, 20), Lindley, (1.5,)) # hide
Logistic
plotdensity((-4, 8), Logistic, (2, 1)) # hide
LogLogistic
plotdensity((0, 2), LogLogistic, (2, 1)) # hide
LogitNormal
plotdensity((0, 1), LogitNormal, (0, 1)) # hide
LogNormal
plotdensity((0, 5), LogNormal, (0, 1)) # hide
LogUniform
plotdensity((0, 11), LogUniform, (1, 10)) # hide
NoncentralBeta
plotdensity((0, 1), NoncentralBeta, (2, 3, 1)) # hide
NoncentralChisq
plotdensity((0, 20), NoncentralChisq, (2, 3)) # hide
NoncentralF
plotdensity((0, 10), NoncentralF, (2, 3, 1)) # hide
NoncentralT
plotdensity((-1, 20), NoncentralT, (2, 3)) # hide
Normal
plotdensity((-4, 4), Normal, (0, 1)) # hide
NormalCanon
plotdensity((-4, 4), NormalCanon, (0, 1)) # hide
NormalInverseGaussian
plotdensity((-2, 2), NormalInverseGaussian, (0, 0.5, 0.2, 0.1)) # hide
Pareto
plotdensity((1, 8), Pareto, (1, 1)) # hide
PGeneralizedGaussian
plotdensity((0, 20), PGeneralizedGaussian, (0.2)) # hide
Rayleigh
plotdensity((0, 2), Rayleigh, (0.5)) # hide
Rician
plotdensity((0, 5), Rician, (0.5, 1)) # hide
Semicircle
plotdensity((-1, 1), Semicircle, (1,)) # hide
SkewedExponentialPower
plotdensity((-8, 5), SkewedExponentialPower, (0, 1, 0.7, 0.7)) # hide
SkewNormal
plotdensity((-4, 4), SkewNormal, (0, 1, -1)) # hide
StudentizedRange
SymTriangularDist
# we only need to plot 5 equally spaced points for these parameters and limits # hide
plotdensity((-2, 2), SymTriangularDist, (0, 1); npoints=5) # hide
TDist
plotdensity((-5, 5), TDist, (5,)) # hide
TriangularDist
# we only need to plot 6 equally spaced points for these parameters and limits # hide
plotdensity((-0.5, 2), TriangularDist, (0, 1.5, 0.5); npoints=6) # hide
Triweight
plotdensity((0, 2), Triweight, (1, 1)) # hide
Uniform
plotdensity((-0.5, 1.5), Uniform, (0, 1); ylim=(0, 1.5)) # hide
VonMises
plotdensity((-π, π), VonMises, (0.5,); xlim=(-π, π), xticks=(π/5, 5), xticklabels=x -> x ≈ -π ? "-π" : (x ≈ π ? "π" : "0")) # hide
Weibull
plotdensity((0.001, 3), Weibull, (0.5, 1)) # hide

Discrete Distributions

Bernoulli
BernoulliLogit
BetaBinomial
Binomial
Categorical
Dirac
DiscreteUniform
DiscreteNonParametric
Geometric
Hypergeometric
NegativeBinomial
Poisson
PoissonBinomial
Skellam
Soliton

Vectorized evaluation

Vectorized computation and in-place vectorized computation have been deprecated.

Index

Pages = ["univariate.md"]