Evaluate the natural logarithm of the probability density function (PDF) for a chi distribution.
The probability density function (PDF) for a chi random variable is
where k is the degrees of freedom and Γ denotes the gamma function.
var logpdf = require( '@stdlib/stats/base/dists/chi/logpdf' );Evaluates the natural logarithm of the probability density function (PDF) for a chi distribution with degrees of freedom k.
var y = logpdf( 0.1, 1.0 );
// returns ~-0.231
y = logpdf( 0.5, 2.0 );
// returns ~-0.818
y = logpdf( -1.0, 4.0 );
// returns -InfinityIf provided NaN as any argument, the function returns NaN.
var y = logpdf( NaN, 1.0 );
// returns NaN
y = logpdf( 0.0, NaN );
// returns NaNIf provided k < 0, the function returns NaN.
var y = logpdf( 2.0, -2.0 );
// returns NaNIf provided k = 0, the function evaluates the natural logarithm of the PDF for a degenerate distribution centered at 0.
var y = logpdf( 2.0, 0.0 );
// returns -Infinity
y = logpdf( 0.0, 0.0 );
// returns InfinityReturns a function for evaluating the natural logarithm of the PDF for a chi distribution with degrees of freedom k.
var mylogPDF = logpdf.factory( 6.0 );
var y = mylogPDF( 3.0 );
// returns ~-1.086
y = mylogPDF( 1.0 );
// returns ~-2.579var uniform = require( '@stdlib/random/array/uniform' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var logpdf = require( '@stdlib/stats/base/dists/chi/logpdf' );
var opts = {
'dtype': 'float64'
};
var x = uniform( 20, 0.0, 10.0, opts );
var k = uniform( 20, 0.0, 10.0, opts );
logEachMap( 'x: %0.4f, k: %0.4f, ln(f(x;k)): %0.4f', x, k, logpdf );#include "stdlib/stats/base/dists/chi/logpdf.h"Evaluates the natural logarithm of the probability density function (PDF) for a chi distribution with degrees of freedom k.
double out = stdlib_base_dists_chi_logpdf( 2.0, 2.0 );
// returns ~-1.307The function accepts the following arguments:
- x:
[in] doubleinput value. - k:
[in] doubledegrees of freedom.
double stdlib_base_dists_chi_logpdf( const double x, const double k );#include "stdlib/stats/base/dists/chi/logpdf.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 x;
double k;
double y;
int i;
for ( i = 0; i < 25; i++ ) {
x = random_uniform( 0.0, 10.0 );
k = random_uniform( 0.1, 10.0 );
y = stdlib_base_dists_chi_logpdf( x, k );
printf( "x: %lf, k: %lf, ln(f(x;k)): %lf\n", x, k, y );
}
}