@stdlib/stats-base-ndarray-dmeanlipw
v0.1.1
Published
Compute the arithmetic mean of a one-dimensional double-precision floating-point ndarray using a one-pass trial mean algorithm with pairwise summation.
Readme
dmeanlipw
Compute the arithmetic mean of a one-dimensional double-precision floating-point ndarray using a one-pass trial mean algorithm with pairwise summation.
The arithmetic mean is defined as
Installation
npm install @stdlib/stats-base-ndarray-dmeanlipwUsage
var dmeanlipw = require( '@stdlib/stats-base-ndarray-dmeanlipw' );dmeanlipw( arrays )
Computes the arithmetic mean of a one-dimensional double-precision floating-point ndarray using a one-pass trial mean algorithm with pairwise summation.
var Float64Array = require( '@stdlib/array-float64' );
var ndarray = require( '@stdlib/ndarray-base-ctor' );
var xbuf = new Float64Array( [ 1.0, 3.0, 4.0, 2.0 ] );
var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
var v = dmeanlipw( [ x ] );
// returns 2.5The 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. - The underlying algorithm is a specialized case of Welford's algorithm. Similar to the method of assumed mean, the first ndarray element is used as a trial mean. The trial mean is subtracted from subsequent data values, and the average deviations used to adjust the initial guess. Accordingly, the algorithm's accuracy is best when data is unordered (i.e., the data is not sorted in either ascending or descending order such that the first value is an "extreme" value).
Examples
var discreteUniform = require( '@stdlib/random-array-discrete-uniform' );
var ndarray = require( '@stdlib/ndarray-base-ctor' );
var ndarray2array = require( '@stdlib/ndarray-to-array' );
var dmeanlipw = require( '@stdlib/stats-base-ndarray-dmeanlipw' );
var xbuf = discreteUniform( 10, -50, 50, {
'dtype': 'float64'
});
var x = new ndarray( 'float64', xbuf, [ xbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( x ) );
var v = dmeanlipw( [ x ] );
console.log( v );References
- Welford, B. P. 1962. "Note on a Method for Calculating Corrected Sums of Squares and Products." Technometrics 4 (3). Taylor & Francis: 419–20. doi:10.1080/00401706.1962.10490022.
- van Reeken, A. J. 1968. "Letters to the Editor: Dealing with Neely's Algorithms." Communications of the ACM 11 (3): 149–50. doi:10.1145/362929.362961.
- Ling, Robert F. 1974. "Comparison of Several Algorithms for Computing Sample Means and Variances." Journal of the American Statistical Association 69 (348). American Statistical Association, Taylor & Francis, Ltd.: 859–66. doi:10.2307/2286154.
- Higham, Nicholas J. 1993. "The Accuracy of Floating Point Summation." SIAM Journal on Scientific Computing 14 (4): 783–99. doi:10.1137/0914050.
Notice
This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.
Community
License
See LICENSE.
Copyright
Copyright © 2016-2026. The Stdlib Authors.
