variance method

double variance({
  1. bool population = false,
})

Returns the (population) variance of this Iterable, or double.nan if the iterable contains less than 2 (1 for population variance) values.

For details, see https://en.wikipedia.org/wiki/Variance.

Example: [2, 5].variance() returns 4.5.

Implementation

double variance({bool population = false}) {
  var count = 0, mean = 0.0, m2 = 0.0;
  for (final value in this) {
    count++;
    final delta = value - mean;
    mean += delta / count;
    final delta2 = value - mean;
    m2 += delta * delta2;
  }
  final divisor = population ? count : count - 1;
  return divisor < 1 ? double.nan : m2 / divisor;
}