Skip to content

Commit

Permalink
Merge 77e5d26 into 71069ef
Browse files Browse the repository at this point in the history
  • Loading branch information
Planeshifter committed Mar 21, 2015
2 parents 71069ef + 77e5d26 commit 495c293
Show file tree
Hide file tree
Showing 13 changed files with 427 additions and 76 deletions.
11 changes: 11 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
root = true

[*]
indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto
14 changes: 14 additions & 0 deletions .jshintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

# Directories #
###############
build/
reports/
dist/

# Node.js #
###########
/node_modules/

# Git #
#######
.git*
71 changes: 71 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
"bitwise": false,
"camelcase": false,
"curly": true,
"eqeqeq": true,
"es3": false,
"forin": true,
"freeze": true,
"immed": true,
"indent": 4,
"latedef": "nofunc",
"newcap": true,
"noarg": true,
"noempty": false,
"nonbsp": true,
"nonew": true,
"plusplus": false,
"quotmark": "single",
"undef": true,
"unused": true,
"strict": true,
"maxparams": 10,
"maxdepth": 5,
"maxstatements": 100,
"maxcomplexity": false,
"maxlen": 1000,
"asi": false,
"boss": false,
"debug": false,
"eqnull": false,
"esnext": false,
"evil": false,
"expr": false,
"funcscope": false,
"globalstrict": false,
"iterator": false,
"lastsemic": false,
"laxbreak": false,
"laxcomma": false,
"loopfunc": false,
"maxerr": 1000,
"moz": false,
"multistr": false,
"notypeof": false,
"proto": false,
"scripturl": false,
"shadow": false,
"sub": true,
"supernew": false,
"validthis": false,
"noyield": false,
"browser": true,
"browserify": true,
"couch": false,
"devel": true,
"dojo": false,
"jasmine": false,
"jquery": false,
"mocha": true,
"mootools": false,
"node": true,
"nonstandard": false,
"prototypejs": false,
"qunit": false,
"rhino": false,
"shelljs": false,
"worker": false,
"wsh": false,
"yui": false,
"globals": {}
}
5 changes: 4 additions & 1 deletion .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ examples/
reports/
support/
test/
benchmark/

# Node.js #
###########
Expand Down Expand Up @@ -46,4 +47,6 @@ Desktop.ini
# Utilities #
#############
.jshintrc
.travis.yml
.jshintignore
.travis.yml
.editorconfig
11 changes: 9 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
language: node_js
node_js:
- "0.10"
- '0.12'
- '0.11'
- '0.10'
- '0.8'
- 'iojs'
before_install:
- npm update -g npm
after_script:
- npm run coveralls
- npm run coveralls

28 changes: 21 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,31 @@ NODE_ENV ?= test

# NOTES #

NOTES ?= 'TODO|FIXME'
NOTES ?= 'TODO|FIXME|WARNING|HACK|NOTE'


# MOCHA #

# Specify the test framework bin locations:
MOCHA ?= ./node_modules/.bin/mocha
_MOCHA ?= ./node_modules/.bin/_mocha

# Specify the mocha reporter:
MOCHA_REPORTER ?= spec


# ISTANBUL #

# Istanbul configuration:
ISTANBUL ?= ./node_modules/.bin/istanbul
ISTANBUL_OUT ?= ./reports/coverage
ISTANBUL_REPORT ?= lcov
ISTANBUL_LCOV_INFO_PATH ?= $(ISTANBUL_OUT)/lcov.info
ISTANBUL_HTML_REPORT_PATH ?= $(ISTANBUL_OUT)/lcov-report/index.html


# JSHINT #

JSHINT ?= ./node_modules/.bin/jshint
JSHINT_REPORTER ?= ./node_modules/jshint-stylish/stylish.js



# FILES #

Expand Down Expand Up @@ -81,7 +83,8 @@ test-istanbul-mocha: node_modules
NODE_ENV=$(NODE_ENV) \
NODE_PATH=$(NODE_PATH_TEST) \
$(ISTANBUL) cover \
--dir $(ISTANBUL_OUT) --report $(ISTANBUL_REPORT) \
--dir $(ISTANBUL_OUT) \
--report $(ISTANBUL_REPORT) \
$(_MOCHA) -- \
--reporter $(MOCHA_REPORTER) \
$(TESTS)
Expand All @@ -99,6 +102,18 @@ view-istanbul-report:



# LINT #

.PHONY: lint lint-jshint

lint: lint-jshint

lint-jshint: node_modules
$(JSHINT) \
--reporter $(JSHINT_REPORTER) \
./


# NODE #

# Installing node_modules:
Expand All @@ -116,7 +131,6 @@ clean-node:


# CLEAN #

.PHONY: clean

clean:
Expand Down
76 changes: 65 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Variance
===
[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependencies][dependencies-image]][dependencies-url]

> Computes the sample variance over an array of values.
> Computes the [variance](http://en.wikipedia.org/wiki/Variance) of an array.

## Installation
Expand All @@ -16,17 +16,73 @@ For use in the browser, use [browserify](https://github.com/substack/node-browse

## Usage

To use the module,

``` javascript
var variance = require( 'compute-variance' );
```

### variance( arr[, opts] )

Computes the [variance](http://en.wikipedia.org/wiki/Variance) of an `array`. For numeric `arrays`,

``` javascript
var data = [ 2, 4, 5, 3, 4, 3, 1, 5, 6, 9 ];

var s2 = variance( data );
// returns 5.067
```

The function accepts two `options`:

* __accessor__: accessor `function` for accessing `array` values
* __bias__: `boolean` indicating whether to compute the population variance (biased sample variance) or the (unbiased) sample variance. Default: `false`; i.e., the unbiased sample variance.

For non-numeric `arrays`, provide an accessor `function` for accessing numeric `array` values

``` javascript
var data = [
{'x':2},
{'x':4},
{'x':5},
{'x':3},
{'x':4},
{'x':3},
{'x':1},
{'x':5},
{'x':6},
{'x':9}
];

function getValue( d ) {
return d.x;
}

var s2 = variance( data, {
'accessor': getValue
});
// returns 5.067
```

By default, the function calculates the *unbiased* sample variance. To calculate the population variance (or a *biased* sample variance), set the `bias` option to `true`.

``` javascript
var data = [ 2, 4, 5, 3, 4, 3, 1, 5, 6, 9 ];

var value = variance( data, {
'bias': true
});
// returns 4.56
```

__Note__: if provided an empty `array`, the function returns `null`.



## Examples

``` javascript
var data = new Array( 1000 );
var variance = require( 'compute-variance' );

var data = new Array( 1000 );
for ( var i = 0; i < data.length; i++ ) {
data[ i ] = Math.random() * 100;
}
Expand All @@ -45,7 +101,7 @@ $ node ./examples/index.js

### Unit

Unit tests use the [Mocha](http://visionmedia.github.io/mocha) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory:
Unit tests use the [Mocha](http://mochajs.org) test framework with [Chai](http://chaijs.com) assertions. To run the tests, execute the following command in the top-level application directory:

``` bash
$ make test
Expand All @@ -65,16 +121,14 @@ $ make test-cov
Istanbul creates a `./reports/coverage` directory. To access an HTML version of the report,

``` bash
$ open reports/coverage/lcov-report/index.html
$ make view-cov
```


---
## License

[MIT license](http://opensource.org/licenses/MIT).

[MIT license](http://opensource.org/licenses/MIT).

---
## Copyright

Copyright &copy; 2014. Athan Reines.
Expand All @@ -96,4 +150,4 @@ Copyright &copy; 2014. Athan Reines.
[dev-dependencies-url]: https://david-dm.org/dev/compute-io/variance

[github-issues-image]: http://img.shields.io/github/issues/compute-io/variance.svg
[github-issues-url]: https://github.com/compute-io/variance/issues
[github-issues-url]: https://github.com/compute-io/variance/issues
1 change: 0 additions & 1 deletion TODO.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
TODO
====


6 changes: 3 additions & 3 deletions examples/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var variance = require( './../lib' );

var data = new Array( 1000 );

for ( var i = 0; i < data.length; i++ ) {
data[ i ] = Math.random() * 100;
}

console.log( variance( data ) );
console.log( variance( data ) );

0 comments on commit 495c293

Please sign in to comment.