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 0e2ccf260b9..15972576c5a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/chi/README.md +++ b/lib/node_modules/@stdlib/stats/base/dists/chi/README.md @@ -101,15 +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 ) ); +// 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 0d941342e11..6857d460c06 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,7 +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; + +// 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 );