Skip to content

Instantly share code, notes, and snippets.

@adrianseeley
Created September 16, 2016 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adrianseeley/1c293d41502e090df5cca5025a91d763 to your computer and use it in GitHub Desktop.
Save adrianseeley/1c293d41502e090df5cca5025a91d763 to your computer and use it in GitHub Desktop.
Incremental stats
var stats = {
q: 0,
count: 0,
min: Infinity,
max: -Infinity,
sum: 0,
mean: 0
};
var variance = stats.q / stats.count;
var standard_deviation = Math.sqrt(variance);
function push (value) {
if (isNaN(value)) {
throw 'Cannot handle NaN.';
}
stats.count++;
stats.min = Math.min(stats.min, value);
stats.max = Math.max(stats.max, value);
stats.sum += value;
var previous_mean = stats.mean;
stats.mean = stats.mean + (value - stats.mean) / stats.count;
stats.q = stats.q + (value - previous_mean) * (value - stats.mean);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment