Skip to content

Commit 0eae9a9

Browse files
authored
Merge branch 'stdlib-js:develop' into dnannsumors-refactor
2 parents f3098b3 + f0ab00b commit 0eae9a9

File tree

11 files changed

+629
-20
lines changed

11 files changed

+629
-20
lines changed

CONTRIBUTORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ EuniceSim142 <[email protected]>
2828
Frank Kovacs <[email protected]>
2929
Golden Kumar <[email protected]>
3030
Gunj Joshi <[email protected]>
31+
Gururaj Gurram <[email protected]>
3132
3233
Harshita Kalani <[email protected]>
3334
Hridyanshu <[email protected]>

lib/node_modules/@stdlib/math/base/special/max/lib/native.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var addon = require( './../src/addon.node' );
2626
// MAIN //
2727

2828
/**
29-
* Return the maximum value.
29+
* Returns the maximum value.
3030
*
3131
* @private
3232
* @param {number} x - first number

lib/node_modules/@stdlib/math/base/special/min/lib/native.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ var addon = require( './../src/addon.node' );
2626
// MAIN //
2727

2828
/**
29-
* Return the minimum value.
29+
* Returns the minimum value.
3030
*
3131
* @private
3232
* @param {number} x - first number

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

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,91 @@ var mu = dist.mean;
101101

102102
## Examples
103103

104-
<!-- TODO: better examples -->
105-
106104
<!-- eslint no-undef: "error" -->
107105

108106
```javascript
109-
var objectKeys = require( '@stdlib/utils/keys' );
107+
var chiRandomFactory = require( '@stdlib/random/base/chi' ).factory;
108+
var filledarrayBy = require( '@stdlib/array/filled-by' );
109+
var variance = require( '@stdlib/stats/base/variance' );
110+
var linspace = require( '@stdlib/array/base/linspace' );
111+
var rayleigh = require( '@stdlib/stats/base/dists/rayleigh' );
112+
var mean = require( '@stdlib/stats/base/mean' );
113+
var abs = require( '@stdlib/math/base/special/abs' );
110114
var chi = require( '@stdlib/stats/base/dists/chi' );
111115

112-
console.log( objectKeys( chi ) );
116+
// Define the degrees of freedom parameter:
117+
var k = 2;
118+
119+
// Generate an array of x values:
120+
var x = linspace( 0, 10, 100 );
121+
122+
// Compute the PDF for each x:
123+
var chiPDF = chi.pdf.factory( k );
124+
var pdf = filledarrayBy( x.length, 'float64', chiPDF );
125+
126+
// Compute the CDF for each x:
127+
var chiCDF = chi.cdf.factory( k );
128+
var cdf = filledarrayBy( x.length, 'float64', chiCDF );
129+
130+
// Output the PDF and CDF values:
131+
console.log( 'x values:', x );
132+
console.log( 'PDF values:', pdf );
133+
console.log( 'CDF values:', cdf );
134+
135+
// Compute statistical properties:
136+
var theoreticalMean = chi.mean( k );
137+
var theoreticalVariance = chi.variance( k );
138+
var theoreticalSkewness = chi.skewness( k );
139+
var theoreticalKurtosis = chi.kurtosis( k );
140+
141+
console.log( 'Theoretical Mean:', theoreticalMean );
142+
console.log( 'Theoretical Variance:', theoreticalVariance );
143+
console.log( 'Skewness:', theoreticalSkewness );
144+
console.log( 'Kurtosis:', theoreticalKurtosis );
145+
146+
// Generate random samples from the Chi distribution:
147+
var rchi = chiRandomFactory( k );
148+
var n = 1000;
149+
var samples = filledarrayBy( n, 'float64', rchi );
150+
151+
// Compute sample mean and variance:
152+
var sampleMean = mean( n, samples, 1 );
153+
var sampleVariance = variance( n, 1, samples, 1 );
154+
155+
console.log( 'Sample Mean:', sampleMean );
156+
console.log( 'Sample Variance:', sampleVariance );
157+
158+
// Compare sample statistics to theoretical values:
159+
console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) );
160+
console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) );
161+
162+
// Demonstrate the relationship with the Rayleigh distribution when k=2:
163+
var rayleighPDF = rayleigh.pdf.factory( 1.0 );
164+
var rayleighCDF = rayleigh.cdf.factory( 1.0 );
165+
166+
// Compute Rayleigh PDF and CDF for each x:
167+
var rayleighPDFValues = filledarrayBy( x.length, 'float64', rayleighPDF );
168+
169+
var rayleighCDFValues = filledarrayBy( x.length, 'float64', rayleighCDF );
170+
171+
// Compare Chi and Rayleigh PDFs and CDFs:
172+
var maxDiffPDF = 0.0;
173+
var maxDiffCDF = 0.0;
174+
var diffPDF;
175+
var diffCDF;
176+
var i;
177+
for ( i = 0; i < x.length; i++ ) {
178+
diffPDF = abs( pdf[ i ] - rayleighPDFValues[ i ] );
179+
if ( diffPDF > maxDiffPDF ) {
180+
maxDiffPDF = diffPDF;
181+
}
182+
diffCDF = abs( cdf[ i ] - rayleighCDFValues[ i ] );
183+
if ( diffCDF > maxDiffCDF ) {
184+
maxDiffCDF = diffCDF;
185+
}
186+
}
187+
console.log( 'Maximum difference between Chi(k=2) PDF and Rayleigh PDF:', maxDiffPDF );
188+
console.log( 'Maximum difference between Chi(k=2) CDF and Rayleigh CDF:', maxDiffCDF );
113189
```
114190

115191
</section>

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

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

1919
'use strict';
2020

21-
var objectKeys = require( '@stdlib/utils/keys' );
21+
var chiRandomFactory = require( '@stdlib/random/base/chi' ).factory;
22+
var filledarrayBy = require( '@stdlib/array/filled-by' );
23+
var variance = require( '@stdlib/stats/base/variance' );
24+
var linspace = require( '@stdlib/array/base/linspace' );
25+
var rayleigh = require( '@stdlib/stats/base/dists/rayleigh' );
26+
var mean = require( '@stdlib/stats/base/mean' );
27+
var abs = require( '@stdlib/math/base/special/abs' );
2228
var chi = require( './../lib' );
2329

24-
console.log( objectKeys( chi ) );
30+
// Define the degrees of freedom parameter:
31+
var k = 2;
32+
33+
// Generate an array of x values:
34+
var x = linspace( 0, 10, 100 );
35+
36+
// Compute the PDF for each x:
37+
var chiPDF = chi.pdf.factory( k );
38+
var pdf = filledarrayBy( x.length, 'float64', chiPDF );
39+
40+
// Compute the CDF for each x:
41+
var chiCDF = chi.cdf.factory( k );
42+
var cdf = filledarrayBy( x.length, 'float64', chiCDF );
43+
44+
// Output the PDF and CDF values:
45+
console.log( 'x values:', x );
46+
console.log( 'PDF values:', pdf );
47+
console.log( 'CDF values:', cdf );
48+
49+
// Compute statistical properties:
50+
var theoreticalMean = chi.mean( k );
51+
var theoreticalVariance = chi.variance( k );
52+
var theoreticalSkewness = chi.skewness( k );
53+
var theoreticalKurtosis = chi.kurtosis( k );
54+
55+
console.log( 'Theoretical Mean:', theoreticalMean );
56+
console.log( 'Theoretical Variance:', theoreticalVariance );
57+
console.log( 'Skewness:', theoreticalSkewness );
58+
console.log( 'Kurtosis:', theoreticalKurtosis );
59+
60+
// Generate random samples from the Chi distribution:
61+
var rchi = chiRandomFactory( k );
62+
var n = 1000;
63+
var samples = filledarrayBy( n, 'float64', rchi );
64+
65+
// Compute sample mean and variance:
66+
var sampleMean = mean( n, samples, 1 );
67+
var sampleVariance = variance( n, 1, samples, 1 );
68+
69+
console.log( 'Sample Mean:', sampleMean );
70+
console.log( 'Sample Variance:', sampleVariance );
71+
72+
// Compare sample statistics to theoretical values:
73+
console.log( 'Difference in Mean:', abs( theoreticalMean - sampleMean ) );
74+
console.log( 'Difference in Variance:', abs( theoreticalVariance - sampleVariance ) );
75+
76+
// Demonstrate the relationship with the Rayleigh distribution when k=2:
77+
var rayleighPDF = rayleigh.pdf.factory( 1.0 );
78+
var rayleighCDF = rayleigh.cdf.factory( 1.0 );
79+
80+
// Compute Rayleigh PDF and CDF for each x:
81+
var rayleighPDFValues = filledarrayBy( x.length, 'float64', rayleighPDF );
82+
83+
var rayleighCDFValues = filledarrayBy( x.length, 'float64', rayleighCDF );
84+
85+
// Compare Chi and Rayleigh PDFs and CDFs:
86+
var maxDiffPDF = 0.0;
87+
var maxDiffCDF = 0.0;
88+
var diffPDF;
89+
var diffCDF;
90+
var i;
91+
for ( i = 0; i < x.length; i++ ) {
92+
diffPDF = abs( pdf[ i ] - rayleighPDFValues[ i ] );
93+
if ( diffPDF > maxDiffPDF ) {
94+
maxDiffPDF = diffPDF;
95+
}
96+
diffCDF = abs( cdf[ i ] - rayleighCDFValues[ i ] );
97+
if ( diffCDF > maxDiffCDF ) {
98+
maxDiffCDF = diffCDF;
99+
}
100+
}
101+
console.log( 'Maximum difference between Chi(k=2) PDF and Rayleigh PDF:', maxDiffPDF );
102+
console.log( 'Maximum difference between Chi(k=2) CDF and Rayleigh CDF:', maxDiffCDF );

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)