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

时间:2018-07-18 08:17:42

标签: javascript graph average flot downsampling

我正在使用Flot Charts显示折线图来编程折线图。

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

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

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

  2. 要加快长时间查询的速度,是否有必要通过在每个月的数据上应用LTTB,并在客户端上应用另一个LTTB来预先计算服务器端的sql表,汇总数据?

1 个答案:

答案 0 :(得分:0)

1:就我而言,平均值的问题在于它们会破坏样本之间的巨大差异-我的峰值和谷值比它们之间发生的事情更为重要。 3buckets算法的要点是尝试保留那些拐点(峰值/谷值),而不必担心始终在数据相似或相同的情况下向您显示。

因此,在我的情况下,数据通常都是相同的(或足够接近–温度数据),直到样品X出现一点小变化(在图表中显示很重要),桶算法才是完美的。

而且-由于桶算法是参数化的,因此您可以更改值(保留多少数据),并查看哪些值使最多的数据消失,同时在视觉上看起来几乎相同,并决定可以在图表之前省去多少数据已经删除了太多数据。

幼稚的方法是抽取(从N个样本中删除X个),但是如果这是您关心的离群值并且该算法对离群值有影响,会发生什么?因此,您可以更改抽取率,以便如果差异太大-则不会破坏该样本。这是该概念的更复杂的版本。

2:取决于您可以多么快速地计算所有数据(如果数据发生更改)以及其他各种因素。这取决于你。从我的角度来看,一旦我的数据成为过去,并且“选择”了一个样本来代表该存储桶的值,就不会更改它,并且我可以保存它,而无需再次进行计算。

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