@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
25
25
< div class ='fl pad1y space-right2 '>
26
26
< span class ="strong "> 100% </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 104/104 </ span >
28
+ < span class ='fraction '> 101/101 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
33
< span class ="strong "> 100% </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 12/12 </ span >
35
+ < span class ='fraction '> 7/7 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
46
46
< div class ='fl pad1y space-right2 '>
47
47
< span class ="strong "> 100% </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 104/104 </ span >
49
+ < span class ='fraction '> 101/101 </ span >
50
50
</ div >
51
51
52
52
@@ -164,10 +164,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
164
164
< a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165
165
< a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166
166
< a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167
- < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168
- < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169
- < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170
- < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
167
+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
171
168
< span class ="cline-any cline-yes "> 3x</ span >
172
169
< span class ="cline-any cline-yes "> 3x</ span >
173
170
< span class ="cline-any cline-yes "> 3x</ span >
@@ -220,55 +217,52 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
220
217
< span class ="cline-any cline-yes "> 3x</ span >
221
218
< span class ="cline-any cline-yes "> 3x</ span >
222
219
< span class ="cline-any cline-yes "> 3x</ span >
223
- < span class ="cline-any cline-yes "> 30x</ span >
224
- < span class ="cline-any cline-yes "> 30x</ span >
225
- < span class ="cline-any cline-yes "> 30x</ span >
226
- < span class ="cline-any cline-yes "> 30x</ span >
227
- < span class ="cline-any cline-yes "> 30x</ span >
228
- < span class ="cline-any cline-yes "> 30x</ span >
229
- < span class ="cline-any cline-yes "> 30x</ span >
230
- < span class ="cline-any cline-yes "> 30x</ span >
231
- < span class ="cline-any cline-yes "> 30x</ span >
232
- < span class ="cline-any cline-yes "> 30x</ span >
233
- < span class ="cline-any cline-yes "> 30x</ span >
234
- < span class ="cline-any cline-yes "> 30x</ span >
235
- < span class ="cline-any cline-yes "> 30x</ span >
236
- < span class ="cline-any cline-yes "> 30x</ span >
237
- < span class ="cline-any cline-yes "> 30x</ span >
238
- < span class ="cline-any cline-yes "> 30x</ span >
239
- < span class ="cline-any cline-yes "> 30x</ span >
240
- < span class ="cline-any cline-yes "> 30x</ span >
241
- < span class ="cline-any cline-yes "> 30x</ span >
242
- < span class ="cline-any cline-yes "> 30x</ span >
243
- < span class ="cline-any cline-yes "> 30x</ span >
244
- < span class ="cline-any cline-yes "> 30x</ span >
245
- < span class ="cline-any cline-yes "> 30x</ span >
246
- < span class ="cline-any cline-yes "> 30x</ span >
247
- < span class ="cline-any cline-yes "> 30x</ span >
248
- < span class ="cline-any cline-yes "> 8x</ span >
249
- < span class ="cline-any cline-yes "> 8x</ span >
250
- < span class ="cline-any cline-yes "> 30x</ span >
220
+ < span class ="cline-any cline-yes "> 3x</ span >
221
+ < span class ="cline-any cline-yes "> 3x</ span >
222
+ < span class ="cline-any cline-yes "> 3x</ span >
223
+ < span class ="cline-any cline-yes "> 3x</ span >
224
+ < span class ="cline-any cline-yes "> 22x</ span >
225
+ < span class ="cline-any cline-yes "> 22x</ span >
226
+ < span class ="cline-any cline-yes "> 22x</ span >
227
+ < span class ="cline-any cline-yes "> 22x</ span >
228
+ < span class ="cline-any cline-yes "> 22x</ span >
229
+ < span class ="cline-any cline-yes "> 22x</ span >
230
+ < span class ="cline-any cline-yes "> 22x</ span >
231
+ < span class ="cline-any cline-yes "> 22x</ span >
232
+ < span class ="cline-any cline-yes "> 22x</ span >
233
+ < span class ="cline-any cline-yes "> 22x</ span >
234
+ < span class ="cline-any cline-yes "> 22x</ span >
235
+ < span class ="cline-any cline-yes "> 22x</ span >
236
+ < span class ="cline-any cline-yes "> 22x</ span >
237
+ < span class ="cline-any cline-yes "> 22x</ span >
238
+ < span class ="cline-any cline-yes "> 22x</ span >
239
+ < span class ="cline-any cline-yes "> 22x</ span >
240
+ < span class ="cline-any cline-yes "> 22x</ span >
241
+ < span class ="cline-any cline-yes "> 22x</ span >
251
242
< span class ="cline-any cline-yes "> 4x</ span >
252
243
< span class ="cline-any cline-yes "> 4x</ span >
253
244
< span class ="cline-any cline-yes "> 18x</ span >
254
245
< span class ="cline-any cline-yes "> 18x</ span >
255
- < span class ="cline-any cline-yes "> 30x</ span >
256
- < span class ="cline-any cline-yes "> 64x</ span >
257
- < span class ="cline-any cline-yes "> 64x</ span >
258
- < span class ="cline-any cline-yes "> 64x</ span >
259
246
< span class ="cline-any cline-yes "> 18x</ span >
260
247
< span class ="cline-any cline-yes "> 18x</ span >
261
248
< span class ="cline-any cline-yes "> 18x</ span >
262
249
< span class ="cline-any cline-yes "> 18x</ span >
263
- < span class ="cline-any cline-yes "> 30x</ span >
250
+ < span class ="cline-any cline-yes "> 18x</ span >
251
+ < span class ="cline-any cline-yes "> 18x</ span >
252
+ < span class ="cline-any cline-yes "> 18x</ span >
253
+ < span class ="cline-any cline-yes "> 18x</ span >
254
+ < span class ="cline-any cline-yes "> 18x</ span >
255
+ < span class ="cline-any cline-yes "> 22x</ span >
264
256
< span class ="cline-any cline-yes "> 64x</ span >
265
257
< span class ="cline-any cline-yes "> 64x</ span >
266
258
< span class ="cline-any cline-yes "> 64x</ span >
267
259
< span class ="cline-any cline-yes "> 64x</ span >
268
260
< span class ="cline-any cline-yes "> 64x</ span >
269
261
< span class ="cline-any cline-yes "> 18x</ span >
270
- < span class ="cline-any cline-yes "> 18x</ span >
271
- < span class ="cline-any cline-yes "> 30x</ span >
262
+ < span class ="cline-any cline-yes "> 22x</ span >
263
+ < span class ="cline-any cline-yes "> 3x</ span >
264
+ < span class ="cline-any cline-yes "> 3x</ span >
265
+ < span class ="cline-any cline-yes "> 3x</ span >
272
266
< span class ="cline-any cline-yes "> 3x</ span >
273
267
< span class ="cline-any cline-yes "> 3x</ span >
274
268
< span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> /**
@@ -293,6 +287,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
293
287
294
288
// MODULES //
295
289
290
+ var gsumpw = require( '@stdlib/blas/ext/base/gsumpw' ).ndarray;
291
+
292
+
296
293
// MAIN //
297
294
298
295
/**
@@ -310,70 +307,64 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
310
307
* @param {PositiveInteger} N - number of indexed elements
311
308
* @param {number} correction - degrees of freedom adjustment
312
309
* @param {Object} x - input array object
310
+ * @param {Collection} x.data - input array data
313
311
* @param {Array<Function>} x.accessors - array element accessors
314
- * @param {integer} stride - stride length
315
- * @param {integer} offset - starting index
312
+ * @param {integer} strideX - stride length
313
+ * @param {NonNegativeInteger} offsetX - starting index
316
314
* @returns {number} variance
317
315
*
318
316
* @example
319
317
* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
320
318
* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
321
319
*
322
- * var x = toAccessorArray( [ 1.0, -2.0, 2 .0 ] );
320
+ * var x = toAccessorArray( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4 .0 ] );
323
321
*
324
- * var v = variancepn( 3 , 1, arraylike2object( x ), 1, 0 );
325
- * // returns ~4.3333
322
+ * var v = variancepn( 4 , 1, arraylike2object( x ), 2, 1 );
323
+ * // returns 6.25
326
324
*/
327
- function variancepn( N, correction, x, stride, offset ) {
325
+ function variancepn( N, correction, x, strideX, offsetX ) {
328
326
var xbuf;
329
327
var get;
330
- var sum;
331
328
var mu;
332
- var M2;
333
329
var ix;
330
+ var M2;
334
331
var M;
335
332
var d;
336
333
var n;
337
334
var i;
338
335
339
- // Cache references to array data:
336
+ // Cache reference to array data:
340
337
xbuf = x.data;
341
338
342
- // Cache references to element accessors :
339
+ // Cache a reference to the element accessor :
343
340
get = x.accessors[ 0 ];
344
341
345
- sum = 0.0;
346
- M2 = 0.0;
347
- M = 0.0;
348
- ix = offset;
349
- n = N - correction;
350
-
351
- if ( N <= 0 || n <= 0 ) {
352
- return NaN;
353
- }
354
- if ( N === 1 || stride === 0 ) {
342
+ if ( N === 1 || strideX === 0 ) {
355
343
return 0.0;
356
344
}
357
345
358
- // Compute the mean:
359
- for ( i = 0; i < N; i++ ) {
360
- sum += get( xbuf, ix );
361
- ix += stride;
362
- }
363
- mu = sum / N;
346
+ // Compute an estimate for the mean:
347
+ mu = gsumpw( N, xbuf, strideX, offsetX ) / N;
348
+
349
+ n = N - correction;
350
+ ix = offsetX;
351
+
352
+ // Compute the variance...
353
+ M2 = 0.0;
354
+ M = 0.0;
364
355
365
- // Compute the variance:
366
- ix = offset;
367
356
for ( i = 0; i < N; i++ ) {
368
357
d = get( xbuf, ix ) - mu;
369
358
M2 += d * d;
370
359
M += d;
371
- ix += stride ;
360
+ ix += strideX ;
372
361
}
373
-
374
- return ( M2 / n ) - ( ( M / N ) * ( M / n ) );
362
+ return (M2/n) - ((M/N)*(M/n));
375
363
}
376
364
365
+
366
+ // EXPORTS //
367
+
377
368
module.exports = variancepn;
378
369
</ pre > </ td > </ tr > </ table > </ pre >
379
370
@@ -382,7 +373,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
382
373
< div class ='footer quiet pad2 space-top1 center small '>
383
374
Code coverage generated by
384
375
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
385
- at 2025-06-08T09:37:51.631Z
376
+ at 2025-06-12T08:38:03.863Z
386
377
</ div >
387
378
< script src ="../../../../prettify.js "> </ script >
388
379
< script >
0 commit comments