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
31 lines (25 loc) • 1.28 kB
JavaScript
import { EPS } from "../settings.js";
import { Analyze } from "../../lib/index.js";
const { Correlate } = Analyze;
const { CronbachAlpha } = Correlate; // exported class
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { nearlyEqual, hasDataOrSkip, splitGroups, toRecordFromArray } from '../helpers.js'
export function testReliability(g) {
const { X, Y, group, score, before, after, Q1, Q2, Q3, Q4 } = g.data;
describe('Reliability (Cronbach’s alpha)', () => {
it('alpha and alpha-if-deleted', () => {
const items = { Q1, Q2, Q3, Q4 };
const alpha = new CronbachAlpha(items);
nearlyEqual(alpha.alpha, g.reliability.cronbach_alpha, 5e-6, 'alpha');
// Normalize shapes: library may expose array of [name, value] or an object; compare per-item
const libMap = Array.isArray(alpha.ifItemsDeleted)
? Object.fromEntries(alpha.ifItemsDeleted)
: alpha.ifItemsDeleted;
for (const [k, v] of Object.entries(g.reliability.if_items_deleted)) {
assert.ok(k in libMap, `missing alpha-if-deleted for ${k}`);
nearlyEqual(libMap[k], v, 1e-5, `alpha_if_deleted ${k}`);
}
});
});
}