预测时变扩散状态空间模型

这个例子展示了如何从一个已知的模型生成数据,将一个分散的状态空间模型拟合到数据中,然后从拟合的模型预测状态和观察状态。

假设一个潜在过程包含一个AR(2)和一个MA(1)模型。有50个周期,MA(1)流程在最后25个周期中退出模型。因此,前25个周期的状态方程为

数组$ $ \开始{}{1}& # xA;{间{1,t}} = 0.7{间{1,t - 1}} - 0.2{间{1,t - 2}} + {u_ {1, t}} \ \ & # xA;{间{2,t}} = {u_ {2, t}} + 0.6 {u_ {2, t - 1}}, & # xA; \{数组}$ $

在过去的25个时期里,确实如此

$ ${间{1,t}} = 0.7{间{1,t - 1}} - 0.2{间{1,t - 2}} + {u_ {1, t}} $ $

在哪里u_ {1, t} $美元$ u_ {2, t} $均为高斯分布,均值为0,标准差为1。

假设序列分别从1.5和1开始,随机生成一个包含50个观测值的序列美元间的{1,t} $间的美元$ {2,t}

T = 50;ARMdl = arima (基于“增大化现实”技术的{0.7,-0.2},“不变”0,“方差”1);MAMdl = arima (“马”,0.6,“不变”0,“方差”1);x0 = [1.5 1;1.5 - 1];rng (1);x =[模拟(ARMdl T“Y0”x0 (: 1)),模拟(MAMdl T / 2,“Y0”x0(: 2));南(T / 2, 1)];

模拟MA(1)数据的最后25个值为值。

潜在过程是测量使用

$ $ {y_t} = 2 \离开({{间{1,t}} +{间{2,t}}} \右)+ {\ varepsilon _t} $ $

前25个周期,和

$${y_t} = 2{x_{1,t}} + {\varepsilon _t}$$

最后25个周期,其中\ varepsilon_t美元为高斯分布,均值为0,标准差为1。

使用随机潜在状态过程(x)和生成观测值的观测方程。

y = 2 * nansum (x ') ' + randn (T, 1);

潜过程和观测方程共同构成了状态空间模型。如果系数是未知参数,则状态空间模型为

数组$ $ \开始{}{1}& # xA;左\[{\开始数组{}{* {20}{c}} & # xA;{{间{1,t}}} \ \ & # xA;{{间{2,t}}} \ \ & # xA;{{间{3 t}}} \ \ & # xA;{{间{4 t}}} & # xA;结束\{数组}}\右]左= \[{\开始数组{}{* {20}{c}} & # xA;{{\φ_1}}和{{\φ_2}}& # 38;0 & # 38;0 \ \ & # xA; 1 & # 38; 0 & # 38; 0 & # 38; 0 \ \ & # xA; 0 & # 38; 0 & # 38; 0 &{{\θ_1}}\ \ & # xA; 0 & # 38; 0 & # 38; 0 & # 38; 0 & # xA;结束\{数组}}\右]\离开[{\开始{数组}{* {20}{c}} & # xA;{{间{1,t - 1}}} \ \ & # xA;{{间{2,t - 1}}} \ \ & # xA;{{间{3 t - 1}}} \ \ & # xA;{{间{4,t - 1}}} & # xA;结束\{数组}}\右]+左\ [数组{\开始{}{* {20}{c}} & # xA; 1 & # 38; 0 \ \ & # xA; 0 & # 38; 0 \ \ & # xA; 0 & # 38; 1 \ \ & # xA; 0 & # 38; 1 & # xA;结束\{数组}}\右]\离开[{\开始{数组}{* {20}{c}} & # xA; {{u_ {1, t}}} \ \ & # xA; {{u_ {2, t}}} & # xA;结束\{数组}}\右]\ \ & # xA; {y_t} = a({间{1,t}} +{间{3 t}}) + {\ varepsilon _t} & # xA; \{数组}$ $

在前25个时期,

数组$ $ \开始{}{1}& # xA;左\[{\开始数组{}{* {20}{c}} & # xA;{{间{1,t}}} \ \ & # xA;{{间{2,t}}} & # xA;结束\{数组}}\右]左= \[{\开始数组{}{* {20}{c}} & # xA;{{\φ_1}}和{{\φ_2}}& # 38;0 & # 38;0 \ \ & # xA; 1 & # 38; 0 & # 38; 0 & # 38; 0 & # xA;结束\{数组}}\右]\离开[{\开始{数组}{* {20}{c}} & # xA;{{间{1,t - 1}}} \ \ & # xA;{{间{2,t - 1}}} \ \ & # xA;{{间{3 t - 1}}} \ \ & # xA;{{间{4,t - 1}}} & # xA;结束\{数组}}\右]+ \离开[{\开始{数组}{* {20}{c}} & # xA; 1 \ \ & # xA; 0 & # xA;结束\{数组}}\右]{u_ {1, t}} \ \ & # xA; b {y_t} ={间{1,t}} +{\ varepsilon _t} & # xA; \{数组}$ $

第26期,和

数组$ $ \开始{}{1}& # xA;左\[{\开始数组{}{* {20}{c}} & # xA;{{间{1,t}}} \ \ & # xA;{{间{2,t}}} & # xA;结束\{数组}}\右]左= \[{\开始数组{}{* {20}{c}} & # xA;{{\φ_1}}和{{\φ_2}}\ \ & # xA; 1 & # 38; 0 & # xA;结束\{数组}}\右]\离开[{\开始{数组}{* {20}{c}} & # xA;{{间{1,t - 1}}} \ \ & # xA;{{间{2,t - 1}}} & # xA;结束\{数组}}\右]+ \离开[{\开始{数组}{* {20}{c}} & # xA; 1 \ \ & # xA; 0 & # xA;结束\{数组}}\右]{u_ {1, t}} \ \ & # xA; b {y_t} ={间{1,t}} + {\ varepsilon _t} & # xA; \{数组}$ $

在过去的24个时期。

编写一个函数来指定参数的输入方式参数个数映射到状态空间模型矩阵、初始状态值和状态类型。

% MathWorks, Inc.版权所有函数[A, B, C, D, Mean0 Cov0, StateType] = diffuseAR2MAParamMap (params, T)%diffuseAR2MAParamMap时变弥散状态空间模型参数%映射函数%这个函数将向量参数映射到状态空间矩阵(A, B,%的C,和d)和状态的类型(StateType)。从周期1至T / 2,则%状态模型为AR(2)和MA(1)模型,观测模型为两个状态的和。从周期T/2 + 1到T,状态模型为只是AR(2)型的。AR(2)模型是扩散的。A1 = {params(1) params(2) 0 0;1 0 0 0;0 0 0参数(3);0 0 0 0]};B1 = {[1 0;0 0;0 1;0 1]};C1 = {params(4)*[1 0 1 0]};Mean0 = []; Cov0 = []; StateType = [2 2 0 0]; A2 = {[params(1) params(2) 0 0; 1 0 0 0]}; B2 = {[1; 0]}; A3 = {[params(1) params(2); 1 0]}; B3 = {[1; 0]}; C3 = {params(5)*[1 0]}; A = [repmat(A1,T/2,1);A2;repmat(A3,(T-2)/2,1)]; B = [repmat(B1,T/2,1);B2;repmat(B3,(T-2)/2,1)]; C = [repmat(C1,T/2,1);repmat(C3,T/2,1)]; D = 1;结束

将此代码保存为一个名为的文件diffuseAR2MAParamMap在MATLAB®路径上。

通过传递函数创建扩散状态空间模型diffuseAR2MAParamMap作为函数句柄dssm

Mdl = dssm (@ (params) diffuseAR2MAParamMap (params, T));

dssm隐式地创建扩散状态空间模型。通常,您无法验证隐式创建的分散状态空间模型。

若要估计参数,请传递观测到的响应(y)估计。为未知参数指定一组任意的正初始值。

params0 = 0.1 *(5、1)的;EstMdl =估计(Mdl y params0);
方法:最大似然法(fminunc)有效样本量:48对数似然法:-110.313 Akaike info准则:230.626 Bayesian准则:240.186 |多项式系数性病犯错t统计概率- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c (1) c(2) | | 0.44041 0.27687 1.59069 0.11168 0.03949 0.29585 0.13349 0.89380摄氏度(3)| 0.78364 1.49223 0.52515 0.59948摄氏度(4)c(5) | | 1.64260 0.66736 2.46133 0.01384 1.90409 0.49374 3.85648 0.00012 | |最终状态性病Dev t统计概率x (1) | -0.81932 0.46706 -1.75420 0.07940 0.45939 -0.65107 0.51500 -0.29909 (2) |

EstMdl是一个dssm包含估计系数的模型。状态空间模型的似然曲面可能包含局部极大值。因此,尝试几个初始参数值,或考虑使用完善

预测观测并说明未来五个时期。同时,为预测获取可变性的度量。

numPeriods = 5;[财政年度,yMSE,外汇,XMSE] =预测(EstMdl numPeriods y);

预测使用EstMdl.A{结束}、……EstMdl.D{结束}对扩散状态空间模型进行预测。财政年度yMSEnumPeriods分别是预测观测值的-乘1的数值向量和预测观测值的方差。外汇XMSEnumPeriods状态预测的-2乘矩阵和状态预测的方差。列表示状态,行表示周期。对于所有输出参数,最后一行对应于最新的预测。

绘制观察结果、真实状态、预测观察结果和状态预测。

图;情节(T-10: T, x (T-10: T, 1),“- k”T + 1: T + numPeriods外汇(:1),“- r”,T-10: T、y (T-10: T),“——g”T + 1: T + numPeriods财政年度,“——b”,T: T + 1, y (T)财政年度(1);x (T) 1),外汇(1,1)]”,”:k”,“线宽”2);包含(“时间”)ylabel (的状态和观察)({传奇的真实状态值,“国家预测”,观察到的反应的,“预测反应”});

另请参阅

||

相关的例子

更多关于