variance function
Variance, standard deviation, median, percentile. Roadmap #122–125.
Implementation
double variance(Iterable<num> values, {bool isPopulation = false}) {
final List<num> list = values.toList();
if (list.isEmpty) return 0;
final double mean = list.fold<double>(0, (double s, num v) => s + v.toDouble()) / list.length;
final double sumSq = list.fold<double>(0, (double s, num v) {
final double d = v.toDouble() - mean;
final double dSq = math.pow(d, 2).toDouble();
return s + dSq;
});
final int n = isPopulation ? list.length : list.length - 1;
return n <= 0 ? 0 : sumSq / n;
}