UNPKG

chi-sq-test

Version:

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

26 lines (25 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.goodnessOfFit = void 0; var chi_squared_1 = require("chi-squared"); var utils_1 = require("./utils"); var goodnessOfFit = function (observed, expected, ddof) { if (ddof === void 0) { ddof = 0; } if (!(observed === null || observed === void 0 ? void 0 : observed.length)) { (0, utils_1.throwError)('expected frequency must be an array of size > 0'); } if (!expected && (observed === null || observed === void 0 ? void 0 : observed.length) > 0) { expected = Array.apply(null, Array(observed.length)).map(Number.prototype.valueOf, 0); // expected = new Array(observed.length).fill(observed.reduce(reducer) / observed.length); } else if ((expected === null || expected === void 0 ? void 0 : expected.length) !== observed.length) { (0, utils_1.throwError)('Observed and expected frequency arrays must be of same length'); } // @ts-ignore var chisq = observed.reduce(function (a, c, i) { return a + ((Math.pow((c - expected[i]), 2)) / expected[i]); }, 0); return { value: chisq, pValue: 1 - (0, chi_squared_1.cdf)(chisq, observed.length - 1 - ddof), }; }; exports.goodnessOfFit = goodnessOfFit;