HyperGeometric: Create a HyperGeometric distribution

View source: R/HyperGeometric.R

HyperGeometricR Documentation

Create a HyperGeometric distribution


To understand the HyperGeometric distribution, consider a set of r objects, of which m are of the type I and n are of the type II. A sample with size k (k<r) with no replacement is randomly chosen. The number of observed type I elements observed in this sample is set to be our random variable X. For example, consider that in a set of 20 car parts, there are 4 that are defective (type I). If we take a sample of size 5 from those car parts, the probability of finding 2 that are defective will be given by the HyperGeometric distribution (needs double checking).


HyperGeometric(m, n, k)



The number of type I elements available.


The number of type II elements available.


The size of the sample taken.


We recommend reading this documentation on https://alexpghayes.github.io/distributions3/, where the math will render with additional detail and much greater clarity.

In the following, let X be a HyperGeometric random variable with success probability p = p = m/(m+n).

Support: x \in { \{\max{(0, k-n)}, …, \min{(k,m)}}\}

Mean: \frac{km}{n+m} = kp

Variance: \frac{km(n)(n+m-k)}{(n+m)^2 (n+m-1)} = kp(1-p)(1 - \frac{k-1}{m+n-1})

Probability mass function (p.m.f):

P(X = x) = \frac{{m \choose x}{n \choose k-x}}{{m+n \choose k}}

Cumulative distribution function (c.d.f):

P(X ≤ k) \approx Φ\Big(\frac{x - kp}{√{kp(1-p)}}\Big)

Moment generating function (m.g.f):

Not useful.


A HyperGeometric object.

See Also

Other discrete distributions: Bernoulli(), Binomial(), Categorical(), Geometric(), HurdleNegativeBinomial(), HurdlePoisson(), Multinomial(), NegativeBinomial(), Poisson(), ZINegativeBinomial(), ZIPoisson(), ZTNegativeBinomial(), ZTPoisson()



X <- HyperGeometric(4, 5, 8)

random(X, 10)

pdf(X, 2)
log_pdf(X, 2)

cdf(X, 4)
quantile(X, 0.7)

distributions3 documentation built on Sept. 7, 2022, 5:07 p.m.