UNPKG

als-statistics

Version:

Modular JS statistics toolkit for Node.js and the browser: descriptive stats, correlations (Pearson/Spearman/Kendall), t-tests & ANOVA (Student/Welch), reliability (Cronbach’s alpha), regression (linear/logistic), clustering (DBSCAN/HDBSCAN), and table/co

41 lines (34 loc) 1.83 kB
import { EPS } from "../settings.js"; import { Analyze } from "../../lib/index.js"; const { Correlate } = Analyze import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; import { nearlyEqual, hasDataOrSkip, splitGroups, toRecordFromArray } from '../helpers.js' export function testCorrelation(g) { const { X, Y, group, score, before, after, Q1, Q2, Q3, Q4 } = g.data; describe('Correlations (Correlate)', () => { it('Pearson/Spearman/Kendall for X~Y', () => { const corr = new Correlate({ X, Y }); const p = corr.pearson('X', 'Y'); nearlyEqual(p.r, g.correlate.pearson.r, EPS.r, 'pearson.r'); nearlyEqual(p.p, g.correlate.pearson.p, EPS.p, 'pearson.p'); assert.equal(p.df, g.correlate.pearson.df, 'pearson.df'); const s = corr.spearman('X', 'Y'); nearlyEqual(s.r, g.correlate.spearman.r, 5e-6, 'spearman.r'); nearlyEqual(s.p, g.correlate.spearman.p, 5e-6, 'spearman.p'); const k = corr.kendall('X', 'Y'); // ALS Kendall exposes tau, p (and z/t); compare tau and p nearlyEqual(k.tau, g.correlate.kendall.tau, 5e-6, 'kendall.tau'); nearlyEqual(k.p, g.correlate.kendall.p, 5e-6, 'kendall.p'); }); it('Pearson matrix (X|Y|score)', () => { const all = new Correlate({ X, Y, score }).pearson(); // returns map for (const [key, val] of Object.entries(g.correlate.matrix_pearson)) { assert.ok(all[key], `missing pair ${key}`); nearlyEqual(all[key].r, val.r, EPS.r, `matrix pearson r ${key}`); nearlyEqual(all[key].p, val.p, EPS.p, `matrix pearson p ${key}`); assert.equal(all[key].df, val.df, `matrix pearson df ${key}`); } }); }); }