Skip to content

Commit

Permalink
chore: update examples
Browse files Browse the repository at this point in the history
  • Loading branch information
Planeshifter committed Oct 10, 2024
1 parent a32357b commit 587bd8b
Show file tree
Hide file tree
Showing 2 changed files with 161 additions and 30 deletions.
101 changes: 83 additions & 18 deletions lib/node_modules/@stdlib/stats/base/dists/gamma/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,26 +108,91 @@ var y = dist.cdf( 0.5 );
<!-- eslint no-undef: "error" -->

```javascript
var objectKeys = require( '@stdlib/utils/keys' );
var gammaRandomFactory = require( '@stdlib/random/base/gamma' ).factory;
var filledarrayby = require( '@stdlib/array/filled-by' );
var Float64Array = require( '@stdlib/array/float64' );
var variance = require( '@stdlib/stats/base/variance' );
var linspace = require( '@stdlib/array/base/linspace' );
var mean = require( '@stdlib/stats/base/mean' );
var abs = require( '@stdlib/math/base/special/abs' );
var gamma = require( '@stdlib/stats/base/dists/gamma' );

console.log( objectKeys( gamma ) );

console.log(gamma.variance( 1.0, 1.0 ));
// => 1.0

console.log(gamma.variance( 4.0, 12.0 ));
// => ~0.028

console.log(gamma.variance( 8.0, 2.0));
// => 2.0

console.log(gamma.entropy( 1.0, 1.0 ));
// => 1.0

console.log(gamma.entropy( 4.0, 12.0 ));
// => ~-0.462

// Define the shape and scale parameters:
var alpha = 3.0; // shape parameter (α)
var beta = 2.0; // scale parameter (β)

// Generate an array of x values:
var x = linspace( 0.0, 20.0, 100 );

// Compute the PDF for each x:
var gammaPDF = gamma.pdf.factory( alpha, beta );
var pdf = filledarrayby( x.length, 'float64', gammaPDF );

// Compute the CDF for each x:
var gammaCDF = gamma.cdf.factory( alpha, beta );
var cdf = filledarrayby( x.length, 'float64', gammaCDF );

// 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 = gamma.mean( alpha, beta );
var theoreticalVariance = gamma.variance( alpha, beta );
var theoreticalSkewness = gamma.skewness( alpha, beta );
var theoreticalKurtosis = gamma.kurtosis( alpha, beta );

console.log( 'Theoretical Mean:', theoreticalMean );
console.log( 'Theoretical Variance:', theoreticalVariance );
console.log( 'Skewness:', theoreticalSkewness );
console.log( 'Kurtosis:', theoreticalKurtosis );

// Generate random samples from the gamma distribution:
var rgamma = gammaRandomFactory( alpha, beta );
var n = 300;
var samples = filledarrayby( n, 'float64', rgamma );

// 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 that the sum of `k` gamma variables is a gamma-distributed sum of `k` gamma(α, β) variables with same β is `gamma(k*α, β)`:
var k = 5;
var sumSamples = new Float64Array( n );

var sum;
var i;
var j;
for ( i = 0; i < sumSamples.length; i++ ) {
sum = 0.0;
for ( j = 0; j < k; j++ ) {
sum += rgamma();
}
sumSamples[ i ] = sum;
}

// Theoretical parameters for the sum:
var sumAlpha = k * alpha;
var sumMean = gamma.mean( sumAlpha, beta );
var sumVariance = gamma.variance( sumAlpha, beta );

console.log( 'Sum Theoretical Mean:', sumMean );
console.log( 'Sum Theoretical Variance:', sumVariance );

// Compute sample mean and variance for the sum:
var sumSampleMean = mean( sumSamples.length, sumSamples, 1 );
var sumSampleVariance = variance( sumSamples.length, 1, sumSamples, 1 );

console.log( 'Sum Sample Mean:', sumSampleMean );
console.log( 'Sum Sample Variance:', sumSampleVariance );
```

</section>
Expand Down
90 changes: 78 additions & 12 deletions lib/node_modules/@stdlib/stats/base/dists/gamma/examples/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,88 @@

'use strict';

var objectKeys = require( '@stdlib/utils/keys' );
var gammaRandomFactory = require( '@stdlib/random/base/gamma' ).factory;
var filledarrayby = require( '@stdlib/array/filled-by' );
var Float64Array = require( '@stdlib/array/float64' );
var variance = require( '@stdlib/stats/base/variance' );
var linspace = require( '@stdlib/array/base/linspace' );
var mean = require( '@stdlib/stats/base/mean' );
var abs = require( '@stdlib/math/base/special/abs' );
var gamma = require( './../lib' );

console.log( objectKeys( gamma ) );
// Define the shape and scale parameters:
var alpha = 3.0; // shape parameter (α)
var beta = 2.0; // scale parameter (β)

console.log(gamma.variance( 1.0, 1.0 ));
// => 1.0
// Generate an array of x values:
var x = linspace( 0.0, 20.0, 100 );

console.log(gamma.variance( 4.0, 12.0 ));
// => ~0.028
// Compute the PDF for each x:
var gammaPDF = gamma.pdf.factory( alpha, beta );
var pdf = filledarrayby( x.length, 'float64', gammaPDF );

console.log(gamma.variance( 8.0, 2.0));
// => 2.0
// Compute the CDF for each x:
var gammaCDF = gamma.cdf.factory( alpha, beta );
var cdf = filledarrayby( x.length, 'float64', gammaCDF );

console.log(gamma.entropy( 1.0, 1.0 ));
// => 1.0
// Output the PDF and CDF values:
console.log( 'x values:', x );
console.log( 'PDF values:', pdf );
console.log( 'CDF values:', cdf );

console.log(gamma.entropy( 4.0, 12.0 ));
// => ~-0.462
// Compute statistical properties:
var theoreticalMean = gamma.mean( alpha, beta );
var theoreticalVariance = gamma.variance( alpha, beta );
var theoreticalSkewness = gamma.skewness( alpha, beta );
var theoreticalKurtosis = gamma.kurtosis( alpha, beta );

console.log( 'Theoretical Mean:', theoreticalMean );
console.log( 'Theoretical Variance:', theoreticalVariance );
console.log( 'Skewness:', theoreticalSkewness );
console.log( 'Kurtosis:', theoreticalKurtosis );

// Generate random samples from the gamma distribution:
var rgamma = gammaRandomFactory( alpha, beta );
var n = 300;
var samples = filledarrayby( n, 'float64', rgamma );

// 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 that the sum of `k` gamma variables is a gamma-distributed sum of `k` gamma(α, β) variables with same β is `gamma(k*α, β)`:
var k = 5;
var sumSamples = new Float64Array( n );

var sum;
var i;
var j;
for ( i = 0; i < sumSamples.length; i++ ) {
sum = 0.0;
for ( j = 0; j < k; j++ ) {
sum += rgamma();
}
sumSamples[ i ] = sum;
}

// Theoretical parameters for the sum:
var sumAlpha = k * alpha;
var sumMean = gamma.mean( sumAlpha, beta );
var sumVariance = gamma.variance( sumAlpha, beta );

console.log( 'Sum Theoretical Mean:', sumMean );
console.log( 'Sum Theoretical Variance:', sumVariance );

// Compute sample mean and variance for the sum:
var sumSampleMean = mean( sumSamples.length, sumSamples, 1 );
var sumSampleVariance = variance( sumSamples.length, 1, sumSamples, 1 );

console.log( 'Sum Sample Mean:', sumSampleMean );
console.log( 'Sum Sample Variance:', sumSampleVariance );

0 comments on commit 587bd8b

Please sign in to comment.