含回归分量的状态空间模型预测观测
这个例子展示了如何估计一个包含回归成分的回归模型,然后从拟合的模型中预测观测值。
假设失业率变化与名义国民生产总值(nGNP)增长率之间的线性关系值得关注。进一步假设失业率的第一个差值是ARMA(1,1)系列。在状态空间形式中,该模型是
地点:
是当时失业率的变化吗t.
为MA(1)效应的虚拟状态。
是观察到的失业率以本地生产总值增长率扣除后的变化( ).
为状态扰动的高斯序列,其均值为0,标准差为1。
观测创新的高斯级数是否具有均值0和标准差 .
加载Nelson-Plosser数据集,其中包含失业率和nGNP系列。
负载Data_NelsonPlosser
对数据进行预处理,取nGNP系列的自然对数,以及每个系列的第一差值。另外,去掉起始部分南
每个系列的值。
isNaN = any(ismissing(DataTable),2);包含nan的标记句点gnpn = dattable . gnpn (~isNaN);u = dattable . ur (~isNaN);T = size(gnpn,1);%样本量Z = [ones(t -1,1) diff(log(gnpn))];Y = diff(u);
虽然本例删除了缺失值,但该软件可以在卡尔曼滤波器框架中容纳包含缺失值的序列。
为了确定模型对观测值的预测效果,可以去掉最后10个观测值进行比较。
numPeriods = 10;%预测范围isY = y(1:end-numPeriods);样本内观测值%oosY = y(end- numperiods +1:end);%样本外观测值ISZ = Z(1:end-numPeriods,:);%样本内预测因子OOSZ = Z(end- numperiods +1:end,:);%样本外预测因子
指定系数矩阵。
A = [NaN NaN;0 0];B = [1;1);C = [10];D = NaN;
使用指定状态空间模型舰导弹
.
Mdl = ssm(A,B,C,D);
估计模型参数。属性指定回归组件及其初始值,以进行优化“预测”
而且“Beta0”
名称-值对参数。限制估计
对所有正的实数。为了数值稳定性,在软件计算参数协方差矩阵时指定Hessian,使用“CovMethod”
名称-值对参数。
Params0 = [0.3 0.2 0.1];%任意选择[EstMdl,estParams] =估计(Mdl,isY,params0,“预测”ISZ,...“Beta0”(0.1 - 0.2),“磅”(负负0负,负),“CovMethod”,“海赛”);
方法:最大似然(fmincon)样本量:51对数似然:-87.2409赤井信息准则:184.482贝叶斯信息准则:194.141 | Coeff Std Err t Stat Prob ---------------------------------------------------------- c(1) | -0.31780 0.19429 -1.63572 0.10190 c(2) | 1.21242 0.48882 2.48032 0.01313 c(3) | 0.45583 0.63930 0.71302 0.47584 y <- z(1) | 1.32407 0.26313 5.03201 0 y <- z(2) | -24.48733 1.90115 -12.88024 0 | |最终状态Std Dev Stat Prob x(1) | -0.38117 0.42842 -0.88971 0.37363 x(2) | 0.23402 0.66222 0.35339 0.72380
EstMdl
是一个舰导弹
模型,您可以使用点表示法访问它的属性。
在预报视界上的预报观测。EstMdl
不存储数据集,因此必须将其传递给适当的名称-值对参数。
[fY,yMSE] = forecast(EstMdl,numPeriods,isY,“Predictors0”ISZ,...“PredictorsF”OOSZ,“β”, estParams (end-1:结束));
财政年度
是一个10乘1的向量包含预测的观测,和yMSE
是一个包含预测观测值方差的10 × 1向量。
得到95% wald型预测区间。将预测观测值与它们的真实值和预测间隔绘制出来。
预测区间(:,1)= fY - 1.96*平方根(yMSE);预测区间(:,2)= fY + 1.96*平方根(yMSE);figure h = plot(dates(end- numperiods -9:end- numperiods),isY(end-9:end),“- k”,...日期(end-numPeriods + 1:结束),oosY,“- k”,...日期(end-numPeriods + 1:结束),财政年度,“——r”,...日期(end-numPeriods + 1:结束),ForecastIntervals,“b”,...日期(end-numPeriods: end-numPeriods + 1),...[isY(结束)* (3,1),[oosY (1); ForecastIntervals (: 1)]],”:k”,...“线宽”2);包含(“时间”) ylabel (“失业率的变化”)传说(h ((1, 3, 4)) {“观察”,“预测反应”,...“95%预测区间”})标题(“失业率的观察和预测变化”)
这个模型似乎很好地预测了失业率的变化。