Moment-Generating Function
Chi-squared distribution moment-generating function (MGF).
The moment-generating function for a chi-squared random variable is
where k
is the degrees of freedom.
Usage
var mgf = require( '@stdlib/stats/base/dists/chisquare/mgf' );
mgf( t, k )
Evaluates the moment-generating function (MGF) for a chi-squared distribution with degrees of freedom k
.
var y = mgf( 0.4, 2 );
// returns ~5.0
y = mgf( -1.0, 5.0 );
// returns ~0.0642
y = mgf( 0.0, 10.0 );
// returns 1.0
If provided NaN
as any argument, the function returns NaN
.
var y = mgf( NaN, 1.0 );
// returns NaN
y = mgf( 0.0, NaN );
// returns NaN
If provided t >= 0.5
, the function returns NaN
.
var y = mgf( 0.8, 1.0 );
// returns NaN
If provided k < 0
, the function returns NaN
.
var y = mgf( 2.0, -2.0 );
// returns NaN
mgf.factory( k )
Returns a function for evaluating the moment-generating function (MGF) for a chi-squared distribution with degrees of freedom k
.
var mymgf = mgf.factory( 1.0 );
var y = mymgf( 0.2 );
// returns ~1.291
y = mymgf( 0.4 );
// returns ~2.236
Examples
var randu = require( '@stdlib/random/base/randu' );
var mgf = require( '@stdlib/stats/base/dists/chisquare/mgf' );
var t;
var k;
var y;
var i;
for ( i = 0; i < 10; i++ ) {
t = randu() * 0.5;
k = randu() * 10.0;
y = mgf( t, k );
console.log( 'x: %d, k: %d, M_X(t;k): %d', t.toFixed( 4 ), k.toFixed( 4 ), y.toFixed( 4 ) );
}
C APIs
Usage
#include "stdlib/stats/base/dists/chisquare/mgf.h"
stdlib_base_dists_chisquare_mgf( t, k )
Evaluates the moment-generating function (MGF) for a chi-squared distribution with degrees of freedom k
at a value t
.
double out = stdlib_base_dists_chisquare_mgf( 0.4, 2.0 );
// returns ~5.0
The function accepts the following arguments:
- t:
[in] double
input value. - k:
[in] double
degrees of freedom (must be non-negative).
double stdlib_base_dists_chisquare_mgf( const double t, const double k );
Examples
#include "stdlib/stats/base/dists/chisquare/mgf.h"
#include <stdlib.h>
#include <stdio.h>
static double random_uniform( const double min, const double max ) {
double v = (double)rand() / ( (double)RAND_MAX + 1.0 );
return min + ( v * ( max - min ) );
}
int main( void ) {
double result;
double t;
double k;
int i;
for ( i = 0; i < 10; i++ ) {
t = random_uniform( -0.5, 0.4 );
k = random_uniform( 0.1, 10.0 );
result = stdlib_base_dists_chisquare_mgf( t, k );
printf( "t: %lf, k: %lf, M_X(t;k): %lf \n", t, k, result );
}
}