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
JavaScript
;
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;