diff --git a/Maths/MeanSquareError.js b/Maths/MeanSquareError.js new file mode 100644 index 0000000000..de9dcfd7f0 --- /dev/null +++ b/Maths/MeanSquareError.js @@ -0,0 +1,26 @@ +// Wikipedia: https://en.wikipedia.org/wiki/Mean_squared_error + +const meanSquaredError = (predicted, expected) => { + if (!Array.isArray(predicted) || !Array.isArray(expected)) { + throw new TypeError('Argument must be an Array') + } + + if (predicted.length !== expected.length) { + throw new TypeError('The two lists must be of equal length') + } + + let err = 0 + + for (let i = 0; i < expected.length; i++) { + err += (expected[i] - predicted[i]) ** 2 + } + + return err / expected.length +} + +// testing +(() => { + console.log(meanSquaredError([1, 2, 3, 4], [1, 2, 3, 4]) === 0) + console.log(meanSquaredError([4, 3, 2, 1], [1, 2, 3, 4]) === 5) + console.log(meanSquaredError([2, 0, 2, 0], [0, 0, 0, 0]) === 3) +})()