Logo

Programming-Idioms

  • Fortran
  • JS
  • Rust

Idiom #203 Calculate mean and standard deviation

Calculate the mean m and the standard deviation s of the list of floating point values data.

let sum: f64 = data.iter().sum();
let m = sum / (data.len() as f64);
let sum_of_squares: f64 = data.iter().map(|item| (item - m) * (item - m)).sum();
let s = (sum_of_squares / (list.len() as f64)).sqrt();
real, allocatable :: data(:)
real :: m, s
...
m = sum( data ) / size( data )
s = sqrt( sum( data**2 ) / size( data ) - m**2 )

data may be a multidimensional array (e.g. data(:,:)).
using System.Linq;
using System.Collections.Generic;
var m = data.Average();
var s = CalculateStdDev(data);

float CalculateStdDev(IEnumerable<float> values)
{
	double ret = 0;

	if (values.Count() > 0)
	{
		double avg = values.Average();
	      	double sum = values.Sum(d => Math.Pow(d - avg, 2));
	      	ret = Math.Sqrt((sum) / values.Count()-1);
	}
	return (float)ret;
}

New implementation...
< >
Bart