Skip to content

Commit e399bfd

Browse files
docs: improve README examples of stats/base/dists/gamma namespace
PR-URL: #1804 Ref: #1627 Co-authored-by: Philipp Burckhardt <[email protected]> Co-authored-by: shivam Ahir <[email protected]> Reviewed-by: Philipp Burckhardt <[email protected]>
1 parent 6c3b249 commit e399bfd

File tree

2 files changed

+166
-4
lines changed

2 files changed

+166
-4
lines changed

lib/node_modules/@stdlib/stats/base/dists/gamma/README.md

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,91 @@ var y = dist.cdf( 0.5 );
108108
<!-- eslint no-undef: "error" -->
109109

110110
```javascript
111-
var objectKeys = require( '@stdlib/utils/keys' );
111+
var gammaRandomFactory = require( '@stdlib/random/base/gamma' ).factory;
112+
var filledarrayby = require( '@stdlib/array/filled-by' );
113+
var Float64Array = require( '@stdlib/array/float64' );
114+
var variance = require( '@stdlib/stats/base/variance' );
115+
var linspace = require( '@stdlib/array/base/linspace' );
116+
var mean = require( '@stdlib/stats/base/mean' );
117+
var abs = require( '@stdlib/math/base/special/abs' );
112118
var gamma = require( '@stdlib/stats/base/dists/gamma' );
113119

114-
console.log( objectKeys( gamma ) );
120+
// Define the shape and scale parameters:
121+
var alpha = 3.0; // shape parameter (α)
122+
var beta = 2.0; // scale parameter (β)
123+
124+
// Generate an array of x values:
125+
var x = linspace( 0.0, 20.0, 100 );
126+
127+
// Compute the PDF for each x:
128+
var gammaPDF = gamma.pdf.factory( alpha, beta );
129+
var pdf = filledarrayby( x.length, 'float64', gammaPDF );
130+
131+
// Compute the CDF for each x:
132+
var gammaCDF = gamma.cdf.factory( alpha, beta );
133+
var cdf = filledarrayby( x.length, 'float64', gammaCDF );
134+
135+
// Output the PDF and CDF values:
136+
console.log( 'x values:', x );
137+
console.log( 'PDF values:', pdf );
138+
console.log( 'CDF values:', cdf );
139+
140+
// Compute statistical properties:
141+
var theoreticalMean = gamma.mean( alpha, beta );
142+
var theoreticalVariance = gamma.variance( alpha, beta );
143+
var theoreticalSkewness = gamma.skewness( alpha, beta );
144+
var theoreticalKurtosis = gamma.kurtosis( alpha, beta );
145+
146+
console.log( 'Theoretical Mean:', theoreticalMean );
147+
console.log( 'Theoretical Variance:', theoreticalVariance );
148+
console.log( 'Skewness:', theoreticalSkewness );
149+
console.log( 'Kurtosis:', theoreticalKurtosis );
150+
151+
// Generate random samples from the gamma distribution:
152+
var rgamma = gammaRandomFactory( alpha, beta );
153+
var n = 300;
154+
var samples = filledarrayby( n, 'float64', rgamma );
155+
156+
// Compute sample mean and variance:
157+
var sampleMean = mean( n, samples, 1 );
158+
var sampleVariance = variance( n, 1, samples, 1 );
159+
160+
console.log( 'Sample Mean:', sampleMean );
161+
console.log( 'Sample Variance:', sampleVariance );
162+
163+
// Compare sample statistics to theoretical values:
164+
console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) );
165+
console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) );
166+
167+
// Demonstrate that the sum of `k` gamma variables is a gamma-distributed sum of `k` gamma(α, β) variables with same β is `gamma(k*α, β)`:
168+
var k = 5;
169+
var sumSamples = new Float64Array( n );
170+
171+
var sum;
172+
var i;
173+
var j;
174+
for ( i = 0; i < sumSamples.length; i++ ) {
175+
sum = 0.0;
176+
for ( j = 0; j < k; j++ ) {
177+
sum += rgamma();
178+
}
179+
sumSamples[ i ] = sum;
180+
}
181+
182+
// Theoretical parameters for the sum:
183+
var sumAlpha = k * alpha;
184+
var sumMean = gamma.mean( sumAlpha, beta );
185+
var sumVariance = gamma.variance( sumAlpha, beta );
186+
187+
console.log( 'Sum Theoretical Mean:', sumMean );
188+
console.log( 'Sum Theoretical Variance:', sumVariance );
189+
190+
// Compute sample mean and variance for the sum:
191+
var sumSampleMean = mean( sumSamples.length, sumSamples, 1 );
192+
var sumSampleVariance = variance( sumSamples.length, 1, sumSamples, 1 );
193+
194+
console.log( 'Sum Sample Mean:', sumSampleMean );
195+
console.log( 'Sum Sample Variance:', sumSampleVariance );
115196
```
116197

117198
</section>

lib/node_modules/@stdlib/stats/base/dists/gamma/examples/index.js

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,88 @@
1818

1919
'use strict';
2020

21-
var objectKeys = require( '@stdlib/utils/keys' );
21+
var gammaRandomFactory = require( '@stdlib/random/base/gamma' ).factory;
22+
var filledarrayby = require( '@stdlib/array/filled-by' );
23+
var Float64Array = require( '@stdlib/array/float64' );
24+
var variance = require( '@stdlib/stats/base/variance' );
25+
var linspace = require( '@stdlib/array/base/linspace' );
26+
var mean = require( '@stdlib/stats/base/mean' );
27+
var abs = require( '@stdlib/math/base/special/abs' );
2228
var gamma = require( './../lib' );
2329

24-
console.log( objectKeys( gamma ) );
30+
// Define the shape and scale parameters:
31+
var alpha = 3.0; // shape parameter (α)
32+
var beta = 2.0; // scale parameter (β)
33+
34+
// Generate an array of x values:
35+
var x = linspace( 0.0, 20.0, 100 );
36+
37+
// Compute the PDF for each x:
38+
var gammaPDF = gamma.pdf.factory( alpha, beta );
39+
var pdf = filledarrayby( x.length, 'float64', gammaPDF );
40+
41+
// Compute the CDF for each x:
42+
var gammaCDF = gamma.cdf.factory( alpha, beta );
43+
var cdf = filledarrayby( x.length, 'float64', gammaCDF );
44+
45+
// Output the PDF and CDF values:
46+
console.log( 'x values:', x );
47+
console.log( 'PDF values:', pdf );
48+
console.log( 'CDF values:', cdf );
49+
50+
// Compute statistical properties:
51+
var theoreticalMean = gamma.mean( alpha, beta );
52+
var theoreticalVariance = gamma.variance( alpha, beta );
53+
var theoreticalSkewness = gamma.skewness( alpha, beta );
54+
var theoreticalKurtosis = gamma.kurtosis( alpha, beta );
55+
56+
console.log( 'Theoretical Mean:', theoreticalMean );
57+
console.log( 'Theoretical Variance:', theoreticalVariance );
58+
console.log( 'Skewness:', theoreticalSkewness );
59+
console.log( 'Kurtosis:', theoreticalKurtosis );
60+
61+
// Generate random samples from the gamma distribution:
62+
var rgamma = gammaRandomFactory( alpha, beta );
63+
var n = 300;
64+
var samples = filledarrayby( n, 'float64', rgamma );
65+
66+
// Compute sample mean and variance:
67+
var sampleMean = mean( n, samples, 1 );
68+
var sampleVariance = variance( n, 1, samples, 1 );
69+
70+
console.log( 'Sample Mean:', sampleMean );
71+
console.log( 'Sample Variance:', sampleVariance );
72+
73+
// Compare sample statistics to theoretical values:
74+
console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) );
75+
console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) );
76+
77+
// Demonstrate that the sum of `k` gamma variables is a gamma-distributed sum of `k` gamma(α, β) variables with same β is `gamma(k*α, β)`:
78+
var k = 5;
79+
var sumSamples = new Float64Array( n );
80+
81+
var sum;
82+
var i;
83+
var j;
84+
for ( i = 0; i < sumSamples.length; i++ ) {
85+
sum = 0.0;
86+
for ( j = 0; j < k; j++ ) {
87+
sum += rgamma();
88+
}
89+
sumSamples[ i ] = sum;
90+
}
91+
92+
// Theoretical parameters for the sum:
93+
var sumAlpha = k * alpha;
94+
var sumMean = gamma.mean( sumAlpha, beta );
95+
var sumVariance = gamma.variance( sumAlpha, beta );
96+
97+
console.log( 'Sum Theoretical Mean:', sumMean );
98+
console.log( 'Sum Theoretical Variance:', sumVariance );
99+
100+
// Compute sample mean and variance for the sum:
101+
var sumSampleMean = mean( sumSamples.length, sumSamples, 1 );
102+
var sumSampleVariance = variance( sumSamples.length, 1, sumSamples, 1 );
103+
104+
console.log( 'Sum Sample Mean:', sumSampleMean );
105+
console.log( 'Sum Sample Variance:', sumSampleVariance );

0 commit comments

Comments
 (0)