@@ -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' );
112118var 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 >
0 commit comments