Skip to content

Commit 46eea19

Browse files
committed
WIP: calculation mad value
1 parent 4d0372b commit 46eea19

File tree

3 files changed

+91
-15
lines changed

3 files changed

+91
-15
lines changed

index.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
// create MAD & M estimator algorithms
2-
function getStandardDeviation (arr: number[]) {
3-
const n = arr.length
4-
const mean = arr.reduce((a, b) => a + b) / n
5-
return Math.sqrt(arr.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n)
1+
function getStandardDeviation(arr: number[]) {
2+
const n = arr.length;
3+
const mean = arr.reduce((a, b) => a + b) / n;
4+
return Math.sqrt(arr.map((x) => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / n);
65
}
7-
const median = (arr: number[]): number => {
6+
function calculateMedian(arr: number[]) {
87
const s = [...arr].sort((a, b) => a - b);
98
const mid = Math.floor(s.length / 2);
10-
return s.length % 2 === 0 ? ((s[mid - 1] + s[mid]) / 2) : s[mid];
11-
};
12-
function mad(arr: number[]) {
13-
const med = median(arr);
14-
const abs = arr.map((x) => Math.abs(x - med));
15-
return median(abs);
9+
return s.length % 2 === 0 ? (s[mid - 1] + s[mid]) / 2 : s[mid];
10+
}
11+
function Mestimator(arr: number[], x: number) {
12+
var sumSeries = 0;
13+
for (var i = arr.length - 1; i >= 0; i--) {
14+
sumSeries += Number(Math.abs(arr[i] - x));
15+
}
16+
return (1 / (0.798 * arr.length)) * sumSeries;
17+
}
18+
function Uvalue(s: number, arr: number[]) {
19+
return (1.25 * s) / Math.sqrt(arr.length);
1620
}
17-
var arr = [1, 4, 3, 4, 5, 6, 7, 8, 9, 10]; // median is 5.5
18-
console.log(mad(arr)); // median absolute deviation is 2.5
19-
console.log( getStandardDeviation(arr) * 1.4826 );
2021

22+
var arr = [1, 2, 3, 4, 5, 6, 3, 8, 2, 20];
23+
var standartDeviation = getStandardDeviation(arr);
24+
var madex = Math.abs(standartDeviation - calculateMedian(arr)) * 1.483;
2125

26+
var result = Uvalue(Mestimator(arr, madex), arr);
27+
console.log(result);

package-lock.json

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"description": "",
55
"main": "index.js",
66
"dependencies": {
7+
"mathjs": "^10.6.1",
78
"nodemon": "^2.0.16",
89
"typescript": "^4.7.2"
910
},

0 commit comments

Comments
 (0)