# Negative Binomial

Negative binomial distribution constructor.

## Usage

``````var NegativeBinomial = require( '@stdlib/math/base/dists/negative-binomial/ctor' );
``````

#### NegativeBinomial( [r, p] )

Returns a negative binomial distribution object.

``````var nbinomial = new NegativeBinomial();

var mu = nbinomial.mean;
// returns 1.0
``````

By default, `r = 1.0` and `p = 0.5`. To create a distribution having a different `r` (number of trials until experiment is stopped) and `p` (success probability), provide parameter values.

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var mu = nbinomial.mean;
// returns 16.0
``````

## nbinomial

A negative binomial distribution object has the following properties and methods...

### Writable Properties

#### nbinomial.r

Number of trials of the distribution. `r` must be a positive number.

``````var nbinomial = new NegativeBinomial();

var r = nbinomial.r;
// returns 1.0

binomial.r = 4.5;

r = nbinomial.r;
// returns 4.5
``````

#### nbinomial.p

Success probability of the distribution. `p` must be a number between 0 and 1.

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var p = nbinomial.p;
// returns 0.2

binomial.p = 0.7;

p = nbinomial.p;
// returns 0.7
``````

### Computed Properties

#### NegativeBinomial.prototype.kurtosis

Returns the excess kurtosis.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var kurtosis = nbinomial.kurtosis;
// returns ~0.522
``````

#### NegativeBinomial.prototype.mean

Returns the expected value.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var mu = nbinomial.mean;
// returns ~18.0
``````

#### NegativeBinomial.prototype.mode

Returns the mode.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var mode = nbinomial.mode;
// returns 16.0
``````

#### NegativeBinomial.prototype.skewness

Returns the skewness.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var skewness = nbinomial.skewness;
// returns ~0.596
``````

#### NegativeBinomial.prototype.stdev

Returns the standard deviation.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var s = nbinomial.stdev;
// returns ~6.708
``````

#### NegativeBinomial.prototype.variance

Returns the variance.

``````var nbinomial = new NegativeBinomial( 12.0, 0.4 );

var s2 = nbinomial.variance;
// returns ~45.0
``````

### Methods

#### NegativeBinomial.prototype.cdf( x )

Evaluates the cumulative distribution function (CDF).

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var y = nbinomial.cdf( 3.5 );
// returns ~0.033
``````

#### NegativeBinomial.prototype.logpmf( x )

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

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var y = nbinomial.logpmf( 4.0 );
// returns ~-3.772
``````

#### NegativeBinomial.prototype.mgf( t )

Evaluates the moment-generating function (MGF).

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var y = nbinomial.mgf( 0.1 );
// returns ~1.66
``````

#### NegativeBinomial.prototype.pmf( x )

Evaluates the probability mass function (PMF).

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var y = nbinomial.pmf( 4.0 );
// returns ~0.023
``````

#### NegativeBinomial.prototype.quantile( p )

Evaluates the quantile function at probability `p`.

``````var nbinomial = new NegativeBinomial( 4.0, 0.2 );

var y = nbinomial.quantile( 0.5 );
// returns 15.0

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

## Examples

``````var NegativeBinomial = require( '@stdlib/math/base/dists/negative-binomial/ctor' );

var nbinomial = new NegativeBinomial( 10.0, 0.4 );

var mu = nbinomial.mean;
// returns 15.0

var mode = nbinomial.mode;
// returns 13.0

var s2 = nbinomial.variance;
// returns ~37.5

var y = nbinomial.cdf( 8.0 );
// returns ~0.135
``````