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