这个例子展示了如何使用小波来检测过程的变化。方差的变化很重要,因为它们通常表明数据生成机制的一些基本变化。
第一个例子将小波变点检测应用于一个非常古老的时间序列——公元622年到1281年的尼罗河极小值数据。河流水位的最低值是用开罗附近的罗达测量仪测量的。测量单位是米。
加载并绘制数据。
负载nileriverminima年= 622:1284;图绘制(年,nileriverminima)标题(“尼罗河最低水位”) AX = gca;斧子。XTick = 622:100:1222;网格在包含(“年”) ylabel (“米”)
大约在公元715年,一种新的测量装置开始建造。检查大约公元722年前后的数据,数据的可变性似乎发生了变化。您可以使用小波来探索测量的可变性受到新测量设备的引入影响的假设。
利用哈尔小波对数据进行多分辨率分析(MRA)。
wt = modwt (nileriverminima“哈雾”4);mra = modwtmra (wt,“哈雾”);
绘制MRA,并专注于第一级和第二级的细节。
图subplot(2,1,1) plot(years,mra(1,:)) title(“一级细节”) subplot(2,1,2) plot(years,mra(2,:)) title(“二级细节”) AX = gca;斧子。XTick = 622:100:1222;包含(“年”)
对小波系数应用整体方差变化检验。
为pts_Opt = wvarchg(wt(JJ,:),2);changepoints {JJ} = pts_Opt;结束cellfun (@ (x) ~ isempty (x) changepoints,“大学”, 0)
ans = 1 x5单元阵列{[1]}{[0]}{[0]}{[0]}{[0]}
确定检测到的方差变化对应的年份。
年(cell2mat (changepoints))
ans = 721
将数据分成两部分。第一段包括622年到721年,这段时间小波系数显示出方差的变化。第二部分包括722年到1284年。通过尺度获得小波方差的无偏估计。
tspre = nileriverminima (1:10 0);tspost = nileriverminima(101:结束);wpre = modwt (tspre,“哈雾”4);wpost = modwt (tspost,“哈雾”4);wvarpre = modwtvar (wpre,“哈雾”, 0.95,“表”) wvarpost = modwtvar(wpost,“哈雾”, 0.95,“表”)
wvarpre = 5 x4表NJ降低方差上 __ ________ ________ _______ D1 99 0.25199 0.36053 0.55846 97 93 0.056137 0.11014 0.30622 0.15367 0.25149 0.48477 D3 D2 D4 85 85 0.017875 0.0449 0.25044 0.018881 0.047427 0.26453 S4 wvarpost = 5 x4表NJ降低方差上 ___ ________ ________ _______ D1 562 560 0.085288 0.11394 0.13354 0.15869 D20.10639 0.13648 d3 556 0.0693 0.094168 0.13539 d4 548 0.053644 0.081877 0.14024 s4 548 0.24608 0.37558 0.64329
比较结果。
Vpre = table2array (wvarpre);Vpost = table2array (wvarpost);Vpre = Vpre (1: end-1, 2:结束);Vpost = Vpost (1: end-1, 2:结束);Vpre (: 1) = Vpre (:, 2) -Vpre (: 1);Vpre (:, 3) = Vpre (:, 3) -Vpre (:, 2);Vpost (: 1) = Vpost (:, 2) -Vpost (: 1);Vpost (:, 3) = Vpost (:, 3) -Vpost (:, 2);图errorbar (1:4, Vpre (:, 2), Vpre (: 1), Vpre (:, 3),“柯”,...“MarkerFaceColor”,[0 0 0])保持在errorbar (1.5:4.5 Vpost (:, 2), Vpost (: 1), Vpost (:, 3),“b ^”,...“MarkerFaceColor”,[0 0 1]) set(gca,“xtick”甘氨胆酸,1.25:4.25)集(,“xticklabel”, {“2年”,“4年”,“八年”,16年的,32年的})网格在ylabel (“方差”)标题(小波方差622-721和722-1284,“字形大小”14)传说(622 - 721年的,722 - 1284年的,“位置”,“东北”)
小波方差表明622-721和722-1284数据在2年和4年尺度上的方差变化显著。
上面的例子使用了只有两个系数的Haar小波滤波器,因为考虑到相对较小的时间序列(来自622-721的100个样本)的边界效应。如果你的数据近似是一阶或二阶差分平稳,你可以使用“反射”边界来替代有偏差的估计。这允许您使用更长的小波滤波器而不用担心边界系数。使用默认的'sym4'小波重复分析。
wpre = modwt (tspre 4“反射”);wpost = modwt (tspost 4“反射”);wvarpre = modwtvar (wpre, [] [],“EstimatorType”,“有偏见的”,...“边界”,“反射”,“表”);wvarpost = modwtvar (wpost, [] [],“EstimatorType”,“有偏见的”,...“边界”,“反射”,“表”);
策划的结果。
Vpre = table2array (wvarpre);Vpost = table2array (wvarpost);Vpre = Vpre (1: end-1, 2:结束);Vpost = Vpost (1: end-1, 2:结束);Vpre (: 1) = Vpre (:, 2) -Vpre (: 1);Vpre (:, 3) = Vpre (:, 3) -Vpre (:, 2);Vpost (: 1) = Vpost (:, 2) -Vpost (: 1);Vpost (:, 3) = Vpost (:, 3) -Vpost (:, 2);图errorbar (1:4, Vpre (:, 2), Vpre (: 1), Vpre (:, 3),“柯”,“MarkerFaceColor”,[0 0 0])保持在errorbar (1.5:4.5 Vpost (:, 2), Vpost (: 1), Vpost (:, 3),“b ^”,“MarkerFaceColor”,[0 0 1]) set(gca,“xtick”甘氨胆酸,1.25:4.25)集(,“xticklabel”, {“2年”,“4年”,“八年”,16年的,32年的})网格在ylabel (“方差”)标题({小波方差622-721和722-1284;...“偏差估计—反射边界”},“字形大小”14)传说(“622 - 721”,“722 - 1284”,“位置”,“东北”)举行从
结论得到了强化。在2年和4年尺度上的数据方差存在显著差异,但在较长尺度上没有显著差异。您可以得出结论,过程方差的某些方面发生了变化。
在金融时间序列中,可以使用小波来检测波动性的变化。为了说明这一点,考虑1974年第一季度到2012年第四季度的美国实际GDP季度链加权数据。对数据进行转换,首先取自然对数,然后计算年与年的差异。用“db2”小波获取真实GDP数据到第6层的小波变换(MODWT)。检验数据的方差,并与MODWT得到的尺度方差进行比较。
负载GDPcomponentsrealgdpwt = modwt (realgdp,“db2”6“反射”);gdpmra = modwtmra (realgdpwt,“db2”,“反射”);vardata = var (realgdp, 1);varwt = var (realgdpwt(: 1:元素个数(realgdp)), 1, 2);
在vardata
这是总GDP时间序列的方差。在varwt
你有MODWT的尺度方差。有七个要素varwt
因为你得到的MODWT下降到第6级,导致6个小波系数方差和一个缩放系数方差。按比例对方差求和,以确保方差保持不变。按比例绘制小波方差,忽略比例系数方差。
totalMODWTvar =总和(varwt);bar(varwt(1:end-1,:))) AX = gca;斧子。XTickLabels = {“[2 4)”,“[4 8)”,“[8 16)”,“[16个32)”,“64年(32)”,“[64 128)”};包含(“季度”) ylabel (“方差”)标题(“小波尺度方差”)
因为这个数据是季度的,所以第一个尺度捕捉了2到4个季度之间的变化,第二个尺度捕捉了4到8之间的变化,第三个尺度捕捉了8到16之间的变化,以此类推。
从MODWT和一个简单的条形图可以看出,8到32个季度之间的数据周期是GDP数据差异最大的原因。如果考虑这些尺度上的小波方差,它们占GDP数据变化率的57%。这意味着GDP在2到8年期间的波动是时间序列中所看到的大部分变化的原因。
画出第一级的细节,D1。这些细节捕捉了持续时间在两个季度和四个季度之间的数据波动。
: helperFinancialDataExample1 (gdpmra(1),年,...“年比实际美国GDP - D1”)
从第一级的细节来看,从1980年代开始,差异似乎有所减少。
测试一级小波系数的显著方差变化点。
pts_Opt = wvarchg (realgdpwt(1,1:元素个数(realgdp)), 2);年(pts_Opt)
ans = 1982
在1982年确定了一个方差变化点。这个例子没有纠正第一级上由“db2”小波引入的延迟。然而,这种延迟只是两个样本,所以不会对结果产生明显的影响。
为了评估1982年前后GDP数据波动性的变化,将原始数据分成变化点前和变化点后的序列。获取前后数据集的小波变换。在这种情况下,级数相对较短,因此使用Haar小波最小化边界系数的数量。按尺度计算小波方差的无偏估计并绘制结果。
tspre = realgdp (1: pts_Opt);tspost = realgdp (pts_Opt + 1:结束);wtpre = modwt (tspre,“哈雾”5);wtpost = modwt (tspost,“哈雾”5);prevar = modwtvar (wtpre,“哈雾”,“表”);postvar = modwtvar (wtpost,“哈雾”,“表”);xlab = {“[2 q, 4 q)”,“[4 q, 8 q)”,“[8 q, 16 q)”,“[16 q, 32 q)”,“[32 q 64 q)”};helperFinancialDataExampleVariancePlot (prevar postvar,“表”xlab)标题(“小波尺度方差”)传说(“1982年第二季度之前”,“1982后Q2”,“位置”,“西北”)
从前面的图中可以看出,在2个季度和16个季度之间,1982年q2前和1982年q2后的方差在量表上存在显著差异。
因为在这个例子中时间序列很短,所以使用方差的有偏估计是很有用的。有偏估计不去除边界系数。使用四个系数的“db2”小波滤波器。
wtpre = modwt (tspre,“db2”5,“反射”);wtpost = modwt (tspost,“db2”5,“反射”);prevar = modwtvar (wtpre,“db2”, 0.95,“EstimatorType”,“有偏见的”,“表”);postvar = modwtvar (wtpost,“db2”, 0.95,“EstimatorType”,“有偏见的”,“表”);xlab = {“[2 q, 4 q)”,“[4 q, 8 q)”,“[8 q, 16 q)”,“[16 q, 32 q)”,“[32 q 64 q)”};图helperFinancialDataExampleVariancePlot (prevar postvar,“表”xlab)标题(“小波尺度方差”)传说(“1982年第二季度之前”,“1982后Q2”,“位置”,“西北”)
结果证实了我们最初的发现,波动性从2个季度减少到16个季度。
使用小波变换可以让您关注波动性局部变化的尺度。要了解这一点,请检查原始数据和一级小波细节的图。
次要情节(2,1,1)helperFinancialDataExample1 (realgdp,年,...“美国实际GDP同比——原始数据”次要情节(2,1,2)helperFinancialDataExample1 (gdpmra(1:),年,...“年复一年的美国实际GDP——小波级1细节”)
阴影部分被称为“大缓和”(Great Moderation),意指从20世纪80年代中期开始,美国宏观经济波动下降的时期。
从总体数据来看,我们并不清楚这一时期的波动性是否真的降低了。然而,小波级1的细节揭示了波动性的变化。