UNPKG

calculate-correlation

Version:

Calculates the correlation coefficient of two arrays. Simple, with no dependencies

31 lines (22 loc) 1 kB
const calculateAverage = require('./average'); const calculateStdDev = require('./stdDeviation'); const checkInput = require('./utils/checkInput'); const preciseRound = require('./utils/preciseRound'); const manageInput = require('./utils/manageInput'); module.exports = (...args) => { const [arrays, options] = manageInput(args); const isInputValid = checkInput(arrays); if (!isInputValid) throw new Error('Input not valid'); const [x, y] = arrays; const µ = { x: calculateAverage(x), y: calculateAverage(y) }; const s = { x: calculateStdDev(x), y: calculateStdDev(y) }; const addedMultipliedDifferences = x .map((val, i) => (val - µ.x) * (y[i] - µ.y)) .reduce((sum, v) => sum + v, 0); const dividedByDevs = addedMultipliedDifferences / (s.x * s.y); const r = dividedByDevs / (x.length - 1); // return string? if (options.returnString === true) return r.toFixed(options.returnDecimals); // default return return preciseRound(r, options.returnDecimals); };