compute-gmean
v1.1.0
Published
Computes the geometric mean of an array.
Downloads
1,587
Maintainers
Readme
Geometric Mean
Computes the geometric mean of an array.
Installation
$ npm install compute-gmean
Usage
var gmean = require( 'compute-gmean' );
gmean( arr[, accessor] )
Computes the geometric mean of an array
. For numeric arrays
,
var data = [ 1, 5, 2, 3, 7 ];
var mu = gmean( data );
// returns ~2.914
For non-numeric arrays
, provide an accessor function
for accessing numeric values
var arr = [
{'x':1},
{'x':5},
{'x':2},
{'x':3},
{'x':7}
]:
function getValue( d ) {
return d.x;
}
var value = prod( arr, getvalue );
// returns ~2.194
Examples
var gmean = require( 'compute-gmean' );
var data = new Array( 1000 );
for ( var i = 0; i < data.length; i++ ) {
data[ i ] = Math.random() * 100;
}
console.log( gmean( data ) );
To run the example code from the top-level application directory,
$ node ./examples/index.js
Notes
- Only calculate the geometric mean of an
array
of positive numbers. The textbook formula for calculating the geometric mean involves taking the product of allarray
elements. If one element is0
, then the product is0
, even if all other values are>>> 0
, yielding a nonsensical geometric mean (and measure of the central tendency). Nonsensical results also arise when anarray
contains negative values leading to a product without positive roots and a geometric mean which does not map to the measure's geometric interpretation. For more information, see Handbook of Parametric and Nonparametric Statistical Procedures: Third Edition by David J. Sheskin. - If an
array
contains values less than or equal to0
, the function returnsNaN
. - If provided an empty
array
, the function returnsnull
. - For arrays exceeding memory constraints, you are encouraged to use streams; see flow-gmean.
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2014-2015. Rebekah Smith.