Skip to content

Instantly share code, notes, and snippets.

@bluesmoon
Created April 25, 2012 15:57
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 bluesmoon/2490880 to your computer and use it in GitHub Desktop.
Save bluesmoon/2490880 to your computer and use it in GitHub Desktop.
Fast calculation of stddev
Datum: x
Size: n
Mean: m
variance = sum((x-m)^2)/n
= (x0-m)^2 + (x1-m)^2 + (x2-m)^2 ...
----------------------------------
n
= x0^2 -2mx0 + m^2 + x1^2 -2mx1 + m^2 + x2^2 -2mx2 +m^2 ...
---------------------------------------------------------
n
= x0^2 + x1^2 + x2^2 + ... + n(m^2) - 2m (x0 + x1 + x2 + ...)
-----------------------------------------------------------
n
= sum(x^2) + n(m^2) - 2m sum(x)
-----------------------------
n
= sum(x^2) + n (1/n * sum(x)) (1/n * sum(x)) - 2/n sum(x) sum(x)
--------------------------------------------------------------
n
= sum(x^2) + 1/n * sum(x)^2 - 2/n sum(x)^2
----------------------------------------
n
= sum(x^2) - 1/n * sum(x)^2
-------------------------
n
= n * sum(x^2) - sum(x)^2
-----------------------
n^2
stddev = sqrt(variance) = sqrt(n * sum(x^2) - sum(x)^2)/n
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment