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
28 lines (24 loc) • 874 B
JavaScript
import assert from 'node:assert/strict';
export function nearlyEqual(a, b, tol, msg) {
const da = Math.abs(Number(a) - Number(b));
assert.ok(Number.isFinite(da) && da <= tol, `${msg} | expected≈ ${b}, got ${a}, |Δ|=${da} tol=${tol}`);
}
export function hasDataOrSkip(g) {
if (!g.data || !g.data.X || !g.data.Y) {
assert.fail('Golden JSON has no "data" field. Regenerate goldens with data included.');
}
}
export function splitGroups(scoreArr, groupArr, k = 3) {
const groups = {};
for (let i = 0; i < k; i++) groups[String(i)] = [];
for (let i = 0; i < scoreArr.length; i++) {
const gi = String(groupArr[i]);
if (groups[gi]) groups[gi].push(scoreArr[i]);
}
return groups;
}
export function toRecordFromArray(names, arrays) {
const rec = {};
names.forEach((n, i) => { rec[n] = arrays[i]; });
return rec;
}