@@ -108,10 +108,91 @@ var y = dist.cdf( 0.5 );
108
108
<!-- eslint no-undef: "error" -->
109
109
110
110
``` 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' );
112
118
var gamma = require ( ' @stdlib/stats/base/dists/gamma' );
113
119
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 );
115
196
```
116
197
117
198
</section >
0 commit comments