我想用指数加权移动平均线检测异常。
对于时间t的实例,我将具有数据点(DP)值。
EWMA常数为0.85(假设)
例如,
Time(t) DataPoint(t) EMA(t-1) EMA(t)
1 120 0 102
. . . .
. . . .
. . . .
. . . .
. . . .
10 300 150 277.5
我不想将一系列数据点计算在内。
在任何时候,例如10,我想知道数据点300(在这种情况下)是否是异常。我还有EMA (9)= 150 和EMA(10)= 277.5进行计算(如果需要)
有计算这个的逻辑吗?
提前致谢!
更新
我想到了以下逻辑,但不确定它是否可以肯定
ABS(DP-EMA(新))GT; 3 * SD {EMA(旧),EMA(新)}
(或)
ABS(DP-EMA(新))GT; 3 * EMWSD {EMA(旧),EMA(新)}
DP - 数据点
EMA - 指数加权移动平均值
答案 0 :(得分:1)
很难说DP是或者不是异常,因为你不知道你的EMA(t-1)
是如何发展的。即,如果存在许多数据点,那么它将是比仅存在一个其他数据点更好的标记。
您可以采取的一种方法是更改阈值。基本上,如果EMA
变化超过百分比,您认为它是异常的。然而,如果您的数字非常高并且差异非常小,那么这会受到影响。
您真正需要的是检测异常的标准偏差。您可以查看潜在的跟踪,并使用它来更好地确定您是否有异常。
如果您对将要使用的数据有任何了解,请更新您的问题以获得更有针对性的帮助。
更新:
为了回应您添加的数据,我假设您希望300为异常(您的其他值为120和150)。我上面建议的方法将起作用,但是如果300之后的数字更正常,比如说170可能也被标记为异常。
恕我直言,你对新价值的重视是过分的。我会做相反的事情:
new = .85 * old + .15 * newDP
而不是你拥有的
new = .15 * old + .85 * newDP
如果你改变我的建议,你会得到公平的结果。根据您的总体目标,公平结果可能就足够了。