UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

39 lines (38 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calcPValue = exports.pettittTest = void 0; var lodash_1 = require("lodash"); var common_1 = require("../../insight/utils/common"); /** * Pettitt's (1979) method is a rank-based nonparametric test for abrupt changes in a time series. * */ function pettittTest(data) { var n = data === null || data === void 0 ? void 0 : data.length; var rankArr = (0, common_1.rank)(data); var Umax = 0; var UmaxIndex = -1; for (var k = 0; k < n; k += 1) { var U = Math.abs(2 * (0, lodash_1.sumBy)(rankArr.slice(0, k)) - k * (n + 1)); if (U > Umax) { Umax = U; UmaxIndex = k; } } var pvalue = 2 * Math.exp((-6 * Math.pow(Umax, 2)) / (Math.pow(n, 2) + Math.pow(n, 3))); return { index: UmaxIndex, significance: 1 - pvalue, }; } exports.pettittTest = pettittTest; /** * p-value calc in Pettitt */ function calcPValue(data, index) { var n = data === null || data === void 0 ? void 0 : data.length; var rankArr = (0, common_1.rank)(data); var U = Math.abs(2 * (0, lodash_1.sumBy)(rankArr.slice(0, index)) - index * (n + 1)); var pvalue = 2 * Math.exp((-6 * Math.pow(U, 2)) / (Math.pow(n, 2) + Math.pow(n, 3))); return pvalue; } exports.calcPValue = calcPValue;