当前位置:   article > 正文

基于时间序列的回归问题(2)——序列去噪之奇异谱分析(SSA)_奇异谱分析去噪

奇异谱分析去噪

1、基本介绍

奇异谱分析(SSA)是一种用来分析和预测非线性时间序列的有效方法,它适用于分析具有潜在结构的时间序列。对于笔者正在做的基于时间序列的回归项目,对于原始数据,需要对数据进行分析去噪,从而得到较为有规律的数据为下一步的回归做好准备。SSA正是通过对所要研究的时间序列的轨迹矩阵进行分解、重构等操作,提取出时间序列中的不同成分序列(长期趋势,季节趋势,噪声等),从而进行对时间序列进行分析或去噪并用于其他一些任务。

2、基本步骤

SSA分解可分为嵌、分解、分组、重构四大步骤,各步骤基本操作如下图所示:
在这里插入图片描述

2.1 嵌入

SSA的分析对象是中心化的有限长一维时间序列 [x1,x2,…,xN],N为序列长度。首先需要选择合适的窗口长度 L 将原始时间序列进行滞后排列得到轨迹矩阵:
在这里插入图片描述
通常情况下取 L<N/2L<N/2L<N/2。令 K=N−L+1K =N-L+1K=N−L+1,则轨迹矩阵X为L×K的矩阵:
在这里插入图片描述

2.2 分解

接下来对轨迹矩阵进行奇异值分解,注意,这里是对轨迹矩阵进行SVD分解。看资料的时候就是在奇异值分解这里困惑了很久,具体来说就是将 X分解为以下形式:
在这里插入图片描述
奇异值分解(SVD)是矩阵论中的一种经典矩阵分解方式,如果想具体了解原理,请自行百度或打开矩阵论课本回顾一下奇异值分解的原理。
对于程序上的实现,这里笔者由于使用Python编写程序,这里就用了numpy.linalg.svd()这个函数。

2.3 分组

在上一步中,只是把轨迹矩阵分成了三个矩阵,但是并没有对整体时间序列做进一步的分组处理,这一步就是基于SVD做进一步的分组,将原有的时间序列分为多个不相交的组,这里有一点像主成分分析(PCA)中的做法,将原有数据按照重要程度的大小分为多个序列,为下一步的重构做准备。
我们利用SSA去噪,其实就是将原有数据的主要成分留下,将不重要的成分认为是噪声,从而去除噪声。

2.4 重构

根据实际需求,选择前n个主要成分组成新的时间序列,即实现重构,从而实现去噪的目的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/372091
推荐阅读
相关标签
  

闽ICP备14008679号