基于连续的实时事件流(每个事件的时间容易获知,但每个事件都没有值,它们都是相同的),如何编写一个过滤器/处理器,以输出连续平滑的事件速率?所谓连续,是指可以将其绘制为图形,而不仅仅是每个事件的时间,它会在特定时间提供有关估计事件速率的信息。
我知道“平滑”可能有歧义,但我正在寻找最简单的方法来使生成的图表看起来平滑。例如,在每个事件中不应该有任何大的峰值。
通过取平均值。例如,每次出现事件时将a加1,每秒钟减去1/60的a。这将给您一个简单的平均值,滑动窗口约为一分钟。
这可以通过移动平均实现。取最后N个事件,其中N是您的平均窗口的大小。计算这N个事件中第一个和最后一个事件之间的时间差。如果您以秒为单位测量并希望以每分钟事件数的速率计算,则应将60秒除以以秒表示的时间差,然后乘以N-1。
currentAvgRate = (N-1) * 60 /(最后N个事件之间的时间差)
N值越大,曲线就越平滑,但对局部变化的反应也越小。