mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
Add an algorithm to find mean absolute deviation (#1165)
This commit is contained in:

committed by
GitHub

parent
514c7c4c9f
commit
564ee8527a
23
Maths/MeanAbsoluteDeviation.js
Normal file
23
Maths/MeanAbsoluteDeviation.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
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
|
||||||
|
const meanValue = mean(data)
|
||||||
|
for (const dataPoint of data) {
|
||||||
|
absoluteSum += Math.abs(dataPoint - meanValue)
|
||||||
|
}
|
||||||
|
return absoluteSum / data.length
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
meanAbsoluteDeviation
|
||||||
|
}
|
16
Maths/test/MeanAbsoluteDeviation.test.js
Normal file
16
Maths/test/MeanAbsoluteDeviation.test.js
Normal file
@ -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.479999999999999)
|
||||||
|
})
|
||||||
|
})
|
Reference in New Issue
Block a user