kstats-distributions

28 probability distributions (18 continuous + 10 discrete) with a shared interface for density, cumulative probability, quantiles, and random sampling.

Every distribution exposes mean, variance, standardDeviation, skewness, kurtosis, and entropy as properties.

Getting started

val normal = NormalDistribution(mu = 0.0, sigma = 1.0)
normal.pdf(0.0) // 0.3989...
normal.cdf(1.96) // 0.975...
normal.quantile(0.975) // 1.96
normal.sample(Random(42)) // a single random draw

val poisson = PoissonDistribution(rate = 4.0)
poisson.pmf(3) // P(X = 3)
poisson.cdf(5) // P(X <= 5)
poisson.mean // 4.0

Interfaces

  • Distribution — sealed interface with mean, variance, standardDeviation, skewness, kurtosis, entropy, cdf(x), sf(x), quantile(p).

  • ContinuousDistribution — extends Distribution, adds pdf(x) and sample(random).

  • DiscreteDistribution — extends Distribution, adds pmf(k) and sample(random).

Continuous distributions

DistributionParameters
NormalDistributionmu, sigma
StudentTDistributiondf
ChiSquaredDistributionk
FDistributiondf1, df2
ExponentialDistributionlambda
GammaDistributionshape, scale
BetaDistributionalpha, beta
ParetoDistributionxm, alpha
WeibullDistributionshape, scale
LaplaceDistributionmu, b
LogNormalDistributionmu, sigma
LogisticDistributionmu, s
CauchyDistributionlocation, scale
GumbelDistributionlocation, scale
LevyDistributionlocation, scale
NakagamiDistributionm, omega
UniformDistributionmin, max
TriangularDistributionmin, mode, max

Discrete distributions

DistributionParameters
BinomialDistributionn, p
BetaBinomialDistributionn, alpha, beta
BernoulliDistributionp
PoissonDistributionlambda
GeometricDistributionp
NegativeBinomialDistributionr, p
UniformDiscreteDistributionmin, max
HypergeometricDistributionN, K, n
LogarithmicDistributionp
ZipfDistributionn, s

Packages

Link copied to clipboard
common