使用滚动窗口分析评估状态空间模型的稳定性

使用滚动窗口分析评估模型稳定性

这个例子展示了如何使用滚动窗口来检查时间序列模型的参数是否是时不变的。本例分析了两个时间序列:

  • 时间序列1:来自已知时不变模型的模拟数据

  • 时间序列2:来自一个已知的时变模型的模拟数据

完整指定时间序列1的AR(1)模型:

y t = 0 6 y t - 1 + ε t

在哪里 ε t 是高斯分布,均值为0,方差为1。完全指定时间序列2的时变模型:

y t = 0 2 y t - 1 + ε t ; t = 1 , , 1 0 0 y t = 0 7 5 y t - 1 + ε t ; t = 1 0 1 , , 1 5 0 y t = - 0 5 y t - 1 + ε t ; t = 1 5 1 , , 2 0 0 ,

在哪里 ε t 是高斯分布,均值为0,方差为1。

Mdl1 = arima (基于“增大化现实”技术的, 0.6,“不变”0,“方差”1);Mdl2 =细胞(3,1);% PreallocateARMdl2 = [0.2 0.75 -0.5];j = 1:3 Mdl2{j} = arima(基于“增大化现实”技术的ARMdl2 (j),“不变”0,“方差”1);结束

Mdl1是一个华宇电脑模型对象。您可以使用点符号访问它的属性。Mdl2单元格数组是华宇电脑模型对象。您可以使用单元索引和点表示法来访问内部模型的属性Mdl2。例如,访问第三个模型的AR参数值Mdl3,输入Mdl2 {3} .AR

模拟T= 200个周期的数据从Mdl1Mdl2。对两个级数使用压力响应为0。

rng (1);%的再现性T = 200;日元=模拟(Mdl1 T“Y0”, 0);timeMdl2 = [100 50 50];% Mdl2中每个模型的观测数y2 = 0;k = 1:numel(Mdl2) y2 = [y2;模拟(Mdl2 {k}, timeMdl2 (k),“Y0”, y2(结束));结束Y = [y1 y2(2:end)];

指定空AR(1)模型进行估计Mdl1,Mdl2,Mdl3。使用各自的数据集和40个周期的滚动窗口大小估计所有三个模型。同样,使用一个周期的滚动窗口增量。存储自回归参数和估计的创新方差。

Mdl = arima (“ARLags”, 1“不变”, 0);m = 100;滚动窗口大小%N = T - m + 1;滚动窗口数目%EstParams =细胞(2,1);预分配估计值EstParamsMat = 0 (N, 2);EstParamsSE =细胞(2,1);EstParamsSEMat = 0 (N, 2);j = 1:2N idxRW = k:(m + k - 1);%分类指数[EstMdl, EstParamCov] =估计(Mdl Y (idxRW j),“显示”,“关闭”);EstParamsMat (k) = [EstMdl。基于“增大化现实”技术的{1}EstMdl.Variance];= sqrt([EstParamCov(2,2) EstParamCov(3,3)]);结束EstParams {j} = EstParamsMat;EstParamsSE {j} = EstParamsSEMat;结束

在滚动窗口指数上绘制估计值及其逐点置信区间。

titleMdls = {“Mdl1”,“Mdl2”};图j = 1:2;次要情节(2,1,1);估计= EstParams {};SEs = EstParamsSE {};情节(估计(:1),“线宽”2);持有;情节(估计(:1)+ 2 * SEs (: 1),“:”,“线宽”2);情节(估计(:1)- 2 * SEs (: 1),“:”,“线宽”2);标题(sprintf ('延迟1估计时%s - AR ', titleMdls {j}));包含“滚动窗口指数”;轴;持有;次要情节(2,1,2);情节(估计(:,2),“线宽”2);持有;plot(估算(:,2)+ 2*SEs(:,2),“:”,“线宽”2);情节(估计(:,2)- 2 * SEs (:, 2),“:”,“线宽”2);标题(sprintf ('%s -方差估计', titleMdls {j}));包含“滚动窗口指数”;轴;持有;结束

Mdl1, AR估计值与0.6相差不大,并且估计值之间(成对)没有显著差异。的方差也有类似的结果Mdl1。应收帐款的估计Mdl2增长,然后下降,这表明时间依赖性。此外,根据置信区间,有证据表明一些估计与其他估计有所不同。虽然在模拟过程中方差没有发生变化,但似乎存在可能由模型的不稳定性引起的异方差。

评估隐式创建的状态空间模型的稳定性

此示例展示了在进行稳定性滚动窗口分析时如何指定和估计状态空间模型。显式定义的状态空间模型的滚动窗口分析非常简单,因此本示例主要关注隐式定义的状态空间模型。

考虑这个状态空间模型:

x t = ϕ x t 1 + ε t y t β z t = x t + u t ,

在哪里εtut为均值为0,方差为1的高斯过程。创建函数rwParamMap.m,它指定参数如何在参数个数映射到状态空间模型矩阵、初始状态值和状态类型,并将其保存到工作文件夹中。

函数[A, B, C, D, Mean0 Cov0, StateType, deflateY] = rwParamMap (params, y, Z)rwParamMap参数到矩阵的映射函数,用于滚动窗口示例%使用ssm并指定AR(1)状态模型由rwParamMap指定的状态空间模型包含一个平稳的% AR(1)状态,观测模型包含一个回归分量,和创新和干扰的方差为1。y的响应%由预测器指定的回归分量泄气%变量x。一个= params (1);B = 1;C = 1;D = 1;Mean0 = [];Cov0 = [];StateType = 0;deflateY = y -参数(2)*Z;结束

该软件不支持包含回归组件的隐式模型的仿真。金宝app因此,要模拟这个模型中的数据,您必须指定回归组件之前的所有模型组件。您可以显式地做到这一点,因为本示例使用了一个简单的状态空间模型。否则,您可以创建另一个函数并隐式地定义另一个状态空间模型(例如,时变状态空间模型)。

Mdl2Sim =舰导弹(南,1,1,1,“StateType”1);

Mdl2Sim是隐式定义的舰导弹对象。

模拟200周期随机标准高斯数据的路径。然后,模拟来自Mdl2Sim,并利用回归分量对响应进行膨胀。对于本例,使用ϕ= 0.6,β= 2。

rng (1);%的再现性T = 200;Z = randn (T, 1);φ= 0.6;β= 2;deflateY =模拟(Mdl2Sim T“参数”,φ);y = deflateY + Z*beta;

y是膨胀的,模拟的响应路径,和Z为模拟预报序列。

如果您隐式地定义状态空间模型和响应和预测器数据(即,yZ)存在于MATLAB中®工作空间,然后软件创建一个链接,从参数到矩阵的映射函数的那些级数。如果数据不存在于MATLAB工作区中,那么软件将创建模型,但是您必须使用适当的名称-值对参数提供数据,例如,在估计模型时。

因此,要在状态空间模型被隐式定义并且存在回归组件时执行滚动窗口分析,您必须指定状态空间模型,以指示每个窗口要分析的数据的索引。对模拟数据进行滚动窗口分析。在本例中,让滚动窗口长度为100个周期。

m = 100;N = T - m + 1;滚动窗口数目%EstParams =南(N, 2);%预先配置EstParamSE =南(N, 2);j = 1: N;idxRW = j:(m + j - 1);Mdl =舰导弹(@ (c) rwParamMap (c, y (idxRW)、Z (idxRW)));[~, EstParams (j:), EstParamCov] =估计(Mdl y (idxRW)(0.5 - 1)”,“显示”,“关闭”);EstParamSE (j: =√诊断接头(EstParamCov));结束

绘制AR参数和回归系数的估计值和点置信区间。

图;次要情节(2,1,1);情节(EstParams (: 1),“线宽”2);持有;情节(EstParams (: 1) + 2 * EstParamSE (: 1),“:r”,“线宽”2);情节(EstParams (: 1) - 2 * EstParamSE (: 1),“:r”,“线宽”2);标题“滞后1的状态AR估计”;包含“滚动窗口指数”;轴;持有;次要情节(2,1,2);情节(EstParams (:, 2),“线宽”2);持有;情节(EstParams(:,2)+ 2 * EstParamSE(:,2),“:r”,“线宽”2);情节(EstParams (:, 2) - 2 * EstParamSE (:, 2),“:r”,“线宽”2);标题回归系数估计的;包含“滚动窗口指数”;轴;持有;

图表明,模型是稳定的,因为AR估计不偏离其均值太多,回归系数估计也不。

另请参阅

||

相关话题