本示例演示如何从已知模型生成数据,将扩散状态空间模型拟合到数据,然后从拟合模型预测状态和观测状态。
假设一个潜在过程包括一个AR(2)和一个MA(1)模型。有50个周期,MA(1)过程在最后25个周期中退出模型。因此,前25个周期的状态方程为
在过去的25年里,确实如此
在哪里和为高斯分布,均值为0,标准差为1。
假设该序列分别从1.5和1开始,产生一个随机序列,由50个观察值组成和
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个值是南
值。
潜过程是用
前25节课
在过去的25个时期为高斯分布,均值为0,标准差为1。
使用随机潜在状态过程(x
)和产生观测值的观测方程。
y = 2 * nansum (x ') ' + randn (T, 1);
潜过程和观测方程共同构成状态空间模型。如果系数是未知参数,则状态空间模型为
在前25个阶段,
第26期
在过去的24个时期。
编写一个函数,指定参数如何在参数个数
映射到状态空间模型矩阵、初始状态值和状态类型。
版权所有2015 The MathWorks, Inc.函数[A, B, C, D, Mean0 Cov0, StateType] = diffuseAR2MAParamMap (params, T)%diffuseAR2MAParamMap时变扩散状态空间模型参数%映射函数%这个函数将向量参数映射到状态空间矩阵(A, B,%C和D)以及状态类型(StateType)。从第1期到第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 params(3);0 0 0};B1 = {[10 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信息准则:230.626贝叶斯信息准则:240.186 | t统计概率多项式系数Std犯错 --------------------------------------------------- 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 x(2) | -0.29909 0.45939 -0.65107 0.51500
EstMdl
是一个dssm
包含估计系数的模型。状态空间模型的似然曲面可能包含局部极大值。因此,尝试几个初始参数值,或考虑使用完善
.
预测观察并说明未来的五个阶段。此外,获取预测的可变性的措施。
numPeriods = 5;[财政年度,yMSE,外汇,XMSE] =预测(EstMdl numPeriods y);
预测
使用EstMdl。{结束}
、……EstMdl。D{结束}
预测扩散状态空间模型。财政年度
和yMSE
是numPeriods
-1预测观测值的数值向量和预测观测值的方差。外汇
和XMSE
是numPeriods
状态预测和状态预测方差的-by-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 (的状态和观察)({传奇的真实状态值,“国家预测”,...观察到的反应的,“预测反应”});