From 687b505a761f112ba7be7457eae8d5af43f28221 Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 07:57:33 +0530 Subject: [PATCH 1/6] Add an algorithm to find mean absolute deviation --- Maths/MeanAbsoluteDeviation.js | 19 +++++++++++++++++++ Maths/test/MeanAbsoluteDeviation.test.js | 16 ++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Maths/MeanAbsoluteDeviation.js create mode 100644 Maths/test/MeanAbsoluteDeviation.test.js diff --git a/Maths/MeanAbsoluteDeviation.js b/Maths/MeanAbsoluteDeviation.js new file mode 100644 index 0000000000..d212f11548 --- /dev/null +++ b/Maths/MeanAbsoluteDeviation.js @@ -0,0 +1,19 @@ +import { mean } from "./AverageMean.js" +/** + *@function meanAbsoluteDeviation + *@description Calculates the mean absolute deviation of list of numbers + * @param {Integer} data + * @returns meanAbsoluteDeviation([2,34,5,0,-2]) = 10.480 + * @url https://en.wikipedia.org/wiki/Average_absolute_deviation + */ +function meanAbsoluteDeviation (data) { + if (!Array.isArray(data)) { + throw new TypeError('Invalid Input') + } + let absoluteSum = 0 + let meanValue = mean(data) + for (const dataPoint of data) { + absoluteSum += Math.abs(dataPoint - meanValue) + } + return (absoluteSum / data.length).toFixed(3) +} diff --git a/Maths/test/MeanAbsoluteDeviation.test.js b/Maths/test/MeanAbsoluteDeviation.test.js new file mode 100644 index 0000000000..f79430a90d --- /dev/null +++ b/Maths/test/MeanAbsoluteDeviation.test.js @@ -0,0 +1,16 @@ +import {meanAbsoluteDeviation} from '../MeanAbsoluteDeviation.js' + +describe('tests for mean absolute deviation', () => { + it('should be a function', () => { + expect(typeof meanAbsoluteDeviation).toEqual('function') + }) + + it('should throw an invalid input error', () => { + expect(() => meanAbsoluteDeviation('fgh')).toThrow() + }) + + it('should return the mean absolute devition of an array of numbers', () => { + const meanAbDev = meanAbsoluteDeviation([2,34,5,0,-2]) + expect(meanAbDev).toBe(10.480) + }) +}) From e98a2f690e71238025ac4a1c95c5c951c3b73ccb Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 08:09:30 +0530 Subject: [PATCH 2/6] Update MeanAbsoluteDeviation.js --- Maths/MeanAbsoluteDeviation.js | 4 ++++ Maths/test/MeanAbsoluteDeviation.test.js | 2 ++ 2 files changed, 6 insertions(+) diff --git a/Maths/MeanAbsoluteDeviation.js b/Maths/MeanAbsoluteDeviation.js index d212f11548..4f9ea0704d 100644 --- a/Maths/MeanAbsoluteDeviation.js +++ b/Maths/MeanAbsoluteDeviation.js @@ -17,3 +17,7 @@ function meanAbsoluteDeviation (data) { } return (absoluteSum / data.length).toFixed(3) } + +export { + meanAbsoluteDeviation +} diff --git a/Maths/test/MeanAbsoluteDeviation.test.js b/Maths/test/MeanAbsoluteDeviation.test.js index f79430a90d..7ad210ad56 100644 --- a/Maths/test/MeanAbsoluteDeviation.test.js +++ b/Maths/test/MeanAbsoluteDeviation.test.js @@ -14,3 +14,5 @@ describe('tests for mean absolute deviation', () => { expect(meanAbDev).toBe(10.480) }) }) + +console.log(typeof meanAbsoluteDeviation) \ No newline at end of file From d5329c4c436ef2c4d9cdd601ba08ac5512e1b3b2 Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 08:15:04 +0530 Subject: [PATCH 3/6] Update MeanAbsoluteDeviation.js --- Maths/MeanAbsoluteDeviation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maths/MeanAbsoluteDeviation.js b/Maths/MeanAbsoluteDeviation.js index 4f9ea0704d..208e181e0d 100644 --- a/Maths/MeanAbsoluteDeviation.js +++ b/Maths/MeanAbsoluteDeviation.js @@ -15,7 +15,7 @@ function meanAbsoluteDeviation (data) { for (const dataPoint of data) { absoluteSum += Math.abs(dataPoint - meanValue) } - return (absoluteSum / data.length).toFixed(3) + return parseFloat((absoluteSum / data.length).toFixed(3)) } export { From 3c09bd4e54fc9fec5eceb61a32117f6132a456f7 Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 08:15:38 +0530 Subject: [PATCH 4/6] Update MeanAbsoluteDeviation.test.js --- Maths/test/MeanAbsoluteDeviation.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Maths/test/MeanAbsoluteDeviation.test.js b/Maths/test/MeanAbsoluteDeviation.test.js index 7ad210ad56..f79430a90d 100644 --- a/Maths/test/MeanAbsoluteDeviation.test.js +++ b/Maths/test/MeanAbsoluteDeviation.test.js @@ -14,5 +14,3 @@ describe('tests for mean absolute deviation', () => { expect(meanAbDev).toBe(10.480) }) }) - -console.log(typeof meanAbsoluteDeviation) \ No newline at end of file From 65e5fdee2c9d04e13b030c81db020289335e6523 Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 08:22:30 +0530 Subject: [PATCH 5/6] Update MeanAbsoluteDeviation.test.js --- Maths/MeanAbsoluteDeviation.js | 4 ++-- Maths/test/MeanAbsoluteDeviation.test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Maths/MeanAbsoluteDeviation.js b/Maths/MeanAbsoluteDeviation.js index 208e181e0d..a51647ca8b 100644 --- a/Maths/MeanAbsoluteDeviation.js +++ b/Maths/MeanAbsoluteDeviation.js @@ -1,4 +1,4 @@ -import { mean } from "./AverageMean.js" +import { mean } from './AverageMean.js' /** *@function meanAbsoluteDeviation *@description Calculates the mean absolute deviation of list of numbers @@ -11,7 +11,7 @@ function meanAbsoluteDeviation (data) { throw new TypeError('Invalid Input') } let absoluteSum = 0 - let meanValue = mean(data) + const meanValue = mean(data) for (const dataPoint of data) { absoluteSum += Math.abs(dataPoint - meanValue) } diff --git a/Maths/test/MeanAbsoluteDeviation.test.js b/Maths/test/MeanAbsoluteDeviation.test.js index f79430a90d..25e81215e2 100644 --- a/Maths/test/MeanAbsoluteDeviation.test.js +++ b/Maths/test/MeanAbsoluteDeviation.test.js @@ -1,4 +1,4 @@ -import {meanAbsoluteDeviation} from '../MeanAbsoluteDeviation.js' +import { meanAbsoluteDeviation } from '../MeanAbsoluteDeviation.js' describe('tests for mean absolute deviation', () => { it('should be a function', () => { @@ -10,7 +10,7 @@ describe('tests for mean absolute deviation', () => { }) it('should return the mean absolute devition of an array of numbers', () => { - const meanAbDev = meanAbsoluteDeviation([2,34,5,0,-2]) + const meanAbDev = meanAbsoluteDeviation([2, 34, 5, 0, -2]) expect(meanAbDev).toBe(10.480) }) }) From 09c0c67a8a7a4a8ebc495879a83048475c5b8213 Mon Sep 17 00:00:00 2001 From: Prashal Ruchiranga Date: Tue, 11 Oct 2022 13:06:26 +0530 Subject: [PATCH 6/6] Updated MeanAbsoluteDeviation.js and MeanAbsoluteDeviation.test.js --- Maths/MeanAbsoluteDeviation.js | 2 +- Maths/test/MeanAbsoluteDeviation.test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Maths/MeanAbsoluteDeviation.js b/Maths/MeanAbsoluteDeviation.js index a51647ca8b..14248dd482 100644 --- a/Maths/MeanAbsoluteDeviation.js +++ b/Maths/MeanAbsoluteDeviation.js @@ -15,7 +15,7 @@ function meanAbsoluteDeviation (data) { for (const dataPoint of data) { absoluteSum += Math.abs(dataPoint - meanValue) } - return parseFloat((absoluteSum / data.length).toFixed(3)) + return absoluteSum / data.length } export { diff --git a/Maths/test/MeanAbsoluteDeviation.test.js b/Maths/test/MeanAbsoluteDeviation.test.js index 25e81215e2..33fa38d2f6 100644 --- a/Maths/test/MeanAbsoluteDeviation.test.js +++ b/Maths/test/MeanAbsoluteDeviation.test.js @@ -11,6 +11,6 @@ describe('tests for mean absolute deviation', () => { it('should return the mean absolute devition of an array of numbers', () => { const meanAbDev = meanAbsoluteDeviation([2, 34, 5, 0, -2]) - expect(meanAbDev).toBe(10.480) + expect(meanAbDev).toBe(10.479999999999999) }) })