主要内容

预测

类:dssm

扩散状态空间模型的预测状态和观测

描述

例子

YYMSE] =预测(MdlnumPeriodsY0返回预测的观察Y)及其对应的方差(YMSE)从预测扩散状态空间模型Mdl使用一个numPeriods预测视界和样本内观测Y0

例子

YYMSE] =预测(MdlnumPeriodsY0名称,值使用一个或多个指定的其他选项名称,值对参数。例如,对于在观测模型中包含线性回归成分的状态空间模型,包括样本内预测器数据、预测水平的预测器数据和回归系数。

例子

YYMSEXXMSE] =预测(___使用前面语法中的任何输入参数来额外返回状态预测X)及其对应的方差(XMSE).

输入参数

全部展开

扩散状态空间模型,指定为dssm返回的模型对象dssm估计

如果Mdl没有完全指定(即,Mdl包含未知参数),然后使用参数个数名称-值对参数。否则,软件将发出一个错误。估计返回完全指定的状态空间模型。

Mdl不存储观察到的响应或预测器数据。在必要时使用适当的输入或名值对参数提供数据。

预测水平,指定为正整数。即软件返回1,..,numPeriods预测。

数据类型:

样本内,观察到的响应,指定为数值向量或矩阵的单元向量。

  • 如果Mdl那么是时不变的吗Y0是一个T——- - - - - -n数值矩阵,其中每行对应一个周期,每列对应模型中的一个特定观测值。因此,T样本量和是每个周期的观测数。最后一行Y包含最新的观察结果。

  • 如果Mdl时间是否随观测方程变化Y是一个T-by-1单元格向量。单元格向量的每个元素对应于一个周期,并包含一个nt-该时期观测值的维向量。中的系数矩阵的相应维数Mdl.C {t}而且Mdl。D {t}必须与矩阵一致吗Y {t}所有时期都适用。最后一个细胞Y包含最新的观察结果。

如果Mdl是估计的状态空间模型(即由估计),则设置为最佳做法Y0到你用来拟合的数据集Mdl

元素表示缺失的观察结果。有关卡尔曼滤波器如何容纳缺失观测的详细信息,请参见算法

数据类型:|细胞

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:β,β,“预测”,Z指定用由预测器数据组成的回归组件对观测值进行压缩Z系数矩阵β

预测水平、状态转换、系数矩阵,指定为逗号分隔的对,由“一个”和一个数字矩阵的单元向量。

  • 一个必须包含至少numPeriods细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度一个大于numPeriods,则软件使用前者numPeriods细胞。最后一个单元格表示预测范围中的最新时期。

  • 如果Mdl对于状态时不变的,那么每一个单元格一个必须包含——- - - - - -矩阵,是每周期样本内状态的数目。默认情况下,软件使用Mdl。一个在整个预测范围内。

  • 如果Mdl时间是否随状态变化,那么单元格中矩阵的维数一个可以变化,但每个矩阵的维数必须与B而且C在相应的时期。默认情况下,软件使用Mdl。一个{end}在整个预测范围内。

请注意

中的矩阵一个不能包含值。

数据类型:细胞

预测水平,状态扰动负载,系数矩阵,指定为逗号分隔的对,由“B”一个矩阵的单元向量。

  • B必须包含至少numPeriods细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度B大于numPeriods,则软件使用前者numPeriods细胞。最后一个单元格表示预测范围中的最新时期。

  • 如果Mdl对于状态和状态扰动是时不变的,那么每一个单元格B必须包含——- - - - - -k矩阵,每周期样本内状态的数量,和k是样本内的数量,每周期的状态扰动。默认情况下,软件使用Mdl。B在整个预测范围内。

  • 如果Mdl是随时间变化的,那么单元格中矩阵的维数B可以变化,但每个矩阵的维数必须与一个在相应的时期。默认情况下,软件使用Mdl。B{end}在整个预测范围内。

请注意

中的矩阵B不能包含值。

数据类型:细胞

预测水平,测量灵敏度,系数矩阵,指定为逗号分隔的对,由“C”一个矩阵的单元向量。

  • C必须包含至少numPeriods细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度C大于numPeriods,则软件使用前者numPeriods细胞。最后一个单元格表示预测范围中的最新时期。

  • 如果Mdl对于状态和观察是时不变的,那么每一个单元格C必须包含n——- - - - - -矩阵,n每个周期的样本内观测的数量,和是每周期样本内状态的数目。默认情况下,软件使用Mdl.C在整个预测范围内。

  • 如果Mdl时间是否随状态或观察而变化,那么单元格中矩阵的维数C可以变化,但每个矩阵的维数必须与一个而且D在相应的时期。默认情况下,软件使用Mdl.C{结束}在整个预测范围内。

请注意

中的矩阵C不能包含值。

数据类型:细胞

预测-视界,观察-创新,系数矩阵,指定为逗号分隔对,由' D '一个矩阵的单元向量。

  • D必须包含至少numPeriods细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度D大于numPeriods,则软件使用前者numPeriods细胞。最后一个单元格表示预测范围中的最新时期。

  • 如果Mdl对于观测和观测创新是时不变的,那么每一个细胞D必须包含n——- - - - - -h矩阵,n每个周期的样本内观测的数量,和h为样本内,每周期观察创新的数量。默认情况下,软件使用Mdl。D在整个预测范围内。

  • 如果Mdl时间是否随着观察或观察创新而变化,那么单元中矩阵的维度D可以变化,但每个矩阵的维数必须与C在相应的时期。默认情况下,软件使用Mdl。D{end}在整个预测范围内。

请注意

中的矩阵D不能包含值。

数据类型:细胞

回归系数对应于预测变量,指定为逗号分隔的对,由“β”和一个d——- - - - - -n数字矩阵。d是预测变量的数量(见Predictors0而且PredictorsF),n是观察到的响应序列的数量(见Y0).

  • 如果你指定β,那么你还必须指定Predictors0而且PredictorsF

  • 如果Mdl是估计的状态空间模型,然后指定估计的回归系数存储在Mdl.estParams

默认情况下,软件从状态空间模型中排除一个回归组件。

样本内,状态空间模型观测方程中的预测变量,指定为由逗号分隔的对组成“Predictors0”和一个矩阵。的列Predictors0对应于单独的预测变量。Predictors0必须有T行,其中行t对应于周期内观测到的预测因子tZt).展开后的观测方程为

y t Z t β C x t + D u t

换句话说,该软件使用回归组件对观测结果进行压缩。β是软件用所有其他参数估计的回归系数的时不变向量。

  • 如果有n每个周期的观测值,然后软件将所有预测器序列回归到每个观测值。

  • 如果你指定Predictors0,然后Mdl必须是时不变的。否则,软件将返回一个错误。

  • 如果你指定Predictors0,那么你还必须指定β而且PredictorsF

  • 如果Mdl是估计的状态空间模型(即由估计),则设置为最佳做法Predictors0你用来拟合的预测数据集Mdl

默认情况下,软件从状态空间模型中排除一个回归组件。

数据类型:

样本内,状态空间模型观测方程中的预测变量,指定为由逗号分隔的对组成“Predictors0”和一个T——- - - - - -d数字矩阵。T样本内周期的个数和d是预测变量的数量。行t对应于周期内观测到的预测因子tZt).展开后的观测方程为

y t Z t β C x t + D u t

换句话说,该软件使用回归组件对观测结果进行压缩。β是软件用所有其他参数估计的回归系数的时不变向量。

  • 如果有n每个周期的观测值,然后软件将所有预测器序列回归到每个观测值。

  • 如果你指定Predictors0,然后Mdl必须是时不变的。否则,软件将返回一个错误。

  • 如果你指定Predictors0,那么你还必须指定β而且PredictorsF

  • 如果Mdl是估计的状态空间模型(即由估计),则设置为最佳做法Predictors0你用来拟合的预测数据集Mdl

默认情况下,软件从状态空间模型中排除一个回归组件。

数据类型:

输出参数

全部展开

预测的观察,返回为矩阵或数值向量的单元格向量。

如果Mdl那么,对于观测,这是一个时不变的状态空间模型吗Y是一个numPeriods——- - - - - -n矩阵。

如果Mdl是时变的,状态空间模型相对于观测,那么Y是一个numPeriods数值向量的-by-1单元向量。细胞tY包含一个nt-by-1周期预测观测值的数值向量t

预测观测值的误差方差,以矩阵或数值向量的单元向量形式返回。

如果Mdl那么,对于观测,这是一个时不变的状态空间模型吗YMSE是一个numPeriods——- - - - - -n矩阵。

如果Mdl是时变的,状态空间模型相对于观测,那么YMSE是一个numPeriods数值向量的-by-1单元向量。细胞tYMSE包含一个nt-by-1对应预测观测值的误差方差数值向量t

状态预测,返回为矩阵或数值向量的单元格向量。

如果Mdl那么,关于状态,这是一个定常的状态空间模型吗X是一个numPeriods——- - - - - -矩阵。

如果Mdl那么这是一个时变的状态空间模型吗X是一个numPeriods数值向量的-by-1单元向量。细胞tX包含一个t-by-1周期预测观测值的数值向量t

状态预测的误差方差,以矩阵或数值向量的单元向量的形式返回。

如果Mdl那么,关于状态,这是一个定常的状态空间模型吗XMSE是一个numPeriods——- - - - - -矩阵。

如果Mdl那么这是一个时变的状态空间模型吗XMSE是一个numPeriods数值向量的-by-1单元向量。细胞tXMSE包含一个t-by-1对应预测观测值的误差方差数值向量t

例子

全部展开

假设一个潜在的过程是一个随机游走。状态方程是

x t x t - 1 + u t

在哪里 u t 为均值为0,标准差为1的高斯分布。

生成100个观察值的随机序列 x t ,假设该系列从1.5开始。

T = 100;X0 = 1.5;rng (1);%用于再现性u = randn(T,1);X = cumsum([x0;u]);X = X(2:结束);

进一步假设潜在过程受附加测量误差的影响。观测方程为

y t x t + ε t

在哪里 ε t 为均值为0,标准差为0.75的高斯分布。潜伏过程和观测方程共同构成了一个状态空间模型。

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

y = x + 0.75*randn(T,1);

指定四个系数矩阵。

A = 1;B = 1;C = 1;D = 0.75;

使用系数矩阵创建扩散状态空间模型。指定初始状态分布是弥漫的。

Mdl = dssm(A,B,C,D,“StateType”, 2)
Mdl =状态空间模型类型:dssm状态向量长度:1观测向量长度:1状态扰动向量长度:1观测创新向量长度:1模型支持的样本量:无限状态变量:x1, x2,…万博1manbetx状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1(t) = x1(t-1) + u1(t)观测方程:y1(t) = x1(t) + (0.75)e1(t)初始状态分布:初始状态表示x1 0初始状态协方差矩阵x1 x1无穷状态类型x1扩散

Mdl是一个dssm模型。使用命令窗口中的显示来验证模型是否正确指定。

预测未来10个时期的观测结果,并估计预测的均方误差。

numPeriods = 10;[forecstedy,YMSE] = forecast(Mdl,numPeriods,y);

用样本内响应和95% wald型预测区间绘制预测图。

forecastinterval (:,1) = forecstedy - 1.96*根号(YMSE);forecastinterval (:,2) = forecastdy + 1.96*√(YMSE);图绘制(T-20: T、y (T-20: T),“- k”T + 1: T + numPeriods ForecastedY,“r”...T + 1: T + numPeriods ForecastIntervals,“。b”...T: T + 1, y(结束)* (3,1),[ForecastedY (1); ForecastIntervals (: 1)]],”:k”...“线宽”, 2)标题({“观察到的反应及其预测”})包含(“时间”) ylabel (“反应”)({传奇“观察”“预测观察”“95%预测区间”},...“位置”“最佳”)举行

图中包含一个轴对象。标题为“观察到的响应及其预测”的坐标轴对象包含7个类型为一行的对象。这些对象代表观测值,预测观测值,95%预测区间。

因为这个过程是非平稳的,所以预测的时间间隔会变大。

假设失业率与名义国民生产总值(nGNP)之间的线性关系值得关注。进一步假设失业率是一个AR(1)系列。在状态空间形式中,该模型是

x t ϕ x t - 1 + σ u t y t - β Z t x t

地点:

  • x t 失业率是什么时候t

  • y t 为观察到的失业率变化,并以nGNP的回归为依据( Z t ).

  • u t 状态扰动的高斯级数是否具有均值为0和未知的标准差 σ

加载Nelson-Plosser数据集,其中包含失业率和nGNP系列。

负载Data_NelsonPlosser

对数据进行预处理,取nGNP系列的自然对数并去掉起始值每个系列的值。

isNaN = any(ismissing(DataTable),2);包含nan的标记句点gnpn = dattable . gnpn (~isNaN);y = diff(DataTable.UR(~isNaN));T = size(gnpn,1);%样本量Z = price2ret(gnpn);

本例继续使用没有的系列值。然而,使用卡尔曼滤波器框架,该软件可以容纳包含缺失值的系列。

通过去除最后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;B = NaN;C = 1;

使用。创建状态空间模型dssm通过提供系数矩阵并指定状态值来自扩散分布。弥漫规范表明完全不知道初始分布的矩。

StateType = 2;Mdl = dssm(A,B,C,“StateType”, StateType);

估计参数。属性指定回归组件及其初始值,以进行优化“预测”而且“Beta0”名称-值对参数。显示估计和所有优化诊断信息。限制估计 σ 对所有正的实数。

Params0 = [0.3 0.2];%任意选择的初始值Beta0 = 0.1;[EstMdl,estParams] =估计(Mdl,y,params0,“预测”, Z,“Beta0”Beta0,...“磅”,[-Inf 0 -Inf]);
方法:最大似然(fmincon)有效样本量:60对数似然:-110.477 Akaike info criterion: 226.954 Bayesian info criterion: 233.287 | Coeff Std Err t Stat Prob -------------------------------------------------------- c(1) | 0.59436 0.09408 6.31738 0 c(2) | 1.52554 0.10758 14.17991 0 y <- z(1) | -24.26161 1.55730 -15.57930 0 | | Final State Std Dev t Stat Prob x(1) | 2.54764 0 Inf 0

EstMdl是一个dssm模型,您可以使用点表示法访问它的属性。

在预报视界上的预报观测。EstMdl不存储数据集,因此必须将其传递给适当的名称-值对参数。

[fY,yMSE] = forecast(EstMdl,numPeriods,isY,“Predictors0”ISZ,...“PredictorsF”OOSZ,“β”estParams(结束));

财政年度是一个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(结束)* (4,1),[oosY (1); ForecastIntervals(1:);财政年度(1)]],”:k”...“线宽”2);包含(“时间”) ylabel (“失业率变化”)传说(h ((1, 3, 4)) {“观察”“预测反应”...“95%预测区间”})标题(“失业率的观察和预测变化”

图中包含一个轴对象。标题为“失业率的观察和预测变化”的轴对象包含9个类型线对象。这些对象代表观察结果,预测响应,95%预测区间。

假设一个潜在的过程是一个随机游走。状态方程是

x t x t - 1 + u t

在哪里 u t 为均值为0,标准差为1的高斯分布。

生成100个观察值的随机序列 x t ,假设该系列从1.5开始。

T = 100;X0 = 1.5;rng (1);%用于再现性u = randn(T,1);X = cumsum([x0;u]);X = X(2:结束);

进一步假设潜在过程受附加测量误差的影响。观测方程为

y t x t + ε t

在哪里 ε t 为均值为0,标准差为0.75的高斯分布。潜伏过程和观测方程共同构成了一个状态空间模型。

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

y = x + 0.75*randn(T,1);

指定四个系数矩阵。

A = 1;B = 1;C = 1;D = 0.75;

使用系数矩阵创建扩散状态空间模型。指定初始状态分布是弥漫的。

Mdl = dssm(A,B,C,D,“StateType”, 2)
Mdl =状态空间模型类型:dssm状态向量长度:1观测向量长度:1状态扰动向量长度:1观测创新向量长度:1模型支持的样本量:无限状态变量:x1, x2,…万博1manbetx状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1(t) = x1(t-1) + u1(t)观测方程:y1(t) = x1(t) + (0.75)e1(t)初始状态分布:初始状态表示x1 0初始状态协方差矩阵x1 x1无穷状态类型x1扩散

Mdl是一个dssm模型。使用命令窗口中的显示来验证模型是否正确指定。

预测陈述未来10个时期,并估计预测的均方误差。

numPeriods = 10;[~,~,ForecastedX,XMSE] = forecast(Mdl,numPeriods,y);

用样本内状态和95% wald型预测区间绘制预测图。

forecastinterval (:,1) = forecastdx - 1.96*√(XMSE);forecast (:,2) = forecastdx + 1.96*sqrt(XMSE);图绘制(T-20: T, x (T-20: T),“- k”T + 1: T + numPeriods ForecastedX,“r”...T + 1: T + numPeriods ForecastIntervals,“。b”...T: T + 1, x(结束)* (3,1),[ForecastedX (1); ForecastIntervals (: 1)]],”:k”...“线宽”, 2)标题({“国家价值观及其预测”})包含(“时间”) ylabel (“国家价值”)({传奇“国家价值观”“预测状态”“95%预测区间”},...“位置”“最佳”)举行

图中包含一个轴对象。标题为State Values and Their Forecasts的axis对象包含7个类型为line的对象。这些对象表示状态值,预测状态,95%预测区间。

因为这个过程是非平稳的,所以预测的时间间隔会变大。

提示

Mdl不存储响应数据、预测器数据和回归系数。在必要时使用适当的输入或名称-值对参数提供它们。

算法

卡尔曼滤波器通过不更新与缺失观测值相对应的过滤状态估计来容纳缺失数据。换句话说,假设在周期有一个缺失的观测t.然后,对时期进行状态预测t基于前面的t- 1个观测值和周期过滤状态t是等价的。

参考文献

[1]德宾J.和S. J.库普曼。状态空间方法的时间序列分析.牛津:牛津大学出版社,2012年。

版本历史

在R2015b中引入