我可以使用自回归模型进行信号去噪吗?

2022-03-28 00:00:00 python signal-processing

问题描述

如下所示,我的任务是使用AR建模来去除噪声信号中的伪影。假设我有原始数据中的ECG或EMG。在IEEE上,我发现这可以通过小波变换、巴特沃斯滤波器或经验模式分解来实现。

https://www.kaggle.com/residentmario/denoising-algorithms#Machine-learning-models

原始肌电:

我到底应该如何处理自动回归模型?据我目前了解,它是用来预测数据的。


解决方案

据我目前了解,它用于预测数据。

是的,这是AR(p)模型的常见情况;但为了预测,应该估计它的参数,并根据您提供给它的观测进行预测。因此,您可以拥有所谓的适配值,并将它们用作手头信号的去噪版本。这是因为AR(p)是这样的:

y_t = phi_1 * y_{t-1} + phi_2 * y_{t-2} + ... + phi_p * y_{t-p} + e_t

其中phi_j是要估计的AR参数,e_t被假定为具有一定方差的白噪声。您可以将此e_t视为基础信号顶部的噪声,因此拟合的值是某种程度上的去噪版本。

在软件实施之前,我们应该注意AR(p)是对广义平稳序列进行建模,因此如果存在非平稳行为(例如趋势/季节性),则应该先显式删除它(例如差异),或者隐式删除(例如ARI(p, d)建模)。

这是一个故意发出噪音的信号:

下面是AR(2)模型的拟合值:

这是我从使用AR模型进行去噪的理解;假设模型中的e_t分量代表噪声,因此拟合值给出了去噪&q;版本。

至于编码部分:AR(p)模型与Python库匹配的方式有很多种,但最方便的可能是通过statsmodels.tsa.ar_model.AutoReg

from statsmodels.tsa.ar_model import AutoReg

model = AutoReg(your_data, lags=p)
result = model.fit()
fitted_values = result.fittedvalues

决定AR(p)的顺序完全是另一回事,但一种快速的方法是查看数据的PACF图,看看在哪个延迟之后它会消失,例如

这将指示AR(2)模型。

相关文章