From 0be9c8c3bdce721b0299cc0f62c1c54d90bfc094 Mon Sep 17 00:00:00 2001 From: Tufailahmed Date: Tue, 19 Mar 2024 10:46:48 +0530 Subject: [PATCH 1/2] docs: improve README examples of stats/base/dists/triangular namespace --- .../stats/base/dists/triangular/README.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md index d98eabf8970d..3ea4035711a9 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md @@ -97,6 +97,8 @@ var y = dist.quantile( 0.5 ); y = dist.quantile( 1.9 ); // returns NaN + + ``` @@ -109,6 +111,7 @@ y = dist.quantile( 1.9 ); + ```javascript @@ -116,6 +119,32 @@ var objectKeys = require( '@stdlib/utils/keys' ); var triangular = require( '@stdlib/stats/base/dists/triangular' ); console.log( objectKeys( triangular ) ); + + +// Basic Usage: Calculate and print the mean, median, and mode +console.log('Mean:', dist.mean()); + // returns Mean: 3.0 + +console.log('Median:', dist.median()); + // returns Median: 3.0 + +console.log('Mode:', dist.mode()); + // returns Mode: 3.0 + +// Probability Density Function (PDF): Calculate the PDF at x=3.5 +var pdfValue = dist.pdf(3.5); +console.log('PDF at x=3.5:', pdfValue); +// returns PDF at x=3.5: 0.4 + +// Cumulative Distribution Function (CDF): Calculate the CDF at x=3.5 +var cdfValue = dist.cdf(3.5); +console.log('CDF at x=3.5:', cdfValue); +// returns CDF at x=3.5: 0.5 + +// Quantile Function: Find the quantile for p=0.5 +var quantileValue = dist.quantile(0.5); +console.log('Quantile for p=0.5:', quantileValue); + // returns Quantile for p=0.5: 3.0 ``` From 7bc8b6cad1600e20fa19c0387814f971b4503e92 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Sat, 7 Sep 2024 13:33:19 -0400 Subject: [PATCH 2/2] docs: update examples for `stats/base/dists/triangular` --- .../stats/base/dists/triangular/README.md | 84 +++++++++++-------- .../base/dists/triangular/examples/index.js | 53 +++++++++++- 2 files changed, 102 insertions(+), 35 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md b/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md index 3ea4035711a9..ae6ba01ba8b3 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/README.md @@ -97,8 +97,6 @@ var y = dist.quantile( 0.5 ); y = dist.quantile( 1.9 ); // returns NaN - - ``` @@ -109,42 +107,62 @@ y = dist.quantile( 1.9 ); ## Examples - - - ```javascript -var objectKeys = require( '@stdlib/utils/keys' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var triangular = require( '@stdlib/stats/base/dists/triangular' ); -console.log( objectKeys( triangular ) ); - - -// Basic Usage: Calculate and print the mean, median, and mode -console.log('Mean:', dist.mean()); - // returns Mean: 3.0 - -console.log('Median:', dist.median()); - // returns Median: 3.0 - -console.log('Mode:', dist.mode()); - // returns Mode: 3.0 - -// Probability Density Function (PDF): Calculate the PDF at x=3.5 -var pdfValue = dist.pdf(3.5); -console.log('PDF at x=3.5:', pdfValue); -// returns PDF at x=3.5: 0.4 - -// Cumulative Distribution Function (CDF): Calculate the CDF at x=3.5 -var cdfValue = dist.cdf(3.5); -console.log('CDF at x=3.5:', cdfValue); -// returns CDF at x=3.5: 0.5 - -// Quantile Function: Find the quantile for p=0.5 -var quantileValue = dist.quantile(0.5); -console.log('Quantile for p=0.5:', quantileValue); - // returns Quantile for p=0.5: 3.0 +// 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.' ); ``` diff --git a/lib/node_modules/@stdlib/stats/base/dists/triangular/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/triangular/examples/index.js index aeb22ffc0745..f3690a519842 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/triangular/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/triangular/examples/index.js @@ -18,7 +18,56 @@ 'use strict'; -var objectKeys = require( '@stdlib/utils/keys' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var triangular = require( './../lib' ); -console.log( objectKeys( 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.' );