在x y图中检测尖峰的算法

时间:2014-03-25 08:35:09

标签: python algorithm

想象一下实时x, y图表,其中x是数量而y是时间,间隔为1分钟。每分钟都会在图表中推送一个新值。因此,我希望在图表中出现峰值时检测到。

有两种尖峰:

  1. Sudden Spike
  2. 渐进式飙升
  3. 有没有办法检测它们?

2 个答案:

答案 0 :(得分:2)

因为尖峰距离很短(x2 - x1)。您可以在短的x范围内为{em>一组y值获取standard deviation。如果偏差值相当大,则为峰值。

例如,连续9个y值

4,4,5,10,26,10,5,4,4 标准差 7.19

4,4,5,10,100,10,5,4,4 标准差 31.51

您可以从分析y及其邻居的最高值开始。

答案 1 :(得分:1)

你可以采用y w.r.t的一阶导数。 x使用numpy.diff。获取一组干净的信号并通过使用普通的max(array)获得导数的上限(这是干净信号的最大偏差)来获得它的阈值。

然后你可以对你的实时信号进行同样的审查,检查衍生物。

此外,您可以根据信号的角度对其进行阈值处理,但您需要一个全面的样本大小。你可以使用tan(信号)。

不同的阈值可以为您提供不同类型的峰值。

根据提供的建议,您还可以通过numpy.std(array)计算标准差,然后检查+ - 平均值。当然,使用我提到的衍生物可以更好地看到它。

财务分析中使用的方法是布林带。此链接可为您提供有关它的更多信息:http://sentdex.com/sentiment-analysisbig-data-and-python-tutorials-algorithmic-trading/how-to-chart-stocks-and-forex-doing-your-own-financial-charting/calculate-bollinger-bands-python-graph-matplotlib/

它们基本上是一系列时间段内的移动平均线。您可以使用它们获得更好的阈值集,而不仅仅是标准偏差。