首页 > 解决方案 > 在不使用阈值的情况下过滤掉时间序列的一部分

问题描述

我有以下时间序列: 在此处输入图像描述

我想要做的是过滤掉我用橙色圈起来的点(也许给他们一个 nan 值)。假设将它们过滤掉的主要原因是因为不遵循其余时间序列的一般模式,并且它们具有非常不同的值。是否有任何过滤器,如低通滤波器或任何其他可用于过滤掉它们的想法?

在这种情况下,一切都会正常,所以我不会过滤掉时间序列的任何部分:

在此处输入图像描述

由于我只对时间序列中具有红点的部分感兴趣,因此显示该特定模式的部分,我不在乎在过滤掉橙色圈出的部分的过程中是否也开始和结束时间序列将被过滤掉。

我不想使用阈值的原因是每个时间序列的值范围都不同。

标签: pythontime-serieslowpass-filter

解决方案


因此,由于您的数据是周期性的,您可以尝试将多个正弦的组合拟合到您的数据中。

这里所示,任何振荡函数都可以通过正弦函数的组合来近似。

所以你要做的基本上是傅立叶分析


除了:

我能想到的是计算一个相对较长时期的平均值。比您可以指定围绕该平均值的间隔。超出该区间的所有内容都被指定为异常值。

你也可以做一个卡尔曼滤波器方法。假设您的数据是恒定的 + 一些高斯噪声。它总是会适应新的水平并在一段时间内保持不变。

卡尔曼滤波器教程


推荐阅读