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

Can I use AutoRegression modelling for signal denoising?

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

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

原始肌电图:

我应该使用自回归模型做什么?据我了解,它现在用于预测数据。

As I understand it right now it is used to forecast the data.

是的,这是 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 分量表示噪声,因此拟合值给出“去噪”版本。

至于编码部分:有很多方法可以用 Python 库拟合 AR(p) 模型,但可能最方便的方法是通过 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) 模型。