赞
踩
奇异谱分析(SSA)是一种用来分析和预测非线性时间序列的有效方法,它适用于分析具有潜在结构的时间序列。对于笔者正在做的基于时间序列的回归项目,对于原始数据,需要对数据进行分析去噪,从而得到较为有规律的数据为下一步的回归做好准备。SSA正是通过对所要研究的时间序列的轨迹矩阵进行分解、重构等操作,提取出时间序列中的不同成分序列(长期趋势,季节趋势,噪声等),从而进行对时间序列进行分析或去噪并用于其他一些任务。
SSA分解可分为嵌、分解、分组、重构四大步骤,各步骤基本操作如下图所示:
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的矩阵:
接下来对轨迹矩阵进行奇异值分解,注意,这里是对轨迹矩阵进行SVD分解。看资料的时候就是在奇异值分解这里困惑了很久,具体来说就是将 X分解为以下形式:
奇异值分解(SVD)是矩阵论中的一种经典矩阵分解方式,如果想具体了解原理,请自行百度或打开矩阵论课本回顾一下奇异值分解的原理。
对于程序上的实现,这里笔者由于使用Python编写程序,这里就用了numpy.linalg.svd()这个函数。
在上一步中,只是把轨迹矩阵分成了三个矩阵,但是并没有对整体时间序列做进一步的分组处理,这一步就是基于SVD做进一步的分组,将原有的时间序列分为多个不相交的组,这里有一点像主成分分析(PCA)中的做法,将原有数据按照重要程度的大小分为多个序列,为下一步的重构做准备。
我们利用SSA去噪,其实就是将原有数据的主要成分留下,将不重要的成分认为是噪声,从而去除噪声。
根据实际需求,选择前n个主要成分组成新的时间序列,即实现重构,从而实现去噪的目的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。