locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
22 lines (21 loc) • 1.04 kB
JavaScript
;
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;
}