从时间序列数据中获取区间

我有一个比较奇怪的问题。我目前正在处理时间序列数据,数据集中有几个峰值。这些数据是通过中子密度记录仪收集的,它描述了传感器在一段时间内持续记录的事件。数据中的峰值对应于机器在钻孔中下降时的一些有趣的区间。因此,这些峰值很重要。然而,重要的不仅仅是峰值,而是整个区间(或者至少如我所描述的;请参见我附件中的图表)。现在我的问题是,是否有信号处理方法(最好是用Python)可以让我将这个信号划分成不同的区间,每个区间对应于局部最小值/最大值?

我的初步方法是使用Kleinberg 2002年描述的突发检测算法,但我没有成功,所以我想听听其他人的意见。

这是原始数据:

目标事件比例与时间的图表

这是我想做的:

带注释的图表


回答:

由于原始数据不可用,我生成了一些测试数据。方法如下。如果数据是一组带跳跃的平台,通过检查移动窗口的标准偏差,将在跳跃处产生峰值。通过阈值隔离峰值。通过查看应用移动平均后的数据来估计跳跃。这为拟合提供了一个良好的起点。作为拟合函数,我再次使用我最喜欢的tanh函数。

结果如下所示:

这将生成以下图表:

输入图片描述

一些较小的跳跃没有被检测到,但这应该是预期的。此外,整个过程不是很快。由于阈值,随着x的增大,初始猜测会变得更差,跳跃越多,情况越糟。最后,一系列小的跳跃没有被检测到,以至于数据中的结果斜率被拟合为一个大的平台,具有明显的大误差。可以引入额外的检查来解决这个问题,并添加跳跃位置以进行相应的拟合。

还要注意,窗口大小的选择决定了两个跳跃被检测为独立跳跃的最小距离。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注