1 | import { Math } from 'angular2/src/facade/math';
|
2 | export class Statistic {
|
3 | static calculateCoefficientOfVariation(sample, mean) {
|
4 | return Statistic.calculateStandardDeviation(sample, mean) / mean * 100;
|
5 | }
|
6 | static calculateMean(samples) {
|
7 | var total = 0;
|
8 | // TODO: use reduce
|
9 | samples.forEach(x => total += x);
|
10 | return total / samples.length;
|
11 | }
|
12 | static calculateStandardDeviation(samples, mean) {
|
13 | var deviation = 0;
|
14 | // TODO: use reduce
|
15 | samples.forEach(x => deviation += Math.pow(x - mean, 2));
|
16 | deviation = deviation / (samples.length);
|
17 | deviation = Math.sqrt(deviation);
|
18 | return deviation;
|
19 | }
|
20 | static calculateRegressionSlope(xValues, xMean, yValues, yMean) {
|
21 | // See http://en.wikipedia.org/wiki/Simple_linear_regression
|
22 | var dividendSum = 0;
|
23 | var divisorSum = 0;
|
24 | for (var i = 0; i < xValues.length; i++) {
|
25 | dividendSum += (xValues[i] - xMean) * (yValues[i] - yMean);
|
26 | divisorSum += Math.pow(xValues[i] - xMean, 2);
|
27 | }
|
28 | return dividendSum / divisorSum;
|
29 | }
|
30 | }
|
31 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC14QkxJQnJWUi50bXAvYmVuY2hwcmVzcy9zcmMvc3RhdGlzdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sMEJBQTBCO0FBRTdDO0lBQ0UsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsSUFBSTtRQUNqRCxNQUFNLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxPQUFpQjtRQUNwQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxtQkFBbUI7UUFDbkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTywwQkFBMEIsQ0FBQyxPQUFpQixFQUFFLElBQUk7UUFDdkQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLG1CQUFtQjtRQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLE9BQWlCLEVBQUUsS0FBYSxFQUFFLE9BQWlCLEVBQ25ELEtBQWE7UUFDM0MsNERBQTREO1FBQzVELElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzNELFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2xDLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hdGh9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbWF0aCc7XG5cbmV4cG9ydCBjbGFzcyBTdGF0aXN0aWMge1xuICBzdGF0aWMgY2FsY3VsYXRlQ29lZmZpY2llbnRPZlZhcmlhdGlvbihzYW1wbGUsIG1lYW4pIHtcbiAgICByZXR1cm4gU3RhdGlzdGljLmNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uKHNhbXBsZSwgbWVhbikgLyBtZWFuICogMTAwO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZU1lYW4oc2FtcGxlczogbnVtYmVyW10pIHtcbiAgICB2YXIgdG90YWwgPSAwO1xuICAgIC8vIFRPRE86IHVzZSByZWR1Y2VcbiAgICBzYW1wbGVzLmZvckVhY2goeCA9PiB0b3RhbCArPSB4KTtcbiAgICByZXR1cm4gdG90YWwgLyBzYW1wbGVzLmxlbmd0aDtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbihzYW1wbGVzOiBudW1iZXJbXSwgbWVhbikge1xuICAgIHZhciBkZXZpYXRpb24gPSAwO1xuICAgIC8vIFRPRE86IHVzZSByZWR1Y2VcbiAgICBzYW1wbGVzLmZvckVhY2goeCA9PiBkZXZpYXRpb24gKz0gTWF0aC5wb3coeCAtIG1lYW4sIDIpKTtcbiAgICBkZXZpYXRpb24gPSBkZXZpYXRpb24gLyAoc2FtcGxlcy5sZW5ndGgpO1xuICAgIGRldmlhdGlvbiA9IE1hdGguc3FydChkZXZpYXRpb24pO1xuICAgIHJldHVybiBkZXZpYXRpb247XG4gIH1cblxuICBzdGF0aWMgY2FsY3VsYXRlUmVncmVzc2lvblNsb3BlKHhWYWx1ZXM6IG51bWJlcltdLCB4TWVhbjogbnVtYmVyLCB5VmFsdWVzOiBudW1iZXJbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5TWVhbjogbnVtYmVyKSB7XG4gICAgLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltcGxlX2xpbmVhcl9yZWdyZXNzaW9uXG4gICAgdmFyIGRpdmlkZW5kU3VtID0gMDtcbiAgICB2YXIgZGl2aXNvclN1bSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkaXZpZGVuZFN1bSArPSAoeFZhbHVlc1tpXSAtIHhNZWFuKSAqICh5VmFsdWVzW2ldIC0geU1lYW4pO1xuICAgICAgZGl2aXNvclN1bSArPSBNYXRoLnBvdyh4VmFsdWVzW2ldIC0geE1lYW4sIDIpO1xuICAgIH1cbiAgICByZXR1cm4gZGl2aWRlbmRTdW0gLyBkaXZpc29yU3VtO1xuICB9XG59XG4iXX0= |
\ | No newline at end of file |