Dynami la réponse de travaux, mais effectue plusieurs passages à travers les données pour obtenir un résultat. C'est un seul passage méthode qui calcule l' écart-type d'échantillon:
public static double StdDev(this IEnumerable<double> values)
{
// ref: http://warrenseen.com/blog/2006/03/13/how-to-calculate-standard-deviation/
double mean = 0.0;
double sum = 0.0;
double stdDev = 0.0;
int n = 0;
foreach (double val in values)
{
n++;
double delta = val - mean;
mean += delta / n;
sum += delta * (val - mean);
}
if (1 < n)
stdDev = Math.Sqrt(sum / (n - 1));
return stdDev;
}
C'est l' écart-type d'échantillon , car il divise en n - 1
. Pour l'écart-type vous avez besoin de diviser par n
à la place.
Il utilise Welford de la méthode qui a le plus de précision numérique par rapport à l' Average(x^2)-Average(x)^2
méthode.