UNPKG

@visactor/vmind

Version:

<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu

53 lines (46 loc) 2.5 kB
"use strict"; var __importDefault = this && this.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.PageHinkleyAlg = exports.pageHinkleyFunc = void 0; const vutils_1 = require("@visactor/vutils"), array_normalize_1 = __importDefault(require("array-normalize")), type_1 = require("../../type"), types_1 = require("../../../../types"), pageHinkley_1 = require("./pageHinkley"), statistics_1 = require("../statistics"), utils_1 = require("../../utils"); function difference(data) { const diff = []; for (let i = 1; i < data.length; i++) diff.push(data[i] - data[i - 1]); return diff; } const pageHinkleyFunc = (context, options) => { const result = [], {seriesDataMap: seriesDataMap, cell: cell, spec: spec} = context, {delta: delta, lambda: lambda, threshold: threshold} = options || {}, {y: celly} = cell, yField = (0, vutils_1.isArray)(celly) ? celly.flat() : [ celly ]; return Object.keys(seriesDataMap).forEach((group => { const dataset = seriesDataMap[group]; yField.forEach((field => { if ((0, utils_1.isPercenSeries)(spec, field)) return; const pageHinkley = new pageHinkley_1.PageHinkley(delta, lambda, threshold), dataList = dataset.map((v => Number(v.dataItem[field]))), {mean: mean, stdDev: stdDev} = (0, statistics_1.getMeanAndstdDev)(dataList), normalizedDataset = (0, array_normalize_1.default)([ ...dataList, mean + 2 * stdDev, mean - 2 * stdDev ]); normalizedDataset.pop(), normalizedDataset.pop(); difference(normalizedDataset).forEach(((d, index) => { pageHinkley.setInput(d) && result.push({ type: type_1.InsightType.Outlier, data: [ dataset[index + 1] ], fieldId: field, value: dataset[index + 1].dataItem[field], significant: 1, seriesName: group }); })); })); })), result; }; exports.pageHinkleyFunc = pageHinkleyFunc, exports.PageHinkleyAlg = { name: "pageHinkley", forceChartType: [ types_1.ChartType.DualAxisChart, types_1.ChartType.LineChart, types_1.ChartType.BarChart, types_1.ChartType.AreaChart ], insightType: type_1.InsightType.Outlier, algorithmFunction: exports.pageHinkleyFunc, supportPercent: !1 }; //# sourceMappingURL=index.js.map