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
JavaScript
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]);
}
}
});