下采样时间序列:平均与最大三角形三桶

Klu*_*lun 6 javascript average graph flot downsampling

我正在使用浮点图来编程折线图来显示时间序列。

为了减少要显示的点数,我通过对同一小时内的每个数据点应用平均函数来进行下采样。

然而最近,我发现了最大三角三桶算法: http://flot.base.is/

  1. 使用这种算法与使用平均值(每分钟、每小时、每天……)等简单函数有什么区别?

  2. 为了加速长时间查询,在服务器端预先计算一个sql表,通过对每个月的数据应用LTTB,并让客户端对聚合数据应用另一个LTTB,是否有意义?

det*_*tch 2

1:就我的目的而言,平均值的问题在于它们消除了样本之间的巨大差异——我的峰值和谷值比它们之间发生的情况更重要。3buckets 算法的要点是尝试保留这些拐点(峰/谷),同时不用担心每次都会显示数据相似或相同。

因此,在我的例子中,直到样本 X 之前数据通常都是相同的(或足够接近——温度数据),此时在图表中显示小的百分比变化非常重要,因此桶算法是完美的。

另外,由于桶算法是参数化的,因此您可以更改值(要保留多少数据)并查看哪些值会破坏最多的数据,同时在视觉上看起来几乎相同,并决定在图形消失之前可以放弃多少数据删除了很多数据。

最简单的方法是抽取(从 N 个样本中删除 X 个),但如果您关心的是异常值并且算法消除了异常值,会发生什么情况?然后你改变你的抽取,这样如果差异太大,那么它就不会破坏该样本。这是该概念的更复杂版本。

2:取决于您计算所有数据的速度、数据是否发生变化以及各种其他因素。这取决于你。从我的角度来看,一旦我的数据成为过去并且“选择”了一个样本来代表桶的价值,它就不会改变,我可以保存它并且永远不会再次重新计算。

由于你的问题有点老了,你最终做了什么?