Probability Density Function

Truncated normal distribution probability density function (PDF).

A normally distributed random variable X conditional on a < X < b is called a truncated normal distribution. The probability density function (PDF) for a truncated normal random variable is

where Phi and phi denote the cumulative distribution function and density function of the normal distribution, respectively, mu is the location and sigma > 0 is the scale parameter of the distribution. a and b are the minimum and maximum support.

Usage

var pdf = require( '@stdlib/stats/base/dists/truncated-normal/pdf' );

pdf( x, a, b, mu, sigma )

Evaluates the probability density function (PDF) for a truncated normal distribution with lower limit a, upper limit b, location parameter mu, and scale parameter sigma.

var y = pdf( 0.9, 0.0, 1.0, 0.0, 1.0 );
// returns ~0.7795

y = pdf( 0.9, 0.0, 1.0, 0.5, 1.0 );
// returns ~0.9617

y = pdf( 0.9, -1.0, 1.0, 0.5, 1.0 );
// returns ~0.5896

y = pdf( 1.4, 0.0, 1.0, 0.0, 1.0 );
// returns 0.0

y = pdf( -0.9, 0.0, 1.0, 0.0, 1.0 );
// returns 0.0

If provided NaN as any argument, the function returns NaN.

var y = pdf( NaN, 0.0, 1.0, 0.5, 2.0 );
// returns NaN

y = pdf( 0.0, NaN, 1.0, 0.5, 2.0 );
// returns NaN

y = pdf( 0.0, 0.0, NaN, 0.5, 2.0 );
// returns NaN

y = pdf( 0.6, 0.0, 1.0, NaN, 2.0 );
// returns NaN

y = pdf( 0.6, 0.0, 1.0, 0.5, NaN );
// returns NaN

pdf.factory( a, b, mu, sigma )

Returns a function for evaluating the probability density function (PDF) for a truncated normal distribution.

var myPDF = pdf.factory( 0.0, 1.0, 0.0, 1.0 );
var y = myPDF( 0.8 );
// returns ~0.849

myPDF = pdf.factory( 0.0, 1.0, 0.5, 1.0 );
y = myPDF( 0.8 );
// returns ~0.996

Examples

var randu = require( '@stdlib/random/base/randu' );
var pdf = require( '@stdlib/stats/base/dists/truncated-normal/pdf' );

var sigma;
var mu;
var a;
var b;
var x;
var y;
var i;

for ( i = 0; i < 25; i++ ) {
    a = ( randu() * 80.0 ) - 40.0;
    b = a + ( randu() * 80.0 );
    x = ( randu() * 40.0 ) + a;
    mu = ( randu() * 20.0 ) - 10.0;
    sigma = ( randu() * 10.0 ) + 2.0;
    y = pdf( x, a, b, mu, sigma );
    console.log( 'x: %d, a: %d, b: %d, mu: %d, sigma: %d, f(x;a,b,mu,sigma): %d', x.toFixed( 4 ), a.toFixed( 4 ), b.toFixed( 4 ), mu.toFixed( 4 ), sigma.toFixed( 4 ), y.toFixed( 4 ) );
}
Did you find this page helpful?