主要内容

小波变换点检测

这个例子展示了如何使用小波来检测过程的变化。方差的变化很重要,因为它们通常表明数据生成机制的一些基本变化。

第一个例子将小波变点检测应用于一个非常古老的时间序列——公元622年到1281年的尼罗河极小值数据。河流水位的最低值是用开罗附近的罗达测量仪测量的。测量单位是米。

加载并绘制数据。

负载nileriverminima.多年= 622:1284;图情节(年,Nileriverminima)标题(“尼罗河最低水位”) AX = gca;Ax.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;Ax.xtick = 622:100:1222;包含('年'

对小波系数应用整体方差变化检验。

为了JJ = 1:5 PTS_OPT = WVARCHG(WT(JJ,:),2);ChangePoints {JJ} = PTS_OPT;结束Cellfun(@(x)〜isempty(x),changepoints,“大学”, 0)
ANS = 1x5单元阵列{[1]} {[0]} {[0]} {[0]} {[0]} {[0]}

确定检测到的方差变化对应的年份。

多年(Cell2mat(ChangePoints))
ans = 721

将数据分成两部分。第一段包括622年到721年,这段时间小波系数显示出方差的变化。第二部分包括722年到1284年。通过尺度获得小波方差的无偏估计。

Tspre = nileriverminima(1:100);tspost = nileriverminima(101:结束);wpre = modwt(tspre,'哈尔'4);wpost = modwt (tspost,'哈尔'4);wvarpre = modwtvar (wpre,'哈尔', 0.95,“表”) wvarpost = modwtvar(wpost,'哈尔', 0.95,“表”
wvarpre = 5×4表NJ下方差上__ ________ _______ D1 99 0.25199 0.36053 0.55846 D2 97 0.15367 0.25149 0.48477 D3 93 0.056137 0.11014 0.30622 D4 85 0.018881 0.047427 0.26453 S4 85 0.017875 0.0449 0.25044 wvarpost = 5×4表NJ下方差上___ ________ ________ _______ D1562 0.11394 0.13354 0.15869 D2 560 0.085288 0.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])保持错误栏(1.5:4.5,VPOST(:,2),VPOST(:,1),VPOST(:,3),“b ^”......“MarkerFaceColor”,[0 0 1])集(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,[],[],'extimatorType''偏见'......'边界'“反射”“表”);wvarpost = modwtvar(wpost,[],[],'extimatorType''偏见'......'边界'“反射”“表”);

绘制结果。

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])保持错误栏(1.5:4.5,VPOST(:,2),VPOST(:,1),VPOST(:,3),“b ^”“MarkerFaceColor”,[0 0 1])集(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得到的尺度方差进行比较。

负载GDP组件realgdpwt = modwt(realgdp,“db2”6“反射”);gdpmra = modwtmra (realgdpwt,“db2”“反射”);Vardata = var(RealGDP,1);varwt = var(realgdpwt(:,1:numel(Realgdp)),1,2);

vardata这是总GDP时间序列的方差。在varwt你有MODWT的尺度方差。有七个要素varwt因为您获得了六级的modwt,导致六个小波系数差异和一个缩放系数方差。按比例总结差异以查看差异是保留的。按比例绘制小波差异忽略缩放系数方差。

TotalModwtvar = Sum(VarWt);酒吧(varwt(1:end-1,:))ax = gca;ax.xticklabels = {“[2 4)”“[4 8)”'[8 16)''[16 32)'“64年(32)”“[64 128)”};包含('quarters') ylabel (“方差”)标题('按比例的小波差异'

因为这个数据是季度的,所以第一个尺度捕捉了2到4个季度之间的变化,第二个尺度捕捉了4到8之间的变化,第三个尺度捕捉了8到16之间的变化,以此类推。

从MODWT和一个简单的条形图可以看出,8到32个季度之间的数据周期是GDP数据差异最大的原因。如果考虑这些尺度上的小波方差,它们占GDP数据变化率的57%。这意味着GDP在2到8年期间的波动是时间序列中所看到的大部分变化的原因。

画出第一级的细节,D1。这些细节捕捉了持续时间在两个季度和四个季度之间的数据波动。

: helperFinancialDataExample1 (gdpmra(1),年,......“年比实际美国GDP - D1”

检查一级细节,看来,在20世纪80年代开始的方差减少。

测试大量的小波系数,以获得重要方差变换点。

pts_opt = wvarchg(realgdpwt(1,1:numel(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)”'[16Q,32Q)'“[32 q 64 q)”};HelperfinancialDataExamplevarianceplot(Prevar,Postvar,“表”xlab)标题('按比例的小波差异') 传奇('预982Q2'“1982后Q2”“位置”'西北'

从前面的绘图中,它看起来在1982Q2之前存在显着差异,并且在2到16个季度之间的尺度处的尺度处于1982Q2的差异之间存在显着差异。

由于时间序列在此示例中如此短,因此使用偏差估计的方差估计可能是有用的。偏置估计不会删除边界系数。使用具有四个系数的“DB2”小波滤波器。

wtpre = modwt(tspre,“db2”5,“反射”);wtpost = modwt(tspost,“db2”5,“反射”);prevar = modwtvar(wtpre,“db2”, 0.95,'extimatorType''偏见'“表”);postvar = modwtvar (wtpost,“db2”, 0.95,'extimatorType''偏见'“表”);xlab = {“[2 q, 4 q)”“[4 q, 8 q)”“[8 q, 16 q)”'[16Q,32Q)'“[32 q 64 q)”};图HelperfinancialDataExampleVarianceplot(Prevar,Postvar,“表”xlab)标题('按比例的小波差异') 传奇('预982Q2'“1982后Q2”“位置”'西北'

结果证实我们的原始发现,从2到16个季度的尺度上的挥发性降低了。

使用小波变换可以让您关注波动性局部变化的尺度。要了解这一点,请检查原始数据和一级小波细节的图。

子图(2,1,1)HelperfinancialDataExample1(RealGDP,年,......“美国实际GDP同比——原始数据”次要情节(2,1,2)helperFinancialDataExample1 (gdpmra(1:),年,......“年复一年的美国实际GDP——小波级1细节”

阴影部分被称为“大缓和”(Great Moderation),意指从20世纪80年代中期开始,美国宏观经济波动下降的时期。

检查总数据,目前尚不清楚这一时期实际上存在挥发性。然而,小波级 - 一个细节揭示了波动性的变化。