@@ -101,15 +101,91 @@ var mu = dist.mean;
101
101
102
102
## Examples
103
103
104
- <!-- TODO: better examples -->
105
-
106
104
<!-- eslint no-undef: "error" -->
107
105
108
106
``` 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' );
110
114
var chi = require ( ' @stdlib/stats/base/dists/chi' );
111
115
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 );
113
189
```
114
190
115
191
</section >
0 commit comments