Mean and Standard Deviation

LA home
Computing
Algorithms
 glossary
 Numerical
  Num.Errors
  Polynomials
  Stirling
  Mean&S.D.
  Segmentation
  Superposition
  Integration
  Matrices
  Eigen v.
  μ,σ

The mean, μ, of N≥1 real numbers, A[1], ..., A[N], is their sum divided by N, i.e., (∑1..N A[i])/N. Their variance is (∑1..N (A[i]-μ)2)/N, and their standard deviation, σ, is √variance. note that these quantities are always ≥0. The mean gives the "centre of gravity" (CG) of the numbers, and the standard deviation indicates how far they stray from the CG, on average.

Both the mean and the standard deviation can be calculated on a single scan through A[ ] even though the mean is not known until the end of the scan:

variance
= σ2 
= ( ∑i=1..N (A[i]-μ)2 ) / N
= ( (∑ A[i]2) - 2*μ*(∑ A[i]) + N*μ2 ) / N
= ( (∑ A[i]2) - 2*μ*sum ) / N + μ2
= ( ∑i=1..N A[i]2 ) / N - μ2
i.e., the mean square minus the squared mean.
 
Hence σ = √{ sumSq/N - μ2 }
where sumSq = ∑1..N A[i]2
 
To remember this: "The variance equals the mean square minus the squared mean."
 
It gives the following algorithm:
  sum := 0.0;
sumSq := 0.0;

for i in {1 .. N} do
     sum +:= A[i];
   sumSq +:= A[i]2
end for;

  mean := sum / N;
stdDev := sqrt(sumSq / N - mean2);
inp[]
opt=
-- L.A., 1999

Notes

www:

↑ © L. Allison, www.allisons.org/ll/   (or as otherwise indicated).
Created with "vi (Linux)",  charset=iso-8859-1,   fetched Tuesday, 25-Jun-2019 16:39:03 EDT.

Free: Linux, Ubuntu operating-sys, OpenOffice office-suite, The GIMP ~photoshop, Firefox web-browser, FlashBlock flash on/off.