gpt4 book ai didi

algorithm - 如何识别事件发生率(移动平均)是否超过阈值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:30 28 4
gpt4 key购买 nike

编辑添加信息

最初这只是一个通用算法和语言/平台不可知论者。但是,我将自己回答这个问题,而答案实际上是特定于所使用的工具的。

这是用于 z/OS 下的 IBM 大型机上的事件检测,使用运行 REXX 脚本的 Ops/MVS 自动化工具。

因此发布的答案可能适用于 Python、Perl、bash、Java 等;只是在这种特殊情况下使用的产品具有可以达到目的的特定功能。

添加信息结束

我的问题与此非常相似:

How to calculate continuous smooth event rate based on event times?

这将是一个答案:

This can be implemented with a moving average. Take your last N events where N is the size of your averaging window. Compute the time difference between the first and the last of these N events. If you are measuring in seconds and want the rate in event per minute you would then divide 60 seconds by your time difference expressed in seconds and you multiply by N-1.

除非我想避免存储有关以前事件的信息。我也只对移动平均线超过阈值感兴趣,所以我对保持利率趋势不感兴趣。

例如,我想知道我是否每分钟获得超过 3 个事件。这是我的第一种方法:

  1. 当第一个事件发生时,我创建一个计数 1 并记录开始时间。
  2. 当另一个事件到来时,我递增计数并计算计数和耗时的速率
  3. 如果速率超过允许值,则生成警报。

我意识到这是行不通的,因为如果你一周前有一个事件,然后直到最后一分钟有 10 个事件才开始,平均“比率”是一周 11,即 3.6/天,而不是当前的比率10/分钟。

所以我正在考虑尝试以下方法:

  1. 当第一个事件发生时,我创建一个计数 1 并记录开始时间。
  2. 当另一个事件到来时,如果自上一个事件以来的时间超过了我想要测量速率的时间间隔(在我的示例中为 1 分钟),我实际上丢弃了上一个事件并记录了 1 和当前的计数时间作为新的开始时间(因为如果自上次事件以来已经超过 1 分钟,则速率不能超过 x/min,对吗?)。
  3. 如果自上次事件以来的时间没有超过监控间隔,增加计数并根据计数计算速率和耗时
  4. 如果速率超过允许值,则生成警报。

这看起来很简单,但是关于 SO 的其他帖子(特别是这个问题:Estimating rate of occurrence of an event with exponential smoothing and irregular events 和它被接受的答案:https://stackoverflow.com/a/23617678/1430420)似乎暗示它比我想象的要多得多。

最佳答案

Ops/MVS 通过“OPSTHRSH”函数内置了此功能:

https://docops.ca.com/ca-opsmvs/13-5/en/reference-information/command-and-function-reference/ops-rexx-built-in-functions/opsthrsh-function

对于这个特定场景,我们可以按如下方式调用它:

if OPSTHRSH('A',60) > 3 then do something...

OPSTHRESH('A',60) 将返回当前事件在 60 秒内针对当前地址空间(任务)触发的次数。如果这个值超过了我的触发水平,那就采取行动。收到第一个事件 60 秒后,事件计数将重置。

关于algorithm - 如何识别事件发生率(移动平均)是否超过阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358343/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com