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

29 lines (25 loc) 1.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.PageHinkley = void 0; class PageHinkley { constructor(delta = .005, lambda = .55, alpha = .92, threshold = .25, useMin = !1) { this.delta = delta, this.lambda = lambda, this.alpha = alpha, this.threshold = threshold, this.sum = 0, this.xMean = 0, this.num = 0, this.minSum = 0, this.useMin = useMin, this.changeDetected = !1; } _resetParams() { this.num = 0, this.xMean = 0, this.sum = 0, this.minSum = 0; } setInput(x) { return this._detectDrift(x), this.changeDetected; } _detectDrift(x) { isNaN(x) || (this.num += 1, this.xMean = (x + this.xMean * (this.num - 1)) / this.num, this.sum = this.sum * this.alpha + (x - this.xMean), this.sum > 0 ? this.sum -= this.delta : this.sum += this.delta, this.sum < this.minSum && (this.minSum = this.sum), this.changeDetected = (this.useMin ? this.sum - this.minSum : Math.abs(this.sum)) > this.lambda, this.changeDetected && (this._resetParams(), this.changeDetected = Math.abs(x - this.xMean) >= this.threshold)); } } exports.PageHinkley = PageHinkley; //# sourceMappingURL=pageHinkley.js.map