/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ export class Statistic { static calculateCoefficientOfVariation(sample: number[], mean: number) { return Statistic.calculateStandardDeviation(sample, mean) / mean * 100; } static calculateMean(samples: number[]) { let total = 0; // TODO: use reduce samples.forEach(x => total += x); return total / samples.length; } static calculateStandardDeviation(samples: number[], mean: number) { let deviation = 0; // TODO: use reduce samples.forEach(x => deviation += Math.pow(x - mean, 2)); deviation = deviation / (samples.length); deviation = Math.sqrt(deviation); return deviation; } static calculateRegressionSlope( xValues: number[], xMean: number, yValues: number[], yMean: number) { // See http://en.wikipedia.org/wiki/Simple_linear_regression let dividendSum = 0; let divisorSum = 0; for (let i = 0; i < xValues.length; i++) { dividendSum += (xValues[i] - xMean) * (yValues[i] - yMean); divisorSum += Math.pow(xValues[i] - xMean, 2); } return dividendSum / divisorSum; } }