【问题标题】:Filter out part of a Time Series without using a threshold在不使用阈值的情况下过滤掉时间序列的一部分
【发布时间】:2019-07-15 16:32:16
【问题描述】:

我有以下时间序列:

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

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

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

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

【问题讨论】:

  • 当你使用任何过滤器时不会有一个隐含的阈值吗?
  • 是的,但主要问题是每个时间序列都有不同的值范围,所以我想找到可以做到这一点的方法,而无需为每个时间序列手动选择阈值。
  • 您是否关心实时过滤流入的数据?还是您已经拥有所有数据并且想要进行后期过滤?
  • 我有一些像你看到的那样的数据窗口,所以我只需要进行后期过滤
  • 是的,你看到的重复模式每次都有或多或少相同的持续时间

标签: python time-series lowpass-filter


【解决方案1】:

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

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

所以你要做的基本上是Fourier analysis


另外:

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

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

Tutorial on Kalman filter

【讨论】:

  • 是的,我在您的方法中看到的唯一问题是,可能平均值会受到具有低值的时间序列的开始和结束的太大影响。
  • 例如,您可以随时间累积数据并创建直方图。比你的直方图中有几个峰值有很多数据。还有一些数据很少的点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多