主要内容

小波Changepoint检测

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

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

加载并绘制数据。

负载nileriverminima年= 622:1284;图绘制(年,nileriverminima)标题(“尼罗河最低水位”) AX = gca;斧子。XTick = 622:100:1222;网格在…上xlabel(“年”)伊拉贝尔(“米”

公元715年左右开始建造一个新的测量装置。在大约公元722年前后检查数据时,数据的可变性似乎发生了变化。你可以使用小波来探索假设,即测量的可变性受到新测量装置引入的影响。

使用Haar小波对数据进行多分辨率分析(MRA)。

wt=modwt(尼勒维尼马,“哈雾”,4);mra=modwtmra(wt,“哈雾”);

绘制MRA,并专注于第一级和第二级的细节。

图子地块(2,1,1)图(年份,mra(1,:))标题(“1级详细信息”)子地块(2,1,2)地块(年份,mra(2,:))名称(“2级详细信息”)AX=gca;AX.XTick=622:100:1222;xlabel(“年”

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

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:end);Vpost=Vpost(1:end-1,2:end);Vpre(:,1)=Vpre(:,2)-Vpre(:,1);Vpre(:,3)=Vpre(:,3)-Vpre(:,2);Vpost(:,1);Vpost(:,3)=Vpost(:,2);图误差条(1:4,Vpre(:,3),Vpre(:,1),Vpre(:,1),“高”...“MarkerFaceColor”,[0])保持在…上errorbar (1.5:4.5 Vpost (:, 2), Vpost (: 1), Vpost (:, 3),‘b^’...“MarkerFaceColor”,[0 0 1]) set(gca,“克斯蒂克”,1.25:4.25)套,“xticklabel”,{“2年”“4年”“8年”“16年”“32年”})网格在…上伊拉贝尔(“差异”)头衔(“小波方差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:end);Vpost=Vpost(1:end-1,2:end);Vpre(:,1)=Vpre(:,2)-Vpre(:,1);Vpre(:,3)=Vpre(:,3)-Vpre(:,2);Vpost(:,1);Vpost(:,3)=Vpost(:,2);图误差条(1:4,Vpre(:,3),Vpre(:,1),Vpre(:,1),“高”“MarkerFaceColor”,[0])保持在…上errorbar (1.5:4.5 Vpost (:, 2), Vpost (: 1), Vpost (:, 3),‘b^’“MarkerFaceColor”,[0 0 1]) set(gca,“克斯蒂克”,1.25:4.25)套,“xticklabel”,{“2年”“4年”“8年”“16年”“32年”})网格在…上伊拉贝尔(“差异”)头衔({“小波方差622-721和722-1284按比例”...“有偏估计——反射边界”},“字体大小”(14)图例('622-721'“722 - 1284”“位置”“东北”)持有

这一结论得到了证实。在2年和4年的量表中,数据的方差存在显著差异,但在较长的量表中差异不显著。您可以得出这样的结论:流程差异发生了一些变化。

在金融时间序列中,可以使用小波来检测波动的变化。为了说明这一点,考虑1974年Q1至2012Q4的季度链加权美国实际GDP数据。首先通过取自然对数,然后计算年内差值来转换数据。获得小波变换(MODWT)。使用“db2”小波将实际GDP数据的方差降低到第六级。检查数据的方差,并将其与使用MODWT获得的按比例的方差进行比较。

负载GDPcomponentsrealgdpwt = modwt (realgdp,“db2”6.“反思”);gdpmra=modwtmra(realgdpwt,“db2”“反思”);vardata = var (realgdp, 1);varwt = var (realgdpwt(: 1:元素个数(realgdp)), 1, 2);

在里面瓦尔达你有GDP总时间序列的方差瓦特你有MODWT的按比例的方差瓦特因为你得到的MODWT下降到第6级,导致6个小波系数方差和一个缩放系数方差。按比例对方差求和,以确保方差保持不变。按比例绘制小波方差,忽略比例系数方差。

totalMODWTvar =总和(varwt);bar(varwt(1:end-1,:))) AX = gca;斧子。XTickLabels = {'[2 4)''[4 8)'“[8 16)”“[16个32)”'[32 64)''[64 128)'};xlabel(“季度”)伊拉贝尔(“差异”)头衔(“小波尺度方差”

因为这些数据是季度性的,所以第一个量表记录了两到四个季度之间的变化,第二个量表记录了四到八个季度之间的变化,第三个量表记录了八到十六个季度之间的变化,依此类推。

从MODWT和一个简单的条形图中可以看出,在8和32个季度之间的数据周期是GDP数据中最大的方差。如果考虑这些尺度上的小波方差,它们占GDP数据的可变性的57%,这意味着GDP的振荡在2到8年期间占大多数T。他在时间序列中看到了可变性。

绘制一级详细信息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 = {“[2Q,4Q]”“[4Q,8Q]”“[8Q,16Q]”“[16 q, 32 q)”“[32Q,64Q]”};helperFinancialDataExampleVariancePlot (prevar postvar,“桌子”,xlab)标题(“小波尺度方差”)传说(“1982年第二季度之前”‘1982年后第二季度’“位置”“西北”

从前面的图中可以看出,在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 = {“[2Q,4Q]”“[4Q,8Q]”“[8Q,16Q]”“[16 q, 32 q)”“[32Q,64Q]”};图helperFinancialDataExampleVariancePlot (prevar postvar,“桌子”,xlab)标题(“小波尺度方差”)传说(“1982年第二季度之前”‘1982年后第二季度’“位置”“西北”

结果证实了我们最初的发现,波动性从2个季度减少到16个季度。

使用小波变换可以让您关注波动率变化的局部尺度。要查看这一点,请查看原始数据的绘图以及一级小波细节。

次要情节(2,1,1)helperFinancialDataExample1 (realgdp,年,...“与去年同期相比,美国实际GDP——原始数据”)子批次(2,1,2)helperFinancialDataExample1(gdpmra(1,:),年,...“与去年同期相比,美国实际GDP——小波1级细节”

阴影区域被称为“大缓和”,表示从20世纪80年代中期开始,美国宏观经济波动性下降。

从总体数据来看,我们并不清楚这一时期的波动性是否真的降低了。然而,小波级1的细节揭示了波动性的变化。