时间序列的小波分析时间序列(TimeSeries)是地学研究中经常遇到的问题。在时间序列研究中,时域和频域是常用的两种基本形式。其中,时域分析具有时间定位能力,但无法得到关于时间序列变化的更多信息;频域分析(如Fourier变换)虽具有准确的频率定位功能,但仅适合平稳时间序列分析。然而,地学中许多现象(如河川径流、地震波、暴雨、洪水等)随时间的变化往往受到多种因素的综合影响,大都属于非平稳序列,它们不但具有趋势性、周期性等特征,还存在随机性、突变性以及“多时间尺度”结构,具有多层次演变规律。对于这类非平稳时间序列的研究,通常需要某一频段对应的时间信息,或某一时段的频域信息。显然,时域分析和频域分析对此均无能为力。20世纪80年代初,由Morlet提出的一种具有时-频多分辨功能的小波分析(WaveletAnalysis)为更好的研究时间序列问题提供了可能,它能清晰的揭示出隐藏在时间序列中的多种变化周期,充分反映系统在不同时间尺度中的变化趋势,并能对系统未来发展趋势进行定性估计。目前,小波分析理论已在信号处理、图像压缩、模式识别、数值分析和大气科学等众多的非线性科学领域内得到了广泛的应。在时间序列研究中,小波分析主要用于时间序列的消噪和滤波,信息量系数和分形维数的计算,突变点的监测和周期成分的识别以及多时间尺度的分析等。一、小波分析基本原理1.小波函数小波分析的基本思想是用一簇小波函数系来表示或逼近某一信号或函数。因此,小波函数是小波分析的关键,它是指具有震荡性、能够迅速衰减到零的一类函数,即小波函数)R(L)t(2且满足:0dt)t((1)式中,)t(为基小波函数,它可通过尺度的伸缩和时间轴上的平移构成一簇函数系:)abt(a)t(2/1b,a其中,0aR,ba,(2)式中,)t(b,a为子小波;a为尺度因子,反映小波的周期长度;b为平移因子,反应时间上的平移。需要说明的是,选择合适的基小波函数是进行小波分析的前提。在实际应用研究中,应针对具体情况选择所需的基小波函数;同一信号或时间序列,若选择不同的基小波函数,所得的结果往往会有所差异,有时甚至差异很大。目前,主要是通过对比不同小波分析处理信号时所得的结果与理论结果的误差来判定基小波函数的好坏,并由此选定该类研究所需的基小波函数。2.小波变换若)t(b,a是由(2)式给出的子小波,对于给定的能量有限信号)R(L)t(f2,其连续小波变换(ContinueWaveletTransform,简写为CWT)为:dt)abt(f(t)a)b,a(WR2/1-f(3)式中,)b,a(Wf为小波变换系数;f(t)为一个信号或平方可积函数;a为伸缩尺度;b平移参数;)abx(为)abx(的复共轭函数。地学中观测到的时间序列数据大多是离散的,设函数)tk(f,(k=1,2,…,N;t为取样间隔),则式(3)的离散小波变换形式为:)ab-tk(t)f(kta)b,a(WN1k2/1-f(4)由式(3)或(4)可知小波分析的基本原理,即通过增加或减小伸缩尺度a来得到信号的低频或高频信息,然后分析信号的概貌或细节,实现对信号不同时间尺度和空间局部特征的分析。实际研究中,最主要的就是要由小波变换方程得到小波系数,然后通过这些系数来分析时间序列的时频变化特征。3.小波方差将小波系数的平方值在b域上积分,就可得到小波方差,即db)ba,(W)a(Var2f(5)小波方差随尺度a的变化过程,称为小波方差图。由式(5)可知,它能反映信号波动的能量随尺度a的分布。因此,小波方差图可用来确定信号中不同种尺度扰动的相对强度和存在的主要时间尺度,即主周期。二、小波分析实例-时间序列的多时间尺度分析(Multi-timescaleanalysis)例题河川径流是地理水文学研究中的一个重要变量,而多时间尺度是径流演化过程中存在的重要特征。所谓径流时间序列的多时间尺度是指:河川径流在演化过程中,并不存在真正意义上的变化周期,而是其变化周期随着研究尺度的不同而发生相应的变化,这种变化一般表现为小时间尺度的变化周期往往嵌套在大尺度的变化周期之中。也就是说,径流变化在时间域中存在多层次的时间尺度结构和局部变化特征。表1给出了某流域某水文观测站1966-2004年的实测径流数据。试运用小波分析理论,借助MatlabR2012a、suffer12.0和其他相关软件(Excel、记事本等),完成下述任务:(1)计算小波系数;(2)绘制小波系数图(实部、模和模方)、小波方差图和主周期变化趋势图,并分别说明各图在分析径流多时间尺度变化特征中的作用。表1某流域某水文观测站1966-2004年实测径流数据(×108m3)年份径流量年份径流量年份径流量年份径流量年份径流量19661.43819742.23519820.77419901.80619981.70919671.15119754.37419830.36719910.44919990.00019680.53619764.21919840.56219920.12020000.00019691.47019772.59019853.04019930.62720012.10419703.47619783.35019860.30419941.65820020.00919714.06819792.54019870.72819951.02520033.17719722.14719800.80719880.49219960.95520040.92119733.93119810.57319890.00719971.341分析1.选择合适的基小波函数是前提在运用小波分析理论解决实际问题时,选择合适的基小波函数是前提。只有选择了适合具体问题的基小波函数,才能得到较为理想的结果。目前,可选用的小波函数很多,如Mexicanhat小波、Haar小波、Morlet小波和Meyer小波等。在本例中,我们选用Morlet连续复小波变换来分析径流时间序列的多时间尺度特征。原因如下:1.1径流演变过程中包含“多时间尺度”变化特征且这种变化是连续的,所以应采用连续小波变换来进行此项分析。1.2实小波变换只能给出时间序列变化的振幅和正负,而复小波变换可同时给出时间序列变化的位相和振幅两方面的信息,有利于对问题的进一步分析。1.3复小波函数的实部和虚部位相差为π/2,能够消除用实小波变换系数作为判据而产生的虚假振荡,使分析结果更为准确。2.绘制小波系数图、小波方差图和主周期变化趋势图是关键当选择好合适的基小波函数后,下一步的关键就是如何通过小波变换获得小波系数,然后利用相关软件绘制小波系数图、小波方差图和主周期变化趋势图,进而根据上述三种图形的变化识别径流时间序列中存在的多时间尺度。具体步骤1.数据格式的转化2.边界效应的消除或减小3.计算小波系数4.计算复小波系数的实部、模、模方、方差5.绘制小波系数实部、模、模方等值线图6.绘制小波方差图7.绘制主周期趋势图下面,我们以上题为例,结合软件MatlabR2012a、suffer12.0、Excel、记事本等,详细说明小波系数的计算和各图形的绘制过程,并分别说明各图在分析径流多时间尺度变化特征中的作用。1.数据格式的转化和保存将存放在Excel表格里的径流数据(以时间为序排为一列)转化为MatlabR2012a识别的数据格式(.mat)并存盘。具体操作为:在MatlabR2012a界面下,单击“File-ImportData”,出现文件选择对话框“Import”后,找到需要转化的数据文件(本例的文件名为runoff.xls),单击“打开”。等数据转化完成后,单击“Finish”,出现图1显示界面;然后双击图1中的Runoff,弹出“ArrayEditor:runoff”对话框,选择File文件夹下的“SaveWorkspaceAs”单击,出现图2所示的“SavetoMAT-File:”窗口,选择存放路径并填写文件名(runoff.mat),单击“保存”并关闭“SavetoMAT-File”窗口。2.边界效应的消除或减小因为本例中的实测径流数据为有限时间数据序列,在时间序列的两端可能会产生“边界效用”。为消除或减小序列开始点和结束点附近的边界效应,须对其两端数据进行延伸。在进行完小波变换后,去掉两图1数据格式的转化图2数据的保存端延伸数据的小变换系数,保留原数据序列时段内的小波系数。本例中,我们利用MatlabR2012a小波工具箱中的信号延伸(SignalExtension)功能,对径流数据两端进行对称性延伸。具体方法为:在MatlabR2012a界面的“CommandWindow”中输入小波工具箱调用命令“Wavemenu”,按Enter键弹“WaveletToolboxMainMenu”(小波工具箱主菜单)界面(图3);然后单击“SignalExtension”,打开SignalExtension/Truncation窗口,单击“File”菜单下的“LoadSignal”,选择runoff.mat文件单击“打开”,出现图4信号延伸界面。MatlabR2012a的ExtensionMode菜单下包含了6种基本的延伸方式(Symmetric、Periodic、ZeroPadding、Continuous、SmoothandForSWT)和Directiontoextend菜单下的3种延伸模式(Both、LeftandRight),在这里我们选择对称性两端延伸进行计算。数据延伸的具体操作过程是:DesiredLength可以任意选,只要比原始信号长度大,建议在原始信号的基础上加20(这样左右对称地延伸10个数据),这里选择默认的64;Dircetiontoextend下选择“Both”;ExtensionMode下选择“Symmetric”;单击“Extend”按钮进行对称性两端延伸计算,然后单击“File”菜单下的“SaveTranformedSignal”,将延伸后的数据结果存为erunoff.mat文件。从erunoff文件可知,系统自动将原时间序列数据向前对称延伸12个单位,向后延伸13个单位。3.计算小波系数选择MatlabR2012a小波工具箱中的Morlet复小波函数对延伸后的径流数据序列(erunoff.mat)进行小波变换,计算小波系数并存盘。小波工具箱主菜单界面见图3,单击“Wavelet1-D”下的子菜单“ComplexContinuousWavelet1-D”,打开一维复连续小波界面,单击“File”菜单下的“LoadSignal”按钮,载入径流时间序列erunoff.mat(图5)。图5的左侧为信号显示区域,右侧区域给出了信号序列和复小波变换的有关信息和参数,主要包括数据长度(DataSize)、小波函数类型(Wavelet:cgau、shan、fbsp和cmor)、取样周期(SamplingPeriod)、周期设置(ScaleSetting)和运行按钮(Analyze),以及显示区域的相关显示设置按钮。本例中,我们选择cmor(1-1.5)、取样周期为1、最大尺度为32,单击“Analyze”运行按钮,计算小波系数。然后单击“File”菜单下的“SaveCoefficients”,保存小波系数为cerunoff.mat文件。4.计算Morlet复小波系数的实部、模、模方、方差在MatlabR2012a界面下的Workspace中将cerunoff.mat文件导入,见图6。图3小波工具箱主菜单图4径流时间序列的延伸图5小波变换菜单界面图6小波系数导入到Matlab然后双击“coefs”打开,删掉掉延伸数据的小波变换系数(本例中去掉前12列和后13列),保存。接下来开始计算Morlet复小波系数的实部、模、模方、方差,具体操作为:在“CommandWindows”中直接输入函数“shibu=real(coefs);”,点击“回车”键,计算实部;输入函数“mo