阶跃变化检测

机器算法验证 时间序列 方差
2022-03-18 17:52:58

我正在使用非线性最小二乘法将分析函数拟合到一些实验数据。我必须为算法提供一些初始猜测值,所以我试图弄清楚如何自动执行此操作(而不是通过眼睛,这是我一直在做的)。

这是一些模拟数据,通过将正态分布的随机噪声添加到分析函数中创建

这是一些模拟数据,通过将正态分布的随机噪声添加到分析函数中创建

我正在尝试可靠地检测数据中此阶跃变化的位置。通过计算数据点的平均方差并在数据中寻找与该值显着不同的点,我取得了一些有限的成功,但这种方法似乎非常受信噪比的限制。

我希望对我需要研究什么来解决我的问题有一些指导,因为我根本不知道多少统计数据。

谢谢!

- 编辑粘贴 bin 链接到 xy 数据

http://pastebin.com/QTawFex3

4个回答

可能有一些更复杂的方法,但这是我的第一个想法。

您基本上想要对函数求导并找到它最大的位置。在数值上,您可以只取数据点之间的差异,然后找出哪两个点的差异最大。那么这两个点的 x 值的中点就是您变化最大的位置。

这种简单的方法容易受到噪音的影响。因此,您可以先使用不会将数据向右或向左移动的过滤器来过滤数据。如果您使用简单的 FIR 滤波器,则从前到后过滤,然后从后到前过滤结果。结果是一个双重过滤和非移位数据集。然后按照上面的过程找到值之间差异最大的点。

您还可以使用更复杂的数值微分计算,这些计算使用的不仅仅是两点的差值。

您的数据直观地表明渐近(逐渐)变化到新的水平。即使数据不是时间序列,时间序列方法通常也可用于检测这些类型的结构。请张贴您的数据,我可以用我可以使用的“玩具”来证明这一点。如果您的数据是时间序列,那么正如@jason 所反映的,需要有效地处理噪声模型以正确“查看”结构。

收到数据后编辑:

建模通常是一种迭代方法,中间步骤为有用的模型提供有价值的线索。我把你的数据介绍给 AUTOBOX(我帮助开发的玩具之一)。初始图表在此处输入图像描述强烈建议纵向(按时间顺序)数据集,其中 X 系列以固定间隔报告。AUTOBOX 自动建议使用标准 ARIMA 模型(带有干预检测)用差分算子替换非平稳 X。这是实际/拟合/预测图和建议的模型。在此处输入图像描述 在此处输入图像描述

经过检查,另一个可能的模型包含了一个指标变量的滞后结构。我在时间段 76(一个动态预测器,明确允许多达 50 个可能的滞后效应)(过渡的开始)引入了一个脉冲来处理原始 Y 和用户建议的 X 之间的关系,以便更多充分研究 X 的影响,而不是接受 X 的全部搁置。

以下是该方法的实际在此处输入图像描述拟合预测图和确定的稳健传递函数模型。在此处输入图像描述这里有残差图在此处输入图像描述和残差 acf在此处输入图像描述

最终模型捕获了动态预测器的某些滞后和一些脉冲以及合理的内存结构中的动态。

在处理像这样的复杂现实世界数据集时,即使是最强大的分析包也经常需要一些指导,因为没有什么比得上创造性的人类思维了。

一种技术是测试 x 变量的所有值,以确定其前后数据的标准差。对于真正的阶跃函数,这两者的总和将在阶跃位置处最小,并且最小值应该是非线性函数的良好起始参数。

这是原始数据(黑色)、x 之前的标准偏差(蓝色)、x 之后(红色)和最后两个(绿色)的总和的图。

在此处输入图像描述

我承认这个问题很老了。但我想在那里抛出另一种方法。Canny 写了一篇论文(A Computational Approach to Edge Detection),他在二维情况下解决了图像边缘检测的这个问题。如果你愿意,你可以阅读这篇论文,但切入正题,你可以通过执行以下操作获得一个非常好的变化点近似值:

  1. 使用高斯导数对信号进行卷积。

f(x)=xχ2ex2σ2

在哪里χ是比例因子。

  1. 响应的峰值是变化点出现的地方。

在此处输入图像描述

根据我使用这种方法的经验,我发现选择正确的缩放参数很困难。但可能还有更多我不知道的工作。

我总结了 Canny 的论文,并在此处提供了一个示例。