时间序列分析中的区域/边界检测

时间:2019-05-15 03:05:34

标签: python-3.x distribution

我正在尝试在时间序列分析中找到极限。

例如:

这里有三个(平坦的)峰,并且界限很明确

  |     aaaaaaaaaaaaaaaa                 
  |     aaaaaaaaaaaaaaaa      aaaaaaaaaaaaaaaa           
  |     aaaaaaaaaaaaaaaa      aaaaaaaaaaaaaaaa           aaaaaaaaaaaaaaaaaaaaaa
  |     aaaaaaaaaaaaaaaa      aaaaaaaaaaaaaaaa           aaaaaaaaaaaaaaaaaaaaaa
  |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  |---------------------------------------------------------------------------------
   |    +    |    +    |    +    |    +    |    +    |    +    |    +    |    +    |
   1         10        20        30        40        50        60        70        80

其中的限制是:

1-)5到20

2-)26至42

3-)54至75

但是有时会有一些噪音,例如以下示例:

  |       aa aa a   aa                 
  |      aaa aaaaa  aaa          a  a  a  aa              aa a a a aaaa aa a a
  |     aaaa aaaaaaaaaaa       aaaa aaaaaaaaa      a     aaaaaaaaa aaaaaaaaa aa
  |     aaaaaaaaaaaaaaaa   a  aaaaaaaaaaaaaaaa  aa a  a  aaaaaaaaaaaaaaaaaaaaaa
  |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  |---------------------------------------------------------------------------------
   |    +    |    +    |    +    |    +    |    +    |    +    |    +    |    +    |
   1         10        20        30        40        50        60        70        80

这里的界限没有很好地定义,但可能有3个或4个峰和相关区域。

为解决此问题,我尝试使用平滑的z分数(以查找峰)并尝试找到阈值以上的最长区域。

即使我能够在定义的滞后阶段(滑动窗口)中找到反演(峰值),也无法定义感兴趣的区域。

我想知道高斯混合模型(GMM)或otsu阈值是否足以处理此类数据。

此外,如果它们是未知的(我不知道组件的数量),我该如何定义区域的数量。

还有其他好的算法可以分离多峰分布吗?

0 个答案:

没有答案