【发布时间】:2014-11-16 12:41:52
【问题描述】:
我正在尝试找到一种有效的在线算法来计算预定义 时间 窗口(例如最后 5 分钟)中的滚动方差。它需要高效,因为我无法在时间窗口内保留所有数据点,因为它们以每秒 10M 数据点的频率到达。理想情况下,算法也应该是数值稳定的。我知道Welford's algorithm 表示非窗口滚动方差。
我知道 fixed-size 窗口的其他 SO 答案。我相信这是一个不同的问题。
【问题讨论】:
-
不清楚你所说的窗口滚动方差。真的有必要考虑所有样本吗?
-
如果所需精度允许,您可以重新调整值并将它们转换为整数。然后可以使用 64 位累加器精确且可逆地累加 [squared] 值。如果这还不够,请累积 128 位。
-
如果你的时间窗口总是,比如说,一个整数秒,那么你可以计算和存储每秒数据的计数、平均值、方差,并将它们结合起来得到计数,平均值,窗口的方差。
-
@dmuir 我认为您的建议很有道理。通过在第二级进行量化,我们回到了标准固定窗口问题(我们知道如何解决),假设使用每秒计算例如每分钟的平均值在统计上是正确的吗?
-
@dmuir 您如何使用例如的计数、均值和方差60 秒窗口计算相同的一分钟窗口?看起来并不明显,例如在上面的维基百科链接中。
标签: algorithm statistics variance