From cba3c7bac137b46cf8bdbda8f940f39dc2d2acb8 Mon Sep 17 00:00:00 2001 From: shivam Ahir <11shivam00@gmail.com> Date: Sat, 9 Mar 2024 17:09:05 +0530 Subject: [PATCH 1/2] docs: improve README examples of stats/base/dists/chi namespace --- .../@stdlib/stats/base/dists/chi/README.md | 10 ++++++++++ .../@stdlib/stats/base/dists/chi/examples/index.js | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/README.md b/lib/node_modules/@stdlib/stats/base/dists/chi/README.md index 0e2ccf260b9a..a1b628e9de49 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/README.md @@ -110,6 +110,16 @@ var objectKeys = require( '@stdlib/utils/keys' ); var chi = require( '@stdlib/stats/base/dists/chi' ); console.log( objectKeys( chi ) ); + +console.log(chi.variance( 9.0 )); +// => ~0.485 + +console.log(chi.variance( 0.5 )); +// => ~0.272 + +console.log(chi.variance( -1.0 )); +// => NaN + ``` diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js index 0d941342e118..2ccb470128ff 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js @@ -22,3 +22,12 @@ var objectKeys = require( '@stdlib/utils/keys' ); var chi = require( './../lib' ); console.log( objectKeys( chi ) ); + +console.log(chi.variance( 9.0 )); +// => ~0.485 + +console.log(chi.variance( 0.5 )); +// => ~0.272 + +console.log(chi.variance( -1.0 )); +// => NaN From 8408fe9410b162b95a0390e53bfceea7f461435f Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Thu, 10 Oct 2024 21:23:30 -0400 Subject: [PATCH 2/2] chore: update examples --- .../@stdlib/stats/base/dists/chi/README.md | 94 ++++++++++++++++--- .../stats/base/dists/chi/examples/index.js | 85 +++++++++++++++-- 2 files changed, 157 insertions(+), 22 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/README.md b/lib/node_modules/@stdlib/stats/base/dists/chi/README.md index a1b628e9de49..15972576c5a6 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/README.md @@ -101,25 +101,91 @@ var mu = dist.mean; ## Examples - - ```javascript -var objectKeys = require( '@stdlib/utils/keys' ); +var chiRandomFactory = require( '@stdlib/random/base/chi' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var variance = require( '@stdlib/stats/base/variance' ); +var linspace = require( '@stdlib/array/base/linspace' ); +var rayleigh = require( '@stdlib/stats/base/dists/rayleigh' ); +var mean = require( '@stdlib/stats/base/mean' ); +var abs = require( '@stdlib/math/base/special/abs' ); var chi = require( '@stdlib/stats/base/dists/chi' ); -console.log( objectKeys( chi ) ); - -console.log(chi.variance( 9.0 )); -// => ~0.485 - -console.log(chi.variance( 0.5 )); -// => ~0.272 - -console.log(chi.variance( -1.0 )); -// => NaN - +// Define the degrees of freedom parameter: +var k = 2; + +// Generate an array of x values: +var x = linspace( 0, 10, 100 ); + +// Compute the PDF for each x: +var chiPDF = chi.pdf.factory( k ); +var pdf = filledarrayBy( x.length, 'float64', chiPDF ); + +// Compute the CDF for each x: +var chiCDF = chi.cdf.factory( k ); +var cdf = filledarrayBy( x.length, 'float64', chiCDF ); + +// Output the PDF and CDF values: +console.log( 'x values:', x ); +console.log( 'PDF values:', pdf ); +console.log( 'CDF values:', cdf ); + +// Compute statistical properties: +var theoreticalMean = chi.mean( k ); +var theoreticalVariance = chi.variance( k ); +var theoreticalSkewness = chi.skewness( k ); +var theoreticalKurtosis = chi.kurtosis( k ); + +console.log( 'Theoretical Mean:', theoreticalMean ); +console.log( 'Theoretical Variance:', theoreticalVariance ); +console.log( 'Skewness:', theoreticalSkewness ); +console.log( 'Kurtosis:', theoreticalKurtosis ); + +// Generate random samples from the Chi distribution: +var rchi = chiRandomFactory( k ); +var n = 1000; +var samples = filledarrayBy( n, 'float64', rchi ); + +// Compute sample mean and variance: +var sampleMean = mean( n, samples, 1 ); +var sampleVariance = variance( n, 1, samples, 1 ); + +console.log( 'Sample Mean:', sampleMean ); +console.log( 'Sample Variance:', sampleVariance ); + +// Compare sample statistics to theoretical values: +console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) ); +console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) ); + +// Demonstrate the relationship with the Rayleigh distribution when k=2: +var rayleighPDF = rayleigh.pdf.factory( 1.0 ); +var rayleighCDF = rayleigh.cdf.factory( 1.0 ); + +// Compute Rayleigh PDF and CDF for each x: +var rayleighPDFValues = filledarrayBy( x.length, 'float64', rayleighPDF ); + +var rayleighCDFValues = filledarrayBy( x.length, 'float64', rayleighCDF ); + +// Compare Chi and Rayleigh PDFs and CDFs: +var maxDiffPDF = 0.0; +var maxDiffCDF = 0.0; +var diffPDF; +var diffCDF; +var i; +for ( i = 0; i < x.length; i++ ) { + diffPDF = abs( pdf[ i ] - rayleighPDFValues[ i ] ); + if ( diffPDF > maxDiffPDF ) { + maxDiffPDF = diffPDF; + } + diffCDF = abs( cdf[ i ] - rayleighCDFValues[ i ] ); + if ( diffCDF > maxDiffCDF ) { + maxDiffCDF = diffCDF; + } +} +console.log( 'Maximum difference between Chi(k=2) PDF and Rayleigh PDF:', maxDiffPDF ); +console.log( 'Maximum difference between Chi(k=2) CDF and Rayleigh CDF:', maxDiffCDF ); ``` diff --git a/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js b/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js index 2ccb470128ff..6857d460c06c 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/examples/index.js @@ -18,16 +18,85 @@ 'use strict'; -var objectKeys = require( '@stdlib/utils/keys' ); +var chiRandomFactory = require( '@stdlib/random/base/chi' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var variance = require( '@stdlib/stats/base/variance' ); +var linspace = require( '@stdlib/array/base/linspace' ); +var rayleigh = require( '@stdlib/stats/base/dists/rayleigh' ); +var mean = require( '@stdlib/stats/base/mean' ); +var abs = require( '@stdlib/math/base/special/abs' ); var chi = require( './../lib' ); -console.log( objectKeys( chi ) ); +// Define the degrees of freedom parameter: +var k = 2; -console.log(chi.variance( 9.0 )); -// => ~0.485 +// Generate an array of x values: +var x = linspace( 0, 10, 100 ); -console.log(chi.variance( 0.5 )); -// => ~0.272 +// Compute the PDF for each x: +var chiPDF = chi.pdf.factory( k ); +var pdf = filledarrayBy( x.length, 'float64', chiPDF ); -console.log(chi.variance( -1.0 )); -// => NaN +// Compute the CDF for each x: +var chiCDF = chi.cdf.factory( k ); +var cdf = filledarrayBy( x.length, 'float64', chiCDF ); + +// Output the PDF and CDF values: +console.log( 'x values:', x ); +console.log( 'PDF values:', pdf ); +console.log( 'CDF values:', cdf ); + +// Compute statistical properties: +var theoreticalMean = chi.mean( k ); +var theoreticalVariance = chi.variance( k ); +var theoreticalSkewness = chi.skewness( k ); +var theoreticalKurtosis = chi.kurtosis( k ); + +console.log( 'Theoretical Mean:', theoreticalMean ); +console.log( 'Theoretical Variance:', theoreticalVariance ); +console.log( 'Skewness:', theoreticalSkewness ); +console.log( 'Kurtosis:', theoreticalKurtosis ); + +// Generate random samples from the Chi distribution: +var rchi = chiRandomFactory( k ); +var n = 1000; +var samples = filledarrayBy( n, 'float64', rchi ); + +// Compute sample mean and variance: +var sampleMean = mean( n, samples, 1 ); +var sampleVariance = variance( n, 1, samples, 1 ); + +console.log( 'Sample Mean:', sampleMean ); +console.log( 'Sample Variance:', sampleVariance ); + +// Compare sample statistics to theoretical values: +console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) ); +console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) ); + +// Demonstrate the relationship with the Rayleigh distribution when k=2: +var rayleighPDF = rayleigh.pdf.factory( 1.0 ); +var rayleighCDF = rayleigh.cdf.factory( 1.0 ); + +// Compute Rayleigh PDF and CDF for each x: +var rayleighPDFValues = filledarrayBy( x.length, 'float64', rayleighPDF ); + +var rayleighCDFValues = filledarrayBy( x.length, 'float64', rayleighCDF ); + +// Compare Chi and Rayleigh PDFs and CDFs: +var maxDiffPDF = 0.0; +var maxDiffCDF = 0.0; +var diffPDF; +var diffCDF; +var i; +for ( i = 0; i < x.length; i++ ) { + diffPDF = abs( pdf[ i ] - rayleighPDFValues[ i ] ); + if ( diffPDF > maxDiffPDF ) { + maxDiffPDF = diffPDF; + } + diffCDF = abs( cdf[ i ] - rayleighCDFValues[ i ] ); + if ( diffCDF > maxDiffCDF ) { + maxDiffCDF = diffCDF; + } +} +console.log( 'Maximum difference between Chi(k=2) PDF and Rayleigh PDF:', maxDiffPDF ); +console.log( 'Maximum difference between Chi(k=2) CDF and Rayleigh CDF:', maxDiffCDF );