前几天出现了一个有趣的问题。我有两个连续输出的数据流。说,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%。
如果我知道原始值,问题本身就很容易了。但是,这是一个连续的数据流,我没有参考点。我不需要绝对准确的答案,而是一个相对的答案。
例如,如果我们决定流式传输数据,我怎么知道“嘿,伙计,他们出了故障,小心”而不知道他们曾经是什么?
答案 0 :(得分:0)
我认为您正在寻找correlation coefficient
记住两个流的最后N个值
计算相关系数
检测相似性下降
if (correlation_coefficient>-0.997) return "drop below 99.7%";