UNPKG

chi-sq-test

Version:

Chi-Squared hypothesis tests to test distribution fitness for dataset and independence among datasets

37 lines (36 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.independenceTest = void 0; var chi_squared_1 = require("chi-squared"); var utils_1 = require("./utils"); var independenceTest = function (observed, ddof) { var _a; if (ddof === void 0) { ddof = 0; } if (!Array.isArray(observed) || observed.length === 0) { (0, utils_1.throwError)('expected frequency must be an array of size > 0'); } var K = observed === null || observed === void 0 ? void 0 : observed.length; var M = (_a = observed[0]) === null || _a === void 0 ? void 0 : _a.length; var rowSums = Array.apply(null, Array(K)).map(Number.prototype.valueOf, 0); var colSums = Array.apply(null, Array(M)).map(Number.prototype.valueOf, 0); var n = 0; rowSums.forEach(function (rowEle, i) { colSums.forEach(function (colEle, j) { rowSums[i] += observed[i][j]; colSums[j] += observed[i][j]; n += observed[i][j]; }); }); var chiSq = 0; rowSums.forEach(function (rowEle, i) { colSums.forEach(function (colEle, j) { var exp = (rowEle * colEle) / n; chiSq += (Math.pow((observed[i][j] - exp), 2)) / exp; }); }); return { value: chiSq, pValue: 1 - (0, chi_squared_1.cdf)(chiSq, (K - 1) * (M - 1) - ddof), }; }; exports.independenceTest = independenceTest;