UNPKG

als-statistics

Version:

A powerful and lightweight JavaScript library for descriptive statistics, regression, clustering, outlier detection, and noise analysis using a flexible table/column architecture.

30 lines (25 loc) 1.07 kB
class CronbachAlpha { static cronbachAlpha(table, obj = {}) { const { columnsN } = table; if (columnsN < 2) throw new Error("For Alpha Cronbach needs >=2 ratio columns."); obj.sumOfVariances = table.descriptive('varianceSample').sum; obj.sumColumnVariance = table.compute(row => Object.values(row).reduce((s, v) => s + v, 0)).varianceSample; obj.bessel = columnsN / (columnsN - 1); obj.alpha = obj.sumColumnVariance === 0 ? 0 : obj.bessel * (1 - obj.sumOfVariances / obj.sumColumnVariance); return obj; } constructor(table) { this.table = table; CronbachAlpha.cronbachAlpha(table, this); } get perColumn() { return this.ifItemsDeleted(); } ifItemsDeleted(columnFilter) { const result = {}; for (let colName in this.table.columns) { const filter = columnFilter || ['-' + colName]; result[colName] = CronbachAlpha.cronbachAlpha(this.table.clone(true, filter)).alpha; } return result; } } module.exports = CronbachAlpha;