# Hypergeometric: Hypergeometric Distribution Class In distr6: The Complete R6 Probability Distributions Interface

## Description

Mathematical and statistical functions for the Hypergeometric distribution, which is commonly used to model the number of successes out of a population containing a known number of possible successes, for example the number of red balls from an urn or red, blue and yellow balls.

## Details

The Hypergeometric distribution parameterised with population size, N, number of possible successes, K, and number of draws from the distribution, n, is defined by the pmf,

f(x) = C(K, x)C(N-K,n-x)/C(N,n)

for N = {0,1,2,…}, n, K = {0,1,2,…,N} and C(a,b) is the combination (or binomial coefficient) function.

## Value

Returns an R6 object inheriting from class SDistribution.

## Distribution support

The distribution is supported on {max(0, n + K - N),...,min(n,K)}.

## Default Parameterisation

Hyper(size = 50, successes = 5, draws = 10)

N/A

N/A

## Super classes

`distr6::Distribution` -> `distr6::SDistribution` -> `Hypergeometric`

## Public fields

`name`

Full name of distribution.

`short_name`

Short name of distribution for printing.

`description`

Brief description of the distribution.

`packages`

Packages required to be installed in order to construct the distribution.

## Methods

#### Public methods

Inherited methods

#### Method `new()`

Creates a new instance of this R6 class.

##### Usage
```Hypergeometric\$new(
size = NULL,
successes = NULL,
failures = NULL,
draws = NULL,
decorators = NULL
)```
##### Arguments
`size`

`(integer(1))`
Population size. Defined on positive Naturals.

`successes`

`(integer(1))`
Number of population successes. Defined on positive Naturals.

`failures`

`(integer(1))`
Number of population failures. `failures = size - successes`. If given then `successes` is ignored. Defined on positive Naturals.

`draws`

`(integer(1))`
Number of draws from the distribution, defined on the positive Naturals.

`decorators`

`(character())`
Decorators to add to the distribution during construction.

#### Method `mean()`

The arithmetic mean of a (discrete) probability distribution X is the expectation

E_X(X) = ∑ p_X(x)*x

with an integration analogue for continuous distributions.

##### Usage
`Hypergeometric\$mean(...)`
`...`

Unused.

#### Method `mode()`

The mode of a probability distribution is the point at which the pdf is a local maximum, a distribution can be unimodal (one maximum) or multimodal (several maxima).

##### Usage
`Hypergeometric\$mode(which = "all")`
##### Arguments
`which`

`(character(1) | numeric(1)`
Ignored if distribution is unimodal. Otherwise `"all"` returns all modes, otherwise specifies which mode to return.

#### Method `variance()`

The variance of a distribution is defined by the formula

var_X = E[X^2] - E[X]^2

where E_X is the expectation of distribution X. If the distribution is multivariate the covariance matrix is returned.

##### Usage
`Hypergeometric\$variance(...)`
`...`

Unused.

#### Method `skewness()`

The skewness of a distribution is defined by the third standardised moment,

sk_X = E_X[((x - μ)/σ)^3]

where E_X is the expectation of distribution X, μ is the mean of the distribution and σ is the standard deviation of the distribution.

##### Usage
`Hypergeometric\$skewness(...)`
`...`

Unused.

#### Method `kurtosis()`

The kurtosis of a distribution is defined by the fourth standardised moment,

k_X = E_X[((x - μ)/σ)^4]

where E_X is the expectation of distribution X, μ is the mean of the distribution and σ is the standard deviation of the distribution. Excess Kurtosis is Kurtosis - 3.

##### Usage
`Hypergeometric\$kurtosis(excess = TRUE, ...)`
##### Arguments
`excess`

`(logical(1))`
If `TRUE` (default) excess kurtosis returned.

`...`

Unused.

#### Method `setParameterValue()`

Sets the value(s) of the given parameter(s).

##### Usage
```Hypergeometric\$setParameterValue(
...,
lst = NULL,
error = "warn",
resolveConflicts = FALSE
)```
##### Arguments
`...`

`ANY`
Named arguments of parameters to set values for. See examples.

`lst`

`(list(1))`
Alternative argument for passing parameters. List names should be parameter names and list values are the new values to set.

`error`

`(character(1))`
If `"warn"` then returns a warning on error, otherwise breaks if `"stop"`.

`resolveConflicts`

`(logical(1))`
If `FALSE` (default) throws error if conflicting parameterisations are provided, otherwise automatically resolves them by removing all conflicting parameters.

#### Method `clone()`

The objects of this class are cloneable with this method.

##### Usage
`Hypergeometric\$clone(deep = FALSE)`
##### Arguments
`deep`

Whether to make a deep clone.

## References

McLaughlin, M. P. (2001). A compendium of common probability distributions (pp. 2014-01). Michael P. McLaughlin.

Other discrete distributions: `Bernoulli`, `Binomial`, `Categorical`, `Degenerate`, `DiscreteUniform`, `EmpiricalMV`, `Empirical`, `Geometric`, `Logarithmic`, `Multinomial`, `NegativeBinomial`, `WeightedDiscrete`
Other univariate distributions: `Arcsine`, `Bernoulli`, `BetaNoncentral`, `Beta`, `Binomial`, `Categorical`, `Cauchy`, `ChiSquaredNoncentral`, `ChiSquared`, `Degenerate`, `DiscreteUniform`, `Empirical`, `Erlang`, `Exponential`, `FDistributionNoncentral`, `FDistribution`, `Frechet`, `Gamma`, `Geometric`, `Gompertz`, `Gumbel`, `InverseGamma`, `Laplace`, `Logarithmic`, `Logistic`, `Loglogistic`, `Lognormal`, `NegativeBinomial`, `Normal`, `Pareto`, `Poisson`, `Rayleigh`, `ShiftedLoglogistic`, `StudentTNoncentral`, `StudentT`, `Triangular`, `Uniform`, `Wald`, `Weibull`, `WeightedDiscrete`