86 lines
1.9 KiB
JavaScript
Executable File
86 lines
1.9 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
export default {
|
|
|
|
max(values) {
|
|
return Math.max.apply(null, values);
|
|
},
|
|
|
|
min(values) {
|
|
return Math.min.apply(null, values);
|
|
},
|
|
|
|
range(values) {
|
|
return this.max(values) - this.min(values);
|
|
},
|
|
|
|
midrange(values) {
|
|
return this.range(values) / 3;
|
|
},
|
|
|
|
sum(values) {
|
|
let num = 0;
|
|
let len = values.length;
|
|
for (let i = 0; i < len; i++)num += values[i];
|
|
return num;
|
|
},
|
|
|
|
mean(values) {
|
|
return (this.sum(values) / values.length);
|
|
},
|
|
|
|
meanDeviation(values) {
|
|
let mean = this.mean(values);
|
|
let distance = [];
|
|
values.forEach((val) => distance.push(Math.abs(val - mean)));
|
|
return this.mean(distance);
|
|
},
|
|
|
|
average(values) {
|
|
return this.mean(values);
|
|
},
|
|
|
|
median(values, doSortItems = true) {
|
|
if (doSortItems) values.sort((a, b) => a - b);
|
|
let mid = values.length / 2;
|
|
return mid % 1 ? values[mid - 0.5] : (values[mid - 1] + values[mid]) / 2;
|
|
},
|
|
|
|
modes(values) {
|
|
let modeMap = {};
|
|
values.forEach((val) => !modeMap[val] ? modeMap[val] = 1 : modeMap[val]++);
|
|
let modes = [];
|
|
let maxCount = 0;
|
|
for (let key in modeMap) {
|
|
if (modeMap[key] < maxCount) continue;
|
|
if (modeMap[key] > maxCount) {
|
|
modes = [Number(key)];
|
|
maxCount = modeMap[key];
|
|
}
|
|
else if (modeMap[key] == maxCount) {
|
|
modes.push(Number(key));
|
|
}
|
|
}
|
|
return modes;
|
|
},
|
|
|
|
variance(values, mode = "sample") {
|
|
mode = (mode.toLowerCase() == "sample") ? "sample" : "population";
|
|
|
|
let av = this.average(values);
|
|
let result = [];
|
|
values.forEach((num) => {
|
|
let diff = num - av;
|
|
result.push(Math.pow(diff, 2));
|
|
});
|
|
|
|
return (mode == 'sample') ? this.sum(result) / (result.length - 1) : this.average(result);
|
|
},
|
|
|
|
standardDeviation(values, mode = "sample") {
|
|
mode = (mode.toLowerCase() == "sample") ? "sample" : "population";
|
|
return Math.sqrt(this.variance(values, mode));
|
|
},
|
|
|
|
}
|