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

25 lines (22 loc) 914 B
import test from 'node:test'; import assert from 'node:assert/strict'; import Dbscan from '../../lib/analyze/dbscan/dbscan.js'; test('DBSCAN: all noise when eps too small', () => { const data = { A:[0,0,0], B:[10,10,10], C:[-10,-10,-10] }; const db1 = new Dbscan(data, { eps: 0.00001, minPts: 2, metric:'mad' }); // labels: -1 noise assert.ok(db1.labels.every(l => l === -1)); }); test('DBSCAN: two clusters with moderate eps', () => { const data = { A:[0,0,0], B:[0,0.1,0], C:[10,10,10], D:[10.1,10,10] }; const db = new Dbscan(data, { eps: 0.3, minPts: 2, metric:'mad' }); // should produce at least 2 clusters const distinct = [...new Set(db.labels.filter(l => l > 0))]; assert.ok(distinct.length >= 2); // distances symmetric for (let i=0;i<db.distances.length;i++){ for (let j=0;j<db.distances.length;j++){ assert.equal(db.distances[i][j], db.distances[j][i]); } } });