Mean and Standard Deviation

home1 home2
 Bib
 Algorithms
 Bioinfo
 FP
 Logic
 MML
 Prog.Lang
and the
 Book

Algorithms
 glossary
 Numerical
  Num'Errors
  Polynomials
  Stirling
  Mean&S.D.
  Integration

The mean, &mu, of N 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 sqrt(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 squares minus the squared mean.
Hence σ = sqrt(sumSq / N - μ2)
where sumSq = ∑1..N A[i]2

This 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

Coding Ockham's Razor, L. Allison, Springer

A Practical Introduction to Denotational Semantics, L. Allison, CUP

Linux
 Ubuntu
free op. sys.
OpenOffice
free office suite
The GIMP
~ free photoshop
Firefox
web browser

© L. Allison   http://www.allisons.org/ll/   (or as otherwise indicated),
Faculty of Information Technology (Clayton), Monash University, Australia 3800 (6/'05 was School of Computer Science and Software Engineering, Fac. Info. Tech., Monash University,
was Department of Computer Science, Fac. Comp. & Info. Tech., '89 was Department of Computer Science, Fac. Sci., '68-'71 was Department of Information Science, Fac. Sci.)
Created with "vi (Linux + Solaris)",  charset=iso-8859-1,  fetched Friday, 29-Mar-2024 02:14:21 AEDT.