EmpiricalDistributions.jl
A Julia package for empirical probability distributions that implement the Distributions.jl API.
This package currently provides uni- and multivariate binned distributions that can be created from StatsBase.jl histograms.
UvBinnedDist
, usually derived from a 1-dimensional histogram, represents a binned univariate continuous distribution:
using Distributions, StatsBase
X_uv = rand(Normal(2.0, 0.5), 10^5)
uvhist = fit(Histogram, X_uv)
using EmpiricalDistributions
uvdist = UvBinnedDist(uvhist)
uvdist isa Distribution{Univariate,Continuous}
The resulting distribution can be queried, used to generate random numbers, etc.:
mean(uvdist), var(uvdist)
maximum(uvdist), minimum(uvdist)
rand(uvdist, 5)
A binned distribution can be converted back to a histogram:
using LinearAlgebra
Histogram(uvdist) == normalize(uvhist)
MvBinnedDist
, usually derived from a multidimensional histogram, represents a binned multivariate continuous distribution:
X_mv = rand(MvNormal([3.5, 0.5], [2.0 0.5; 0.5 1.0]), 10^5)
mvhist = fit(Histogram, (X_mv[1, :], X_mv[2, :]))
mvdist = MvBinnedDist(mvhist)
mvdist isa Distribution{Multivariate,Continuous}
mean(mvdist), cov(mvdist)
rand(mvdist, 5)