@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
JavaScript
"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