内容发布更新时间 : 2024/12/24 4:36:07星期一 下面是文章的全部内容请认真阅读。
时间序列的小波分析
时间序列(Time Series)是地学研究中经常遇到的问题。在时间序列研究中,时域和频域是常用的两种基本形式。其中,时域分析具有时间定位能力,但无法得到关于时间序列变化的更多信息;频域分析(如Fourier变换)虽具有准确的频率定位功能,但仅适合平稳时间序列分析。然而,地学中许多现象(如河川径流、地震波、暴雨、洪水等)随时间的变化往往受到多种因素的综合影响,大都属于非平稳序列,它们不但具有趋势性、周期性等特征,还存在随机性、突变性以及“多时间尺度”结构,具有多层次演变规律。对于这类非平稳时间序列的研究,通常需要某一频段对应的时间信息,或某一时段的频域信息。显然,时域分析和频域分析对此均无能为力。
20世纪80年代初,由Morlet提出的一种具有时-频多分辨功能的小波分析(Wavelet Analysis)为更好的研究时间序列问题提供了可能,它能清晰的揭示出隐藏在时间序列中的多种变化周期,充分反映系统在不同时间尺度中的变化趋势,并能对系统未来发展趋势进行定性估计。
目前,小波分析理论已在信号处理、图像压缩、模式识别、数值分析和大气科学等众多的非线性科学领域内得到了广泛的应。在时间序列研究中,小波分析主要用于时间序列的消噪和滤波,信息量系数和分形维数的计算,突变点的监测和周期成分的识别以及多时间尺度的分析等。
一、小波分析基本原理
1. 小波函数
小波分析的基本思想是用一簇小波函数系来表示或逼近某一信号或函数。因此,小波函数是小波分析的关键,它是指具有震荡性、能够迅速衰减到零的一类函数,即小波函数?(t)?L(R)且满足:
2????? ?(t)dt?0 (1)
式中,?(t)为基小波函数,它可通过尺度的伸缩和时间轴上的平移构成一簇函数系:
?a,b(t)?a?1/2?(t?b a,b?R,a?0 (2)) 其中,
a式中,?a,b(t)为子小波;a为尺度因子,反映小波的周期长度;b为平移因子,反应时间上的平移。 需要说明的是,选择合适的基小波函数是进行小波分析的前提。在实际应用研究中,应针对具体情况选择所需的基小波函数;同一信号或时间序列,若选择不同的基小波函数,所得的结果往往会有所差异,有时甚至差异很大。目前,主要是通过对比不同小波分析处理信号时所得的结果与理论结果的误差来判定基小波函数的好坏,并由此选定该类研究所需的基小波函数。
2. 小波变换
若?a,b(t)是由(2)式给出的子小波,对于给定的能量有限信号f(t)?L(R),其连续小波变换(Continue Wavelet Transform,简写为CWT)为:
2t?b )dt (3)?Rax?bWf(a,b)为小波变换系数;式中,f(t)为一个信号或平方可积函数;a为伸缩尺度;b平移参数;?()ax?b为?(地学中观测到的时间序列数据大多是离散的,设函数f(k?t),(k=1,2,?,N; ?t)的复共轭函数。
aWf(a,b)?a-1/2f(t)?(为取样间隔),则式(3)的离散小波变换形式为:
Wf(a,b)?a-1/2?t?f(k?t)?(k?1Nk?t-b(4) )
a由式(3)或(4)可知小波分析的基本原理,即通过增加或减小伸缩尺度a来得到信号的低频或高频信息,然后分析信号的概貌或细节,实现对信号不同时间尺度和空间局部特征的分析。
实际研究中,最主要的就是要由小波变换方程得到小波系数,然后通过这些系数来分析时间序列的时频变化特征。
3. 小波方差
将小波系数的平方值在b域上积分,就可得到小波方差,即
Var(a)??Wf(a,b)db (5)
???2小波方差随尺度a的变化过程,称为小波方差图。由式(5)可知,它能反映信号波动的能量随尺度a的分布。因此,小波方差图可用来确定信号中不同种尺度扰动的相对强度和存在的主要时间尺度,即主周期。
二、小波分析实例-时间序列的多时间尺度分析(Multi-time scale analysis)
例题
河川径流是地理水文学研究中的一个重要变量,而多时间尺度是径流演化过程中存在的重要特征。所谓径流时间序列的多时间尺度是指:河川径流在演化过程中,并不存在真正意义上的变化周期,而是其变化周期随着研究尺度的不同而发生相应的变化,这种变化一般表现为小时间尺度的变化周期往往嵌套在大尺度的变化周期之中。也就是说,径流变化在时间域中存在多层次的时间尺度结构和局部变化特征。
表1给出了某流域某水文观测站1966-2004年的实测径流数据。试运用小波分析理论,借助Matlab6.5、suffer8.0和相关软件(Excel等),完成下述任务:⑴计算小波系数;⑵绘制小波系数图(实部、模和模方)、小波方差图和主周期变化趋势图,并分别说明各图在分析径流多时间尺度变化特征中的作用。
83
表1 某流域某水文观测站1966-2004年实测径流数据(×10m) 年份 1966 1967 1968 1969 1970 1971 1972 1973
径流量 1.438 1.151 0.536 1.470 3.476 4.068 2.147 3.931
年份 1974 1975 1976 1977 1978 1979 1980 1981
径流量 2.235 4.374 4.219 2.590 3.350 2.540 0.807 0.573
年份 1982 1983 1984 1985 1986 1987 1988 1989
径流量 0.774 0.367 0.562 3.040 0.304 0.728 0.492 0.007
年份 1990 1991 1992 1993 1994 1995 1996 1997
径流量 1.806 0.449 0.120 0.627 1.658 1.025 0.955 1.341
年份 1998 1999 2000 2001 2002 2003 2004
径流量 1.709 0.000 0.000 2.104 0.009 3.177 0.921
分析
1. 选择合适的基小波函数是前提
在运用小波分析理论解决实际问题时,选择合适的基小波函数是前提。只有选择了适合具体问题的基小波函数,才能得到较为理想的结果。目前,可选用的小波函数很多,如Mexican hat小波、Haar小波、Morlet小波和Meyer小波等。在本例中,我们选用Morlet连续复小波变换来分析径流时间序列的多时间尺度特征。原因如下:
1.1 径流演变过程中包含“多时间尺度”变化特征且这种变化是连续的,所以应采用连续小波变换来进行此项分析。
1.2实小波变换只能给出时间序列变化的振幅和正负,而复小波变换可同时给出时间序列变化的位相和振幅两方面的信息,有利于对问题的进一步分析。
1.3 复小波函数的实部和虚部位相差为π/2,能够消除用实小波变换系数作为判据而产生的虚假振荡,使分析结果更为准确。
2. 绘制小波系数图、小波方差图和主周期变化趋势图是关键
当选择好合适的基小波函数后,下一步的关键就是如何通过小波变换获得小波系数,然后利用相关软件绘制小波系数图、小波方差图和主周期变化趋势图,进而根据上述三种图形的变化识别径流时间序列中存在的多时间尺度。
具体步骤
1. 数据格式的转化
2. 边界效应的消除或减小 3. 计算小波系数
4. 计算复小波系数的实部
5. 绘制小波系数实部等值线图 6. 绘制小波系数模和模方等值线图 7. 绘制小波方差图 8. 绘制主周期趋势图
下面,我们以上题为例,结合软件Matlab 6.5、Suffer 8.0和Excel,详细说明小波系数的计算和各图形的绘制过程,并分别说明各图在分析径流多时间尺度变化特征中的作用。
1. 数据格式的转化和保存
将存放在Excel表格里的径流数据(以时间为序排为一列)转化为Matlab 6.5识别的数据格式(.mat)并存盘。
具体操作为:在Matlab 6.5 界面下,单击“File-Import Data”,出现文件选择对话框“Import”后,找到需要转化的数据文件(本例的文件名为runoff.xls),单击“打开”。等数据转化完成后,单击“Finish”,出现图1显示界面;然后双击图1中的Runoff,弹出“Array Editor: runoff”对话框,选择File文件夹下的“Save Workspace As”单击,出现图2所示的“Save to MAT-File:”窗口,选择存放路径并填写文件名(runoff.mat),单击“保存”并关闭“Save to MAT-File”窗口。
图1 数据格式的转化
图2数据的保存
2. 边界效应的消除或减小
因为本例中的实测径流数据为有限时间数据序列,在时间序列的两端可能会产生“边界效用”。为消除或减小序列开始点和结束点附近的边界效应,须对其两端数据进行延伸。在进行完小波变换后,去掉两
端延伸数据的小变换系数,保留原数据序列时段内的小波系数。本例中,我们利用Matlab 6.5小波工具箱中的信号延伸(Signal Extension)功能,对径流数据两端进行对称性延伸。
具体方法为:在Matlab 6.5界面的“Command Window”中输入小波工具箱调用命令“Wavemenu”,按Enter键弹“Wavelet Toolbox Main Menu”(小波工具箱主菜单)界面(图3);然后单击“Signal Extension”,打开Signal Extension / Truncation窗口,单击“File”菜单下的“Load Signal”,选择runoff.mat文件单击“打开”,出现图4信号延伸界面。Matlab 6.5的Extension Mode菜单下包含了6种基本的延伸方式(Symmetric、Periodic、Zero Padding、Continuous、Smooth and For SWT)和Direction to extend菜单下的3种延伸模式(Both、Left and Right),在这里我们选择对称性两端延伸进行计算。数据延伸的具体操作过程是:在Extension Mode下选择“ Symmetric”,Dircetion to extend下选择“Both”,单击“Extend”按钮进行对称性两端延伸计算,然后单击“File”菜单下的“Save Tranformed Signal”,将延伸后的数据结果存为erunoff.mat文件。
从erunoff文件可知,系统自动将原时间序列数据向前对称延伸12个单位,向后延伸13个单位。
图3 小波工具箱主菜单
图4 径流时间序列的延伸
3. 计算小波系数
选择Matlab 6.5小波工具箱中的Morlet复小波函数对延伸后的径流数据序列(erunoff.mat)进行小波变换,计算小波系数并存盘。
小波工具箱主菜单界面见图3,单击“Wavelet 1-D”下的子菜单“Complex Continuous Wavelet 1-D”,打开一维复连续小波界面,单击“File”菜单下的“Load Signal”按钮,载入径流时间序列erunoff.mat(图5)。图5的左侧为信号显示区域,右侧区域给出了信号序列和复小波变换的有关信息和参数,主要包括数据长度(Data Size)、小波函数类型(Wavelet:cgau、shan、fbsp和cmor)、取样周期(Sampling Period)、周期设置(Scale Setting)和运行按钮(Analyze),以及显示区域的相关显示设置按钮。本例中,我们选择cmor (1-1.5)、取样周期为1、最大尺度为32,单击“Analyze”运行按钮,计算小波系数。然后单击“File” 菜单下的“Save Coefficients”,保存小波系数为
图5 小波变换菜单界面
cerunoff.mat文件。
注意:上面涉及到的数据保存,其格式均为.mat。 4. 计算Morlet复小波系数的实部
将复小波系数转存到Excel表格,去掉两端延伸数据的小波系数,并计算小波系数实部。
在Matlab 6.5界面下的Workspace中将cerunoff.mat文件导入,然后双击打开,全部复制到Excel后去掉延伸数据的小波变换系数(本例中去掉前12列和后13列),或只复制原时间序列的小波变换系数到Excel,最后使用Excel中的IMREAL函数计算原时间序列的小波系数实部(图6)。
图6 复小波系数及实部计算示意图
Excel 中IMREAL函数的调用方法为:单击“插入”菜单下的“函数(F)”按钮,弹出图7所示的“插入函数”窗口,在“搜索函数(S):”框中输入:“IMREAL”后单击“转到”,再单击“确定”,出现函数参数窗口(图8)。在“Inumber”一栏的空白处输入所要计算的数据(图6),单击“确定”即可得到小波系数实部值。
图7 IMEAL 函数调用
图8 IMEAL 函数参数