利用仿真平滑器模拟时变状态空间模型的状态
本例从已知模型生成数据,将状态空间模型与数据拟合,然后使用仿真平滑器从拟合模型模拟序列。
假设潜在过程包括AR(2)和MA(1)模型。有50个周期,MA(1)过程在最后25个周期中退出模型。前25个周期的状态方程是
在过去的25节课中,的确如此
在哪里而且均为高斯分布,均值为0,标准差为1。
假设序列分别从1.5和1开始,生成包含50个观察值的随机序列而且.
T = 50;arima的用法和样例:基于“增大化现实”技术的{0.7, -0.2},“不变”0,“方差”1);(日本)“马”, 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*sum(x',“omitnan”) + randn (T, 1);
潜在过程和观测方程共同构成一个状态空间模型。假设系数为未知参数,状态空间模型为
在前25个阶段,
对于第26期,和
在过去24节课中。
编写一个函数来指定参数的输入方式参数个数
映射到状态空间模型矩阵、初始状态值和状态类型。
版权所有2015 The MathWorks, Inc.函数[A,B,C,D,Mean0,Cov0,StateType] = ar2mparammap (params,T)时变状态空间模型参数映射函数%这个函数将向量参数映射到状态空间矩阵(A, B,% C,和D),初始状态值和初始状态方差(均值0%和Cov0),以及状态类型(StateType)。从周期1到T/2状态模型为AR(2)和MA(1)模型,观测模型为两种状态的和。。从周期T/2 + 1到T,状态模型为只是AR(2)模型。A1 = {[params(1) params(2) 0 0;1 0 0 0;0 0 0参数(3);0 0 0]};B1 = {[1 0;0 0;0 1;0 1]};C1 = {params(4)*[1 0 1 0]};Mean0 = ones(4,1); Cov0 = 10*eye(4); StateType = [0 0 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;结束
将此代码保存为一个名为AR2MAParamMap
在您的MATLAB®路径上。
通过传递函数来创建状态空间模型AR2MAParamMap
的函数句柄舰导弹
.
Mdl = ssm(@(params) ar2mparammap (params,T));
舰导弹
隐式地创建状态空间模型。通常,您无法验证隐式定义的状态空间模型。
使用模拟平滑器从Mdl模拟一条状态路径。指定参数到矩阵的映射函数有7个输出参数。另外,指定参数的未知值。
simParams = [0.48 0.0081 0.56 1.63 1.9];X = simsmooth(Mdl,y,“NumOut”7“参数”, simParams);
X
是一个T
-by-1模拟状态的单元向量。细胞1到25包含4 × 1向量,细胞26到50包含2 × 1向量。
使用单元格索引访问单元格,例如,使用X {5}
.
simStatesPeriod5 = X{5}
simStatesPeriod5 = -1.7591 -1.5404 -1.5171 -1.1417