Add an algorithm to find mean absolute deviation (#1165)

This commit is contained in:
Prashal Ruchiranga
2022-10-12 10:26:09 +05:30
committed by GitHub
parent 514c7c4c9f
commit 564ee8527a
2 changed files with 39 additions and 0 deletions

View 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
}

View 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)
})
})