2010-12-10 54 views
1

我有一组数据流,我想分析这些数据是否突变,并可能忽略数据中的尖峰/噪声。我研究过移动平均数,winsorised方法和其他几种可能的解决方案,包括控制系统中的PID控制器,小马库和numpy以寻求如何解决这个问题的线索。检测流数据中的更改

示例数据集如下。
22.0,22.0,22.0,22.0 ,20.8806130178211,20.8806130178211,20.8806130178211,20.8806130178211,20.8806130178211,20.8806130178211,21.840329667841555,21.840329667841555,20.8806130178211, 20.8806130178211,20.8806130178211,20.8806130178211,20.8806130178211,20.8806130178211,21.840329667841555, 21.840329667841555,21.840329667841555, 21.840329667841555,22.80350850198276

理想情况下,我想检测第1部分,第3部分和第4部分的值以粗体显示。第二部分可以像对待一样。

寻找一种优雅的数学/算法解决方案,其工作原理类似于移动平均值,因为如果数据长时间不变(窗口是动态的),它将忽略旧数据。在上述数据的情况下,当考虑下一个数据窗口20.8806130178211时,初始值22被忽略。

解决方案(程序/类)应该能够接受新的数据输入值(22.0232),并且如果计算出的值在可接受的范围内,即返回true或false的值, 。

感谢
SFK

回答

1

也许比看着你的数据的移动平均一个更好的办法是看在你的数据变化的移动平均线。因此,您可以将您的数据集的第一个差异识别出来,并确定大于某个阈值的值。