UNPKG

distributions-weibull-pdf

Version:

Weibull distribution probability density function (PDF).

52 lines (42 loc) 993 B
'use strict'; // FUNCTIONS // var pow = Math.pow, exp = Math.exp, ln = Math.log; // PARTIAL // /** * FUNCTION: partial( lambda, k ) * Partially applies parameters `lambda` and `k` and returns a function for evaluating the probability density function (PDF) for a Weibull distribution. * * @param {Number} lambda - scale parameter * @param {Number} k - shape parameter * @returns {Function} PDF */ function partial( lambda, k ) { var lnl = ln( lambda ), kl = k / lambda, d = ln( k ) - lnl, j = k - 1; /** * FUNCTION: pdf( x ) * Evaluates the probability density function (PDF) for a Weibull distribution. * * @private * @param {Number} x - input value * @returns {Number} evaluated PDF */ return function pdf( x ) { var lnp; if ( x < 0 ) { return 0; } if ( x === 0 ) { return ( k === 1 ) ? kl : 0; } lnp = d + j*( ln(x)-lnl ); lnp -= pow( x/lambda, k ); return exp( lnp ); }; } // end FUNCTION partial() // EXPORTS // module.exports = partial;