standardDeviation = () => {
let count = 0;
let sum = 0;
let sumOfSquares = 0;
const add = (value) => {
count += 1;
sum += value;
sumOfSquares += value * value;
};
const remove = (value) => {
count -= 1;
sum -= value;
sumOfSquares -= value * value;
};
const avg = () => sum / count;
const sd = () =>
Math.sqrt(sumOfSquares / count - (sum * sum) / count / count);
return {
addAll(...values) {
values.forEach(add);
},
removeAll(...values) {
values.forEach(remove);
},
avg,
sd
};
}