UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

22 lines (21 loc) 1.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cor = cor; const _stats_ts_1 = require("../_helpers/_stats.js"); function cor(x, y) { // discuss at: https://locutus.io/r/cor/ // parity verified: R 4.4 // original by: Kevin van Zonneveld (https://kvz.io) // note 1: Implements R's default Pearson correlation for two plain numeric vectors. // example 1: cor([1, 2, 3], [1, 5, 7]) // returns 1: 0.9819805060619659 // example 2: cor([1, 2, 3], [7, 5, 3]) // returns 2: -1 // example 3: cor([1, 2, 3], [2, 4, 6]) // returns 3: 1 const left = (0, _stats_ts_1.toRNumericArray)(x, 'cor'); const right = (0, _stats_ts_1.toRNumericArray)(y, 'cor'); const covariance = (0, _stats_ts_1.sampleCovariance)(left, right, 'cor'); const denominator = Math.sqrt((0, _stats_ts_1.sampleVariance)(left) * (0, _stats_ts_1.sampleVariance)(right)); return denominator === 0 ? Number.NaN : covariance / denominator; }