Add usePopulation flag param

This commit is contained in:
atomiks
2017-12-13 23:41:28 +11:00
committed by GitHub
parent 731df31395
commit b844b0f765

View File

@ -3,15 +3,15 @@
Use `Array.reduce()` to calculate the mean of the values, the variance of the values, and the sum of the variance
of the values to determine the standard deviation of an array of numbers.
NOTE: This is **population standard deviation**. Use `/ (arr.length - 1)` at the end to
calculate **sample standard deviation**.
Since there are two types of standard deviation, population and sample, you can use a flag to switch to population (sample is default).
```js
const standardDeviation = arr =>
const standardDeviation = (arr, usePopulation) =>
Math.sqrt(
arr.reduce((acc, val) => acc.concat(Math.pow(val - arr.reduce((acc, val) => acc + val, 0) / arr.length, 2)), [])
.reduce((acc, val) => acc + val, 0)
/ arr.length
/ (arr.length - (usePopulation ? 0 : 1))
);
// standardDeviation([10,2,38,23,38,23,21]) -> 12.298996142875
// standardDeviation([10,2,38,23,38,23,21]) -> 13.284434142114991 (sample)
// standardDeviation([10,2,38,23,38,23,21], true) -> 12.29899614287479 (population)
```