主要内容

预测

利用马尔可夫转换动态回归模型预测样本路径

描述

例子

YF=预测(MdlYnumPeriods返回最优点预测YF完全指定的马尔可夫转换动态回归模型Mdl超过长度的预测地平线numPeriods.预测的响应表示响应数据的延续Y

例子

YF=预测(MdlYnumPeriods名称,值使用由一个或多个名称-值对参数指定的附加选项。例如,“X”,X指定预测视界的外生数据,以评估模型中的回归组件。

例子

YFEstCov] =预测(___返回基于仿真的预测YF以及相应的预测误差协方差EstCov,使用前面语法中的任何输入参数组合。

例子

全部折叠

利用双状态马尔可夫转换动态回归模型预测一维响应过程的响应路径。这个示例为数据生成过程(DGP)使用任意参数值。

为DGP创建完全指定的模型

建立描述状态转换机制的双状态离散时间马尔可夫链模型。标签的政权。

P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,'attenames',[“扩张”“衰退”]);

mc是完全指定的dtmc对象。

对于每个制度,使用Arima创建一个模型,该模型描述了该制度内的响应过程。将子模型存放在向量中。

mdl1 = arima (“不变”,5,基于“增大化现实”技术的(0.3 - 0.2),...“方差”2);mdl2 = arima (“不变”,-5,基于“增大化现实”技术的, 0.1,...“方差”1);mdl = [mdl1;mdl2];

mdl1mdl2完全指定的华宇电脑对象。

从切换机制创建Markov切换动态回归模型mc和子模型的载体mdl

Mdl = msVAR (mc, Mdl);

Mdl是完全指定的msVAR对象。

模拟DGP的响应数据

预测需要在预测期之前有足够的数据来初始化模型。从DGP模拟120个观测值。

RNG(1);重复性的%y =模拟(Mdl, 120);

y是一个120乘1的随机响应路径。

计算最佳点预测

将模拟响应数据的前100个观测值作为预测的前样本,将最后20个观测值作为坚持样本。

idx0 = 1:10 0;idx1 = 101:120;y0 = y (idx0);日元= y (idx1);

从模型中计算1到20步的最优点预测。

yf =预测(Mdl, y0, 20);

yf是一个20乘1的最佳点预测向量。

绘制模拟响应数据和预测图。

图持有情节(idx0 y0,“b”);h =绘图(IDX1,Y1,“b——”);h1 =情节(idx1, yf,“r”);Yfill = [ylim fliplr(ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”,0.05)传奇([H H1],[“实际”“最佳”],“位置”“西北”) 标题(“预测”)举行

图中包含一个坐标轴。标题为forecast的坐标轴包含line、patch类型的4个对象。这些对象代表实际的,最佳的。

考虑计算最佳点预测

为DGP创建完全指定的模型

创建完全指定的马尔可夫转换动态回归模型。

P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,'attenames',[“扩张”“衰退”]);mdl1 = arima (“不变”,5,基于“增大化现实”技术的(0.3 - 0.2),...“方差”2);mdl2 = arima (“不变”,-5,基于“增大化现实”技术的, 0.1,...“方差”1);mdl = [mdl1;mdl2];Mdl = msVAR (mc, Mdl);

模拟DGP的响应数据

预测在预测视界之前需要足够的数据来初始化模型。从DGP模拟120个观测值。

RNG(10);重复性的%y =模拟(Mdl, 120);

y是一个120乘1的随机响应路径。

计算蒙特卡罗点预测

将模拟响应数据的前100个观测值作为预测的前样本,将最后20个观测值作为坚持样本。

idx0 = 1:10 0;idx1 = 101:120;y0 = y (idx0);日元= y (idx1);

从模型中计算1到20步的最优点预测。

yf1 =预测(Mdl, y0, 20);

yf2是一个20乘1的最佳点预测向量。

通过返回估计的预测误差方差,计算1到20步前的蒙特卡罗点预测。

[yf2, estVar] =预测(Mdl, y0, 20);

yf2是一个20乘1的蒙特卡罗点预测向量。estVAR是对应的估计预测误差方差的20乘1向量。

使用蒙特卡罗估计绘制模拟响应数据,预测和95%的预测间隔。

图持有情节(idx0 y0,“b”);h =绘图(IDX1,Y1,“b——”);h1 =情节(idx1, yf1,“r”);H2 = Plot(IDX1,YF2,'M');ciu = yf2 + 1.96*sqrt(estVar);95%以上置信水平CIL = YF2  -  1.96 * SQRT(ESTVAR);%降低95%的置信水平情节(idx1, ciu,“m -”。);情节(idx1, cil,“m -”。);yfill = [ylim fliplr (ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”[h h1 h2],[“实际”“最佳”“估计”],...“位置”“西北”) 标题(“点与区间预测”)举行

图中包含一个坐标轴。以“点与区间预测”为标题的坐标轴包含直线、patch类型的7个对象。这些对象代表实际的,最优的,估计的。

预测通过蒙特卡罗模拟估计预测和相应的预测误差方差。属性可以调整要采样的路径数“NumPaths”名称-值对的论点。考虑计算最佳点预测

创建完全指定的马尔可夫转换动态回归模型。

P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,'attenames',[“扩张”“衰退”]);mdl1 = arima (“不变”,5,基于“增大化现实”技术的(0.3 - 0.2),...“方差”2);mdl2 = arima (“不变”,-5,基于“增大化现实”技术的, 0.1,...“方差”1);mdl = [mdl1;mdl2];Mdl = msVAR (mc, Mdl);

从DGP模拟100个观测值。

RNG(10);重复性的%y =模拟(Mdl, 100);

通过返回估计的预测误差方差,计算1到20步前的蒙特卡罗点预测。为Monte Carlo仿真指定1000个样本路径。治疗观察y作为预报的样本。

[YF,Estvar] =预测(MDL,Y,20,“NumPaths”, 1000);

yf是一个20乘1的蒙特卡罗点预测向量。estVAR是对应的估计预测误差方差的20乘1向量。

考虑战后美国实际GDP增长率的两状态马尔可夫转换动态回归模型。模型的参数估计在[1]

建立Markov-Switching动态回归模型

建立一个描述状态转换机制的完全指定的离散马尔可夫链模型。标签的政权。

P = [0.92 0.08;0.26 - 0.74);mc = dtmc (P,'attenames',[“扩张”“衰退”]);

为两个制度创建单独的,完全指定的AR(0)模型。

西格玛= 3.34;跨州的%同性恋模型mdl1 = arima (“不变”, 4.62,“方差”σ^ 2);mdl2 = arima (“不变”, -0.48,“方差”σ^ 2);MDL = [mdl1 mdl2];

从切换机制中创建马尔科夫切换动态回归模型mc以及特定于状态的子模型mdl

Mdl = msVAR (mc, Mdl);

Mdl是完全指定的msVAR对象。

加载和预处理数据

预测需要观察来初始化模型。加载美国GDP数据集。

负载data_gdp.

数据包含1947年第一季度至2005年第二季度美国实际GDP的季度数据。利息的期限[1]是1947年:Q2-2004:Q2。有关数据集的更多详细信息,请输入描述在命令行。

通过以下方法将数据转换为年化速率系列:

  1. 将数据转换为估计期内的季度

  2. 按季度计算

qrate = diff(数据(2:230)。/数据(2:229);季度率%arate = 100 *((1 + qrate)。^ 4  -  1);%年度率

变换降低了第一个观察值。

预测的美国GDP增长率

预测模型在12个季度的预测水平。通过提供年化利率序列来初始化模型。

numperiods = 12;YF =预测(MDL,Anate,NumPeriods);

yf是模型预测的12乘1向量。yf (j)j-超前最优点预测。

用模型预测绘制1980年以来观察到的年化GDP率。

日期= DateTime(日期(3:230),“ConvertFrom”“datenum”...“格式”'yyyy:qqq'“场所”“en_US”);dt1980Q1 = datetime (“1980:Q1”'InputFormat''yyyy:qqq'...“场所”“en_US”);%指定1980年的美国日期格式:Q1。idx = date >= dt1980Q1;图;情节(日期(idx) arate (idx),'K'...日期(结束)+ Calquarter(1:NumPeriods),YF,“r——”)包含(“年”) ylabel (“国内生产总值(GDP)(折合成年率)”) recessionplot传奇(“观察”“预测”

图中包含一个坐标轴。轴包含6个类型为line, patch的对象。这些对象代表观察,预测。

用三状态马尔科夫转换动态回归模型计算二维VARX响应过程的最优预测和估计预测及相应的预测误差协方差矩阵。这个例子使用了任意的DGP参数值。

为DGP创建完全指定的模型

为切换机制创建三态离散时间马尔可夫链模型。

P = [10 1 1;1 10 1;1 1 10];mc = dtmc (P);

mc是完全指定的dtmc对象。dtmc规格化的行P所以它们的和是1

对于每个政体,使用它varm创建一个var模型,该模型描述了该制度内的响应过程。指定所有参数值。

%的常量C1 = [1; -1];c2 = [2; -2];C3 = [3; -3];%autoregression系数AR1 = {};Ar2 = {[0.5 0.1;0.5 - 0.5]};Ar3 = {[0.25 0;0 0] [0 0;0.25 0]};%回归系数Beta1 = (1, 1);Beta2 = [2 2;-2];Beta3 = [3 3 3;-3 -3];%创新协方差Sigma1 = [1 -0.1;-0.1 - 1];Sigma2 = [2 -0.2;-0.2 - 2);Sigma3 = [3 -0.3;-0.3 3];%varx子模型mdl1 = varm (“不变”C1,基于“增大化现实”技术的AR1,“β”Beta1,协方差的, Sigma1);mdl2 = varm (“不变”C2,基于“增大化现实”技术的AR2,“β”Beta2,协方差的, Sigma2);mdl3 = varm (“不变”C3,基于“增大化现实”技术的AR3,“β”Beta3,协方差的, Sigma3);mdl = [mdl1;mdl2;mdl3];

mdl包含三个完全指定的varm模型对象。

对于DGP,从切换机制中创建一个完全指定的马尔可夫切换动态回归模型mc和亚模型mdl

Mdl = msVAR (mc, Mdl);

Mdl是完全指定的msVAR模型。

预测模型忽略回归成分

如果您不提供外部数据,模拟预测忽略子模型中的回归组件。预测在预测视界之前需要足够的数据来初始化模型。从DGP模拟120个观测值。

RNG('默认');重复性的%Y =模拟(Mdl, 120);

Y是一个120乘2的模拟响应矩阵。行对应时间点,列对应系统中的变量。

将模拟响应数据的前100个观测值作为预测的前样本,将最后20个观测值作为坚持样本。

idx0 = 1:10 0;idx1 = 101:120;Y0 = Y (idx0:);%预测样本日元= Y (idx1,:);%抵抗样本

从模型中计算1到20步的最优和估计点预测。计算与估计预测相对应的预测误差协方差矩阵。

YF1 =预测(Mdl, Y0, 20);[YF2, EstCov] =预测(Mdl, Y0, 20);

YF1YF2分别为最佳预测和估计预测的20 × 2矩阵。EstCov是一个2 × 2 × 20的预测误差协方差数组。

提取预测视界内每个时段每个响应的预测误差方差。

estVar1 (,) = EstCov (1 1:);estVar2 (,) = EstCov (2 2:);

estVar1estVar2是一个预测误差差异的1×20 vector。

在单独的子图上绘制每个变量的数据、预测和95%预测区间。

图形子图(2,1,1)保持情节(idx0 Y0 (: 1),“b”);h =情节(idx1, Y1 (: 1),“b——”);h1 =情节(idx1, YF1 (: 1),“r”);h2 =情节(idx1, YF2 (: 1),'M');ciu = YF2(:,1) + 1.96*sqrt(estVar1');95%以上置信水平= YF2(:,1) - 1.96*sqrt(estVar1'); / /%降低95%的置信水平情节(idx1, ciu,“m -”。);情节(idx1, cil,“m -”。);yfill = [ylim fliplr (ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”[h h1 h2],[“实际”“最佳”“估计”],...“位置”“西北”) 标题(点与区间预测:系列1)举行次要情节(2,1,2)情节(idx0 Y0 (:, 2),“b”);h =情节(idx1, Y1 (:, 2),“b——”);h1 =情节(idx1, YF1 (:, 2),“r”);h2 =情节(idx1, YF2 (:, 2),'M');ciu = YF2(:,2) + 1.96*sqrt(estVar2');95%以上置信水平= YF2(:,2) - 1.96*sqrt(estVar2'); / /%降低95%的置信水平情节(idx1, ciu,“m -”。);情节(idx1, cil,“m -”。);yfill = [ylim fliplr (ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”[h h1 h2],[“实际”“最佳”“估计”],...“位置”“西北”) 标题(点与区间预测:第二系列)举行

图中包含2个轴。标题为点和区间预测的坐标轴1:系列1包含7个类型为线、补丁的对象。这些对象代表实际的,最优的,估计的。标题为点和区间预测的坐标轴2:系列2包含7个类型为线、补丁的对象。这些对象代表实际的,最优的,估计的。

包括回归成分的预测模型

从三维标准高斯分布生成120个随机观测值,模拟三个回归器的外生数据。

X = randn (120 3);

从DGP模拟120个观测值。为回归组件指定外生数据。

RNG('默认'Y =模拟(Mdl,120,“X”,X);

将模拟响应和外生数据的前100个观测值作为预测的前样本,将最后20个观测值作为坚持样本。

idx0 = 1:10 0;idx1 = 101:120;Y0 = Y (idx0:);日元= Y (idx1,:);X1 = X (idx1,:);

从模型中计算1到20步的最优和估计点预测。计算与估计预测相对应的预测误差协方差矩阵。为回归组件指定预测期外生数据。

YF1 =预测(Mdl, Y0, 20日“X”X1);[YF2, EstCov] =预测(Mdl, Y0, 20日“X”X1);estVar1 (,) = EstCov (1 1:);estVar2 (,) = EstCov (2 2:);

在单独的子图上绘制每个变量的数据、预测和95%预测区间。

图形子图(2,1,1)保持情节(idx0 Y0 (: 1),“b”);h =情节(idx1, Y1 (: 1),“b——”);h1 =情节(idx1, YF1 (: 1),“r”);h2 =情节(idx1, YF2 (: 1),'M');ciu = YF2(:,1) + 1.96*sqrt(estVar1');95%以上置信水平= YF2(:,1) - 1.96*sqrt(estVar1'); / /%降低95%的置信水平情节(idx1, ciu,“m -”。);情节(idx1, cil,“m -”。);yfill = [ylim fliplr (ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”[h h1 h2],[“实际”“最佳”“估计”],...“位置”“西北”) 标题(点与区间预测:系列1)举行次要情节(2,1,2)情节(idx0 Y0 (:, 2),“b”);h =情节(idx1, Y1 (:, 2),“b——”);h1 =情节(idx1, YF1 (:, 2),“r”);h2 =情节(idx1, YF2 (:, 2),'M');ciu = YF2(:,2) + 1.96*sqrt(estVar2');95%以上置信水平= YF2(:,2) - 1.96*sqrt(estVar2'); / /%降低95%的置信水平情节(idx1, ciu,“m -”。);情节(idx1, cil,“m -”。);yfill = [ylim fliplr (ylim)];Xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];填充(xfill yfill,'K'“FaceAlpha”[h h1 h2],[“实际”“最佳”“估计”],...“位置”“西北”) 标题(点与区间预测:第二系列)举行

图中包含2个轴。标题为点和区间预测的坐标轴1:系列1包含7个类型为线、补丁的对象。这些对象代表实际的,最优的,估计的。标题为点和区间预测的坐标轴2:系列2包含7个类型为线、补丁的对象。这些对象代表实际的,最优的,估计的。

输入参数

全部折叠

完全指定的马尔可夫转换动态回归模型,指定为msVAR返回的模型对象msVAR估计.完全指定模型对象的属性不包含值。

为预测提供初始值的响应数据,指定为numObs-经过-numSeries数字矩阵。

numObs为样本量。numSeries为响应变量的个数(Mdl。NumSeries).

行对应于观察值,最后一行包含最新的观察值。列对应于各个响应变量。

预测YF代表延续Y

数据类型:

预测期,或预测期内的时间点数量,指定为正整数。

数据类型:

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:“X”,X使用矩阵X作为预测视界的外生数据,以评估模型中的回归组件。

用于预测的初始状态概率,指定为逗号分隔对,由“S0”和一个长度为非负的数值向量numStatesS0对应于响应数据示例的末尾Y

预测规范化S0制作发行版。

默认情况下,预测适用于光滑的Y使用默认设置,然后设置S0到数据中状态的终端分发。

例子:“S0”,0.2 0.2 0.6

例子:“S0”,[0 1]将状态2指定为初始状态。

数据类型:

预测范围内的预测数据用于评估各子模型的回归成分Mdl,指定为逗号分隔的对,由“X”以及一个数值矩阵或数值矩阵的单元向量。第一行X中最后一次观测值所代表的周期之后的周期内的观测值Y

要在每个状态中使用相同预测器的子集,请指定X作为一个矩阵numPreds列,至少numPeriods行。列对应于不同的预测器变量。子模型使用关联矩阵的初始列,按顺序,直到子模型预测器的数量。列中的列数β的属性Mdl。子(j确定子模型的回归分量中的外源变量的数量j.如果行的数量超过numPeriods,然后预测使用最早的观察结果。

要在每个状态中使用不同的预测器,请指定这种矩阵的带长度的细胞向量numStates

默认情况下,预测中忽略回归组件Mdl

数据类型:

为模拟生成的示例路径数指定为逗号分隔对“NumPaths”一个正整数。如果预测只返回YF,它忽略了numpaths.

例子:“NumPaths”,1000年

数据类型:

输出参数

全部折叠

点预测,返回作为一个numPeriods-经过-numSeries数字矩阵。

如果预测只返回YF,那么点预测是最优的。否则,预测采用蒙特卡罗模拟估计点预测。

预测错误CoviRARCE,作为数字列向量或数字数组返回。

如果子Mdl。子表示单变量ARX模型,EstCov是一个numPeriods1的向量。如果Mdl。子表示多元VARX模型,EstCov是一个numSeries-经过-numSeries-经过-numPeriods数组中。

预测进行蒙特卡罗模拟计算EstCov

算法

汉密尔顿[2]提供统计上最优的、提前一步的预测YF马尔可夫转换动态回归模型。预测计算YF当用单个输出调用时,迭代到预测地平线。Markov-Switching动态回归模型的非线性导致非正规预测误差,其间隔和密度预测复杂化[3].作为一个结果,预测返回时切换到Monte Carlo方法EstCov

参考

[1]肖维特,M, J. D.汉密尔顿。“确定商业周期转折点。”在商业周期的非线性分析(《经济分析贡献》第276卷).(C. Milas, P. Rothman, D. van Dijk编)。阿姆斯特丹:翡翠集团出版有限公司,2006。

[2]汉密尔顿,j . D。《受政体变化影响的时间序列分析》中国经济学杂志.1990年第45卷,39-70页。

[3]Krolzig,小时。马尔可夫切换矢量自动转移.柏林:施普林格,1997年。

另请参阅

对象

功能

介绍了R2019b