想象一下实时x, y
图表,其中x
是数量而y
是时间,间隔为1分钟。每分钟都会在图表中推送一个新值。因此,我希望在图表中出现峰值时检测到。
有两种尖峰:
有没有办法检测它们?
答案 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/
它们基本上是一系列时间段内的移动平均线。您可以使用它们获得更好的阈值集,而不仅仅是标准偏差。