预测
类:dssm
扩散状态空间模型的预测状态和观测
语法
描述
输入参数
numPeriods
- - - - - -预测的时间跨度
正整数
预测水平,指定为正整数。即软件返回1,..,numPeriods
预测。
数据类型:双
Y0
- - - - - -样本内,观察到的反应
数值向量的单元向量|数字矩阵
样本内,观察到的响应,指定为数值向量或矩阵的单元向量。
如果
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”
一个矩阵的单元向量。
B
必须包含至少numPeriods
细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度B
大于numPeriods
,则软件使用前者numPeriods
细胞。最后一个单元格表示预测范围中的最新时期。如果
Mdl
对于状态和状态扰动是时不变的,那么每一个单元格B
必须包含米——- - - - - -k矩阵,米每周期样本内状态的数量,和k是样本内的数量,每周期的状态扰动。默认情况下,软件使用Mdl。B
在整个预测范围内。如果
Mdl
是随时间变化的,那么单元格中矩阵的维数B
可以变化,但每个矩阵的维数必须与一个
在相应的时期。默认情况下,软件使用Mdl。B{end}
在整个预测范围内。
请注意
中的矩阵B
不能包含南
值。
数据类型:细胞
C
- - - - - -预测水平,测量敏感性,系数矩阵
矩阵的细胞向量
预测水平,测量灵敏度,系数矩阵,指定为逗号分隔的对,由“C”
一个矩阵的单元向量。
C
必须包含至少numPeriods
细胞。每个单元格必须包含一个矩阵,指定状态如何在预测范围内转换。如果的长度C
大于numPeriods
,则软件使用前者numPeriods
细胞。最后一个单元格表示预测范围中的最新时期。如果
Mdl
对于状态和观察是时不变的,那么每一个单元格C
必须包含n——- - - - - -米矩阵,n每个周期的样本内观测的数量,和米是每周期样本内状态的数目。默认情况下,软件使用Mdl.C
在整个预测范围内。如果
Mdl
时间是否随状态或观察而变化,那么单元格中矩阵的维数C
可以变化,但每个矩阵的维数必须与一个
而且D
在相应的时期。默认情况下,软件使用Mdl.C{结束}
在整个预测范围内。
请注意
中的矩阵C
不能包含南
值。
数据类型:细胞
D
- - - - - -预测-视界,观察-创新,系数矩阵
矩阵的细胞向量
预测-视界,观察-创新,系数矩阵,指定为逗号分隔对,由' 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
对应于单独的预测变量。Predictors0
必须有T行,其中行t对应于周期内观测到的预测因子t(Zt).展开后的观测方程为
换句话说,该软件使用回归组件对观测结果进行压缩。β是软件用所有其他参数估计的回归系数的时不变向量。
如果有n每个周期的观测值,然后软件将所有预测器序列回归到每个观测值。
如果你指定
Predictors0
,然后Mdl
必须是时不变的。否则,软件将返回一个错误。如果你指定
Predictors0
,那么你还必须指定β
而且PredictorsF
.如果
Mdl
是估计的状态空间模型(即由估计
),则设置为最佳做法Predictors0
你用来拟合的预测数据集Mdl
.
默认情况下,软件从状态空间模型中排除一个回归组件。
数据类型:双
PredictorsF
- - - - - -预测视界,状态空间模型观测方程中的预测变量
[]
(默认)|数字矩阵
样本内,状态空间模型观测方程中的预测变量,指定为由逗号分隔的对组成“Predictors0”
和一个T——- - - - - -d数字矩阵。T样本内周期的个数和d是预测变量的数量。行t对应于周期内观测到的预测因子t(Zt).展开后的观测方程为
换句话说,该软件使用回归组件对观测结果进行压缩。β是软件用所有其他参数估计的回归系数的时不变向量。
如果有n每个周期的观测值,然后软件将所有预测器序列回归到每个观测值。
如果你指定
Predictors0
,然后Mdl
必须是时不变的。否则,软件将返回一个错误。如果你指定
Predictors0
,那么你还必须指定β
而且PredictorsF
.如果
Mdl
是估计的状态空间模型(即由估计
),则设置为最佳做法Predictors0
你用来拟合的预测数据集Mdl
.
默认情况下,软件从状态空间模型中排除一个回归组件。
数据类型:双
输出参数
Y
-预测观测
矩阵|单元向量的数值向量
预测的观察,返回为矩阵或数值向量的单元格向量。
如果Mdl
那么,对于观测,这是一个时不变的状态空间模型吗Y
是一个numPeriods
——- - - - - -n矩阵。
如果Mdl
是时变的,状态空间模型相对于观测,那么Y
是一个numPeriods
数值向量的-by-1单元向量。细胞t的Y
包含一个nt-by-1周期预测观测值的数值向量t.
YMSE
-预测观测的误差方差
矩阵|单元向量的数值向量
预测观测值的误差方差,以矩阵或数值向量的单元向量形式返回。
如果Mdl
那么,对于观测,这是一个时不变的状态空间模型吗YMSE
是一个numPeriods
——- - - - - -n矩阵。
如果Mdl
是时变的,状态空间模型相对于观测,那么YMSE
是一个numPeriods
数值向量的-by-1单元向量。细胞t的YMSE
包含一个nt-by-1对应预测观测值的误差方差数值向量t.
X
-州预报
矩阵|单元向量的数值向量
状态预测,返回为矩阵或数值向量的单元格向量。
如果Mdl
那么,关于状态,这是一个定常的状态空间模型吗X
是一个numPeriods
——- - - - - -米矩阵。
如果Mdl
那么这是一个时变的状态空间模型吗X
是一个numPeriods
数值向量的-by-1单元向量。细胞t的X
包含一个米t-by-1周期预测观测值的数值向量t.
XMSE
-状态预测的误差方差
矩阵|单元向量的数值向量
状态预测的误差方差,以矩阵或数值向量的单元向量的形式返回。
如果Mdl
那么,关于状态,这是一个定常的状态空间模型吗XMSE
是一个numPeriods
——- - - - - -米矩阵。
如果Mdl
那么这是一个时变的状态空间模型吗XMSE
是一个numPeriods
数值向量的-by-1单元向量。细胞t的XMSE
包含一个米t-by-1对应预测观测值的误差方差数值向量t.
例子
时变扩散状态空间模型的预测观测
假设一个潜在的过程是一个随机游走。状态方程是
在哪里 为均值为0,标准差为1的高斯分布。
生成100个观察值的随机序列 ,假设该系列从1.5开始。
T = 100;X0 = 1.5;rng (1);%用于再现性u = randn(T,1);X = cumsum([x0;u]);X = X(2:结束);
进一步假设潜在过程受附加测量误差的影响。观测方程为
在哪里 为均值为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%预测区间”},...“位置”,“最佳”)举行从
因为这个过程是非平稳的,所以预测的时间间隔会变大。
含回归分量的弥漫状态空间模型的预测观测
假设失业率与名义国民生产总值(nGNP)之间的线性关系值得关注。进一步假设失业率是一个AR(1)系列。在状态空间形式中,该模型是
地点:
失业率是什么时候t.
为观察到的失业率变化,并以nGNP的回归为依据( ).
状态扰动的高斯级数是否具有均值为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%预测区间”})标题(“失业率的观察和预测变化”)
漫射状态空间模型的状态预测
假设一个潜在的过程是一个随机游走。状态方程是
在哪里 为均值为0,标准差为1的高斯分布。
生成100个观察值的随机序列 ,假设该系列从1.5开始。
T = 100;X0 = 1.5;rng (1);%用于再现性u = randn(T,1);X = cumsum([x0;u]);X = X(2:结束);
进一步假设潜在过程受附加测量误差的影响。观测方程为
在哪里 为均值为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%预测区间”},...“位置”,“最佳”)举行从
因为这个过程是非平稳的,所以预测的时间间隔会变大。
提示
Mdl
不存储响应数据、预测器数据和回归系数。在必要时使用适当的输入或名称-值对参数提供它们。
算法
的卡尔曼滤波器通过不更新与缺失观测值相对应的过滤状态估计来容纳缺失数据。换句话说,假设在周期有一个缺失的观测t.然后,对时期进行状态预测t基于前面的t- 1个观测值和周期过滤状态t是等价的。
参考文献
[1]德宾J.和S. J.库普曼。状态空间方法的时间序列分析.牛津:牛津大学出版社,2012年。
版本历史
在R2015b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。