Skip to content

Latest commit

 

History

History
153 lines (94 loc) · 4.38 KB

File metadata and controls

153 lines (94 loc) · 4.38 KB

snanmeanpn

Compute the arithmetic mean of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using a two-pass error correction algorithm.

The arithmetic mean is defined as

$$\mu = \frac{1}{n} \sum_{i=0}^{n-1} x_i$$

Usage

var snanmeanpn = require( '@stdlib/stats/base/ndarray/snanmeanpn' );

snanmeanpn( arrays )

Computes the arithmetic mean of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using a two-pass error correction algorithm.

var Float32Array = require( '@stdlib/array/float32' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );

var xbuf = new Float32Array( [ 1.0, 3.0, NaN, 2.0 ] );
var x = new ndarray( 'float32', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );

var v = snanmeanpn( [ x ] );
// returns 2.0

The function has the following parameters:

  • arrays: array-like object containing a one-dimensional input ndarray.

Notes

  • If provided an empty one-dimensional ndarray, the function returns NaN.

Examples

var uniform = require( '@stdlib/random/base/uniform' );
var filledarrayBy = require( '@stdlib/array/filled-by' );
var bernoulli = require( '@stdlib/random/base/bernoulli' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var snanmeanpn = require( '@stdlib/stats/base/ndarray/snanmeanpn' );

function rand() {
    if ( bernoulli( 0.8 ) < 1 ) {
        return NaN;
    }
    return uniform( -50.0, 50.0 );
}

var xbuf = filledarrayBy( 10, 'float32', rand );
var x = new ndarray( 'float32', xbuf, [ xbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( x ) );

var v = snanmeanpn( [ x ] );
console.log( v );

References

  • Neely, Peter M. 1966. "Comparison of Several Algorithms for Computation of Means, Standard Deviations and Correlation Coefficients." Communications of the ACM 9 (7). Association for Computing Machinery: 496–99. doi:10.1145/365719.365958.
  • Schubert, Erich, and Michael Gertz. 2018. "Numerically Stable Parallel Computation of (Co-)Variance." In Proceedings of the 30th International Conference on Scientific and Statistical Database Management. New York, NY, USA: Association for Computing Machinery. doi:10.1145/3221269.3223036.