# Hypergeometric

Hypergeometric distribution constructor.

## Usage

``````var Hypergeometric = require( '@stdlib/stats/base/dists/hypergeometric/ctor' );
``````

#### Hypergeometric( N, K, n )

Returns a hypergeometric distribution object with parameters `N` (population size), `K` (subpopulation size), and `n` (number of draws).

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var mu = hypergeometric.mean;
// returns 3.75
``````

## hypergeometric

A hypergeometric distribution object has the following properties and methods...

### Writable Properties

#### hypergeometric.N

Population size of the distribution. `N` must be a nonnegative integer that is both larger than or equal to `K` and `n`.

``````var hypergeometric = new Hypergeometric( 100, 50, 20 );

var N = hypergeometric.N;
// returns 100.0

hypergeometric.N = 60;

N = hypergeometric.N;
// returns 60.0
``````

#### hypergeometric.K

Subpopulation size of the distribution. `K` must be a nonnegative integer that is smaller than or equal to `N`.

``````var hypergeometric = new Hypergeometric( 100, 50, 20 );

var K = hypergeometric.K;
// returns 50.0

hypergeometric.K = 30;

K = hypergeometric.K;
// returns 30.0
``````

#### hypergeometric.n

Number of draws of the distribution. `n` must be a nonnegative integer that is smaller than or equal to `N`.

``````var hypergeometric = new Hypergeometric( 100, 50, 20 );

var n = hypergeometric.n;
// returns 20.0

hypergeometric.n = 80;

n = hypergeometric.n;
// returns 80.0
``````

### Computed Properties

#### Hypergeometric.prototype.kurtosis

Returns the excess kurtosis.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var kurtosis = hypergeometric.kurtosis;
// returns ~-0.276
``````

#### Hypergeometric.prototype.mean

Returns the expected value.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var mu = hypergeometric.mean;
// returns ~3.75
``````

#### Hypergeometric.prototype.mode

Returns the mode.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var mode = hypergeometric.mode;
// returns 4.0
``````

#### Hypergeometric.prototype.skewness

Returns the skewness.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var skewness = hypergeometric.skewness;
// returns ~-0.323
``````

#### Hypergeometric.prototype.stdev

Returns the standard deviation.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var s = hypergeometric.stdev;
// returns ~0.86
``````

#### Hypergeometric.prototype.variance

Returns the variance.

``````var hypergeometric = new Hypergeometric( 20, 15, 5 );

var s2 = hypergeometric.variance;
// returns ~0.74
``````

### Methods

#### Hypergeometric.prototype.cdf( x )

Evaluates the cumulative distribution function (CDF).

``````var hypergeometric = new Hypergeometric( 8, 2, 4 );

var y = hypergeometric.cdf( 0.5 );
// returns ~0.214
``````

#### Hypergeometric.prototype.logpmf( x )

Evaluates the natural logarithm of the probability mass function (PMF).

``````var hypergeometric = new Hypergeometric( 8, 2, 4 );

var y = hypergeometric.logpmf( 2.0 );
// returns ~-1.54
``````

#### Hypergeometric.prototype.pmf( x )

Evaluates the probability mass function (PMF).

``````var hypergeometric = new Hypergeometric( 8, 2, 4 );

var y = hypergeometric.pmf( 2.0 );
// returns ~0.214
``````

#### Hypergeometric.prototype.quantile( p )

Evaluates the quantile function at probability `p`.

``````var hypergeometric = new Hypergeometric( 8, 2, 4 );

var y = hypergeometric.quantile( 0.8 );
// returns 2.0

y = hypergeometric.quantile( 1.9 );
// returns NaN
``````

## Examples

``````var Hypergeometric = require( '@stdlib/stats/base/dists/hypergeometric/ctor' );

var hypergeometric = new Hypergeometric( 100, 50, 20 );

var mu = hypergeometric.mean;
// returns 10.0

var mode = hypergeometric.mode;
// returns 10.0

var s2 = hypergeometric.variance;
// returns ~4.04

var y = hypergeometric.cdf( 10.5 );
// returns ~0.598
``````
Did you find this page helpful?