如何找到图表何时达到峰值和平台期?

机器算法验证 时间序列 极值
2022-03-15 21:27:43

这听起来很基本,但我有这个问题:我有一个窗口大小为 300 的数据队列。新数据在一端添加,旧值从另一端删除。

我预计队列数据或多或少保持一致,例如:10,12,15,10,20,然后开始急剧上升:15,10,20,22,25,26,28,30,32...一直到150左右。那里的数据可能会有点波动,然后会以类似的斜率(120,118,116,115...)一直下降到 20 左右。

我试图以编程方式识别此数据系列中的转折点,但我的代码检测到峰值的频率比我想的要高。如何确定图表何时上升、何时达到确定的转折点以及何时开始下降?我应该试着看看变化率的变化率吗?

2个回答

查看SiZer(重要的零交叉点......或斜坡,我不记得了),尽管可以说它更像是一个横截面而不是时间序列工具。想法是平滑不同带宽的数据(变化大约三个数量级),并应用一些局部测试来查看局部回归的斜率是显着正还是负(或未定)。它产生了令人信服的图片,可以帮助您确定存在哪些特征。(我很惊讶没有 R 实现,只有 Matlab。)

如果您知道这是预期的确切模式,那么您可以寻找这个确切的模式,但您会错过其他模式。所以。如果您知道峰值将是 150,那么您可以寻找 2 个或 3 个或 4 个或(无论有多少)连续的 150 值。但是您说“左右” - “左右”有多大?也许峰值被定义为“超过 130 的 3 个连续值”,或者它可能是“超过 140 的 5 个连续值中的 3 个”。那是你来决定的。

另一方面,如果您只是在寻找一些通用程序来检测峰值 - 好吧,已经看过了。有很多平滑方法(例如黄土、各种样条曲线、移动平均线等)。我不是一个领域的专家,但有很多关于这方面的文献。