Geometric Mean
Computes the geometric mean of an array.
Installation
$ npm install compute-gmean
Usage
var gmean = ;
gmean( arr[, accessor] )
Computes the geometric mean of an array
. For numeric arrays
,
var data = 1 5 2 3 7 ;var mu = ;// 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:{return dx;}var value = ;// returns ~2.194
Examples
var gmean = ;var data = 1000 ;for var i = 0; i < datalength; i++data i = Math * 100;console;
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.