此示例演示如何从已知模型生成数据,将漫反射状态空间模型拟合到数据,然后从拟合模型预测状态和观测状态。
假设一个潜在过程包括AR(2)和MA(1)模型。有50个周期,MA(1)过程在最后25个周期中退出模型。因此,前25个周期的状态方程是
在过去的25个时期里
哪里和均数为0,标准差为1的高斯分布。
假设序列分别从1.5和1开始,从和
T=50;ARMdl=arima('AR',{0.7,-0.2},'恒定',0,'差异',1);MAMdl=阿里马(“妈妈”,0.6分,'恒定',0,'差异',1);x0=[1.51;1.51];rng(1);x=[模拟(ARMdl,T,'Y0',x0(:,1)),...[模拟(MAMdl,T/2,'Y0',x0(:,2));nan(T/2,1)]];
模拟MA(1)数据的最后25个值是南
价值观。
潜在过程的测量使用
前25节课,以及
在过去的25个时期里是高斯分布,平均值为0,标准差为1。
使用随机潜态过程(十
)以及生成观测值的观测方程。
y=2*nansum(x')'+randn(T,1);
潜过程和观测方程共同构成了状态空间模型。如果系数是未知参数,则状态空间模型为
前25节课,
第26期,以及
在过去的24个时期。
编写一个函数,指定参数
映射到状态空间模型矩阵、初始状态值和状态类型。
%版权所有2015 The MathWorks,Inc。功能[A,B,C,D,Mean0,Cov0,StateType]=diffusear2maparamap(params,T)%diffusear2maparamap时变扩散状态空间模型参数%映射函数%%此函数将向量参数映射到状态空间矩阵(A,B,%C和D)以及状态类型(state type)。从第1期到第2期%状态模型为AR(2)和MA(1)模型,观测模型为%两种状态的总和。从T/2+1到T期间,状态模型是%只有AR(2)模型。AR(2)模型为扩散模型。1;0]};C3={params(5)*[10]};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;结束
将此代码另存为名为漫射AR2maparamap
在您的MATLAB®路径上。
通过传递函数创建漫反射状态空间模型漫射AR2maparamap
作为函数句柄决策支持系统
.
Mdl=dssm(@(params)diffusear2maparamap(params,T));
决策支持系统
隐式创建漫反射状态空间模型。通常,无法验证隐式创建的漫反射状态空间模型。
要估计参数,通过观察到的响应(是的
)到估计
. 为未知参数指定任意一组正初始值。
params0=0.1*个(5,1);EstMdl=估计值(Mdl,y,params0);
方法:最大似然(fminunc)有效样本量:48对数似然:-110.313 Akaike信息准则:230.626贝叶斯信息准则:240.186 | Coeff-Std-Err-t-Stat Prob---------------------------------c(1)| 0.44041 0.27687 1.59069 0.11168 c(2)| 0.03949 0.29585 0.13349 0.89380 c(3)| 0.78364 1.49223 0.525150.59948 c(4)| 1.64260 0.66736 2.46133 0.01384 c(5)| 1.90409 0.49374 3.85648 0.00012 | |最终状态标准偏差t统计探针x(1)|-0.81932 0.46706-1.75420 0.07940 x(2)|-0.29909 0.45939-0.65107 0.51500
EstMdl
是一个决策支持系统
包含估计系数的模型。状态空间模型的似然曲面可能包含局部极大值。因此,尝试几个初始参数值,或者考虑使用精炼
.
预测未来五个时期的观测和状态。此外,获得预测的可变性度量。
numPeriods=5;[fY,yMSE,FX,XMSE]=预测(EstMdl,numPeriods,y);
预测
使用EstMdl.A{end}
, ...,EstMdl.D{end}
以预测扩散状态空间模型。财政年度
和yMSE公司
是裸体
-预测观测值的by-1数值向量和预测观测值的方差。外汇
和圣诞节
是裸体
-状态预测的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),fY(1);x(T,1),FX(1,1)]',':k','线宽',2);标签('期间')伊拉贝尔('状态和观察')传说({'真实状态值','状态预测',...'观察到的响应','预测响应'});