检测彼此偏离的两个数据流

时间:2015-03-13 00:27:47

标签: algorithm math statistics dynamic-programming

前几天出现了一个有趣的问题。我有两个连续输出的数据流。说,A和B.(不同的值)

在理想世界中,A和B正好相反。如果A增加x%,那么B将减少x%,反之亦然。

然而,在我的世界里,他们并非100%相对。这意味着有时A可以增加X%,而B只能减少X-0.Y%。反之亦然B增加。差异很小但可以检测到。

我需要能够检测到哪一个数据流的减少比另一个减少0.3%。因此,例如,如果A = 30,则B = 100.并且A的下一个数据点= 33(增加10%),B = 89.5(减少10.5%)。然后我需要知道这已经发生了。因为两者之间的差异大于0.3%。

如果我知道原始值,问题本身就很容易了。但是,这是一个连续的数据流,我没有参考点。我不需要绝对准确的答案,而是一个相对的答案。

例如,如果我们决定流式传输数据,我怎么知道“嘿,伙计,他们出了故障,小心”而不知道他们曾经是什么?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找correlation coefficient

  1. 记住两个流的最后N个值

    • 循环缓冲区非常适用于此
  2. 计算相关系数

  3. 检测相似性下降

    • 例如:
    • if (correlation_coefficient>-0.997) return "drop below 99.7%";