Triangular
Triangular distribution.
Usage
var triangular = require( '@stdlib/stats/base/dists/triangular' );
triangular
Triangular distribution.
var dist = triangular;
// returns {...}
The namespace contains the following distribution functions:
cdf( x, a, b, c )
: triangular distribution cumulative distribution function.logcdf( x, a, b, c )
: triangular distribution logarithm of cumulative distribution function.logpdf( x, a, b, c )
: triangular distribution logarithm of probability density function (PDF).mgf( t, a, b, c )
: triangular distribution moment-generating function (MGF).pdf( x, a, b, c )
: triangular distribution probability density function (PDF).quantile( p, a, b, c )
: triangular distribution quantile function.
The namespace contains the following functions for calculating distribution properties:
entropy( a, b, c )
: triangular distribution differential entropy.kurtosis( a, b, c )
: triangular distribution excess kurtosis.mean( a, b, c )
: triangular distribution expected value.median( a, b, c )
: triangular distribution median.mode( a, b, c )
: triangular distribution mode.skewness( a, b, c )
: triangular distribution skewness.stdev( a, b, c )
: triangular distribution standard deviation.variance( a, b, c )
: triangular distribution variance.
The namespace contains a constructor function for creating a triangular distribution object.
Triangular( [a, b, c] )
: triangular distribution constructor.
var Triangular = require( '@stdlib/stats/base/dists/triangular' ).Triangular;
var dist = new Triangular( 2.0, 4.0, 3.0 );
var y = dist.quantile( 0.5 );
// returns 3.0
y = dist.quantile( 1.9 );
// returns NaN
Examples
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var triangular = require( '@stdlib/stats/base/dists/triangular' );
// Scenario: Modeling completion time for a software development task
// Define the distribution parameters (in hours):
var a = 1.5; // Minimum time (best-case scenario)
var b = 4.5; // Maximum time (worst-case scenario)
var c = discreteUniform( 2, 4 ); // Most likely time (mode)
console.log( 'a: %d, b: %d, c: %d', a, b, c );
// Expected (mean) completion time:
var mean = triangular.mean( a, b, c );
console.log( '\nExpected completion time: %d hours', mean );
// Median completion time:
var median = triangular.median( a, b, c );
console.log( 'Median completion time: %d hours', median );
// Variance in completion time:
var variance = triangular.variance( a, b, c );
console.log( 'Variance in completion time: %d hours^2', variance );
// Probability of completing the task within 3 hours:
var x = 3.0;
var prob = triangular.cdf( x, a, b, c );
console.log( '\nProbability of completing within %d hours: %d', x, prob );
// 90th percentile of completion time:
var p = 0.9;
var percentile = triangular.quantile( p, a, b, c );
console.log( '90% of tasks will be completed within %d hours', percentile );
// Relative likelihood of completing the task in exactly 2.5 hours:
x = 2.5;
var likelihood = triangular.pdf( x, a, b, c );
console.log( '\nRelative likelihood of completing in exactly %d hours: %d', x, likelihood );
// Skewness to understand the distribution's shape:
var skewness = triangular.skewness( a, b, c );
console.log( '\nSkewness of completion times: %d', skewness );
if ( skewness > 0 ) {
console.log( 'The distribution is right-skewed, suggesting occasional longer completion times.' );
} else if ( skewness < 0 ) {
console.log( 'The distribution is left-skewed, suggesting occasional shorter completion times.' );
} else {
console.log( 'The distribution is symmetric.' );
}
// Entropy as a measure of uncertainty in the estimate:
var entropy = triangular.entropy( a, b, c );
console.log( '\nEntropy of the distribution: %d nats', entropy );
console.log( 'Higher entropy indicates more uncertainty in completion times.' );