Moment-Generating Function
Negative binomial distribution moment-generating function (MGF).
The moment-generating function for a negative binomial random variable is
where r > 0
is the number of failures until the experiment is stopped and 0 <= p <= 1
is the success probability.
Usage
var mgf = require( '@stdlib/stats/base/dists/negative-binomial/mgf' );
mgf( t, r, p )
Evaluates the moment-generating function for a negative binomial distribution with number of successes until experiment is stopped r
and success probability p
.
var y = mgf( 0.05, 20.0, 0.8 );
// returns ~267.839
y = mgf( 0.1, 20.0, 0.1 );
// returns ~9.347
While r
can be interpreted as the number of successes until the experiment is stopped, the negative binomial distribution is also defined for non-integers r
. In this case, r
denotes shape parameter of the gamma mixing distribution.
var y = mgf( 0.1, 15.5, 0.5 );
// returns ~26.375
y = mgf( 0.5, 7.4, 0.4 );
// returns ~2675.677
If t >= -ln( p )
, the function returns NaN
.
var y = mgf( 0.7, 15.5, 0.5 ); // -ln( p ) = ~0.693
// returns NaN
If provided a r
which is not a positive number, the function returns NaN
.
var y = mgf( 0.2, 0.0, 0.5 );
// returns NaN
y = mgf( 0.2, -2.0, 0.5 );
// returns NaN
If provided NaN
as any argument, the function returns NaN
.
var y = mgf( NaN, 20.0, 0.5 );
// returns NaN
y = mgf( 0.0, NaN, 0.5 );
// returns NaN
y = mgf( 0.0, 20.0, NaN );
// returns NaN
If provided a success probability p
outside of [0,1]
, the function returns NaN
.
var y = mgf( 0.2, 20, -1.0 );
// returns NaN
y = mgf( 0.2, 20, 1.5 );
// returns NaN
mgf.factory( r, p )
Returns a function for evaluating the moment-generating function of a negative binomial distribution with number of successes until experiment is stopped r
and success probability p
.
var myMGF = mgf.factory( 4.3, 0.4 );
var y = myMGF( 0.2 );
// returns ~4.696
y = myMGF( 0.4 );
// returns ~30.83
Examples
var randu = require( '@stdlib/random/base/randu' );
var round = require( '@stdlib/math/base/special/round' );
var mgf = require( '@stdlib/stats/base/dists/negative-binomial/mgf' );
var p;
var r;
var t;
var y;
var i;
for ( i = 0; i < 10; i++ ) {
t = (randu() * 1.0) - 0.5;
r = randu() * 50;
p = randu();
y = mgf( t, r, p );
console.log( 't: %d, r: %d, p: %d, M_X(t;r,p): %d', t, r.toFixed( 4 ), p.toFixed( 4 ), y.toFixed( 4 ) );
}