This is a `playground`

to test code. It runs a full `Node.js`

environment and already has all of `npm`

’s 400,000 packages pre-installed, including `stats-lite`

with all `npm`

packages installed. **Try it out**:

var statsLite = require("stats-lite")

- all documents on RunKit are public
`require()`

any package directly from npm- use arrow functions, classes, template strings, and most of ES6
`await`

any promise instead of using callbacks (example)- create your own embedded
**node.js**snippets

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

A fairly light statistical package. Works with numeric arrays, and will automatically filter out non-numeric values and attempt to convert string numeric values.

```
npm install stats-lite --save
```

```
var stats = require("stats-lite")
var dice = require("dice")
var rolls = []
for (var i = 0; i < 3000; i++) {
rolls.push(dice.sum(dice.roll("2d6")))
}
console.log("sum: %s", stats.sum(rolls))
console.log("mean: %s", stats.mean(rolls))
console.log("median: %s", stats.median(rolls))
console.log("mode: %s", stats.mode(rolls))
console.log("variance: %s", stats.variance(rolls))
console.log("standard deviation: %s", stats.stdev(rolls))
console.log("sample standard deviation: %s", stats.sampleStdev(rolls))
console.log("85th percentile: %s", stats.percentile(rolls, 0.85))
console.log("histogram:", stats.histogram(rolls, 10))
/* Your exact numbers may vary, but they should be pretty similar:
sum: 21041
mean: 7.0136666666666665
median: 7
mode: 7
variance: 5.8568132222220415
standard deviation: 2.4200853749861886
sample standard deviation: 2.4204888234135953
85th percentile: 10
histogram { values: [ 94, 163, 212, 357, 925, 406, 330, 264, 164, 85 ],
bins: 10,
binWidth: 1.05,
binLimits: [ 1.75, 12.25 ] }
*/
```

**Compatibility Notice**: Version 2.0.0+ of this library use features that require Node.js v4.0.0 and above

All of the exported functions take `vals`

which is an array of numeric values. Non-numeric values will be removed, and string numbers will be converted to Numbers.

**NOTE**: This will impact some operations, e.g. `mean([null, 1, 2, 3])`

will be calculated as `mean([1, 2, 3])`

, (e.g. `6 / 3 = 2`

, NOT `6 / 4 = 1.5`

)

`numbers(vals)`

Accepts an array of values and returns an array consisting of only numeric values from the source array. Converts what it can and filters out anything else. e.g.

```
numbers(["cat", 1, "22.9", 9])
// [1, 22.9, 9]
```

`sum(vals)`

Sum the values in the array.

`mean(vals)`

Calculate the mean average value of `vals`

.

`median(vals)`

Calculate the median average value of `vals`

.

`mode(vals)`

Calculate the mode average value of `vals`

.

If `vals`

is multi-modal (contains multiple modes), `mode(vals)`

will return a ES6 Set of the modes.

`variance(vals)`

Calculate the variance from the mean for a population.

`stdev(vals)`

Calculate the standard deviation of the values from the mean for a population.

`sampleVariance(vals)`

Calculate the variance from the mean for a sample.

`sampleStdev(vals)`

Calculate the standard deviation of the values from the mean for a sample.

`percentile(vals, ptile)`

Calculate the value representing the desired percentile `(0 < ptile <= 1)`

. Uses the Estimation method to interpolate non-member percentiles.

`histogram(vals[, bins])`

Build a histogram representing the distribution of the data in the provided number of `bins`

. If `bins`

is not set, it will choose one based on `Math.sqrt(vals.length)`

. Data will look like:

```
histogram {
values: [ 86, 159, 253, 335, 907, 405, 339, 270, 146, 100 ],
bins: 10,
binWidth: 1.05,
binLimits: [ 1.75, 12.25 ]
}
```

Where `values`

are the bins and the counts of the original values falling in that range. The ranges can be calculated from the `binWidth`

and `binLimits`

. For example, the first bin `values[0]`

in this example is from `1.75 < value <= 2.8`

. The third bin `values[2]`

would be `1.75 + (1.05 * 2) < value <= 1.75 + (1.05 * 3)`

or `3.85 < value <= 4.9`

.

MIT

- package on npmhttps://npmjs.com/package/stats-lite
- homepagehttps://github.com/brycebaril/node-stats-lite
- licenseMIT

RunKit is a free, in-browser JavaScript dev environment for prototyping **Node.js** code, with every **npm** package installed. Sign up to share your code.

Sign Up for Free