利用马尔可夫转换动态回归模型预测样本路径
利用双状态马尔可夫转换动态回归模型预测一维响应过程的响应路径。这个示例为数据生成过程(DGP)使用任意参数值。
为DGP创建完全指定的模型
建立描述状态转换机制的双状态离散时间马尔可夫链模型。标签的政权。
P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,“StateNames”,[“扩张”“衰退”]);
mc
是完全指定的dtmc
对象。
对于每个制度,使用arima创建一个AR模型,描述该制度内的响应过程。将子模型存储在向量中。
mdl1 = arima (“不变”5,基于“增大化现实”技术的(0.3 - 0.2),...“方差”2);mdl2 = arima (“不变”5,基于“增大化现实”技术的, 0.1,...“方差”1);mdl = [mdl1;mdl2];
mdl1
和mdl2
完全指定的华宇电脑
对象。
从切换机制中创建一个马尔可夫切换动态回归模型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)传说(h1 [h]、[“实际”“最佳”],“位置”,“西北”)标题(“预测”)举行从
考虑计算最佳点预测.
为DGP创建完全指定的模型
创建完全指定的马尔可夫转换动态回归模型。
P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,“StateNames”,[“扩张”“衰退”]);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 =情节(idx1, yf2,“米”);ciu = yf2 + 1.96*sqrt(estVar);95%以上置信水平= 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],[“实际”“最佳”“估计”],...“位置”,“西北”)标题(“点与区间预测”)举行从
预测
通过蒙特卡罗模拟估计预测和相应的预测误差方差。属性可以调整要采样的路径数“NumPaths”
名称-值对的论点。考虑计算最佳点预测.
创建完全指定的马尔可夫转换动态回归模型。
P = [0.9 0.1;0.3 - 0.7);mc = dtmc (P,“StateNames”,[“扩张”“衰退”]);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步前的蒙特卡罗点预测。为蒙特卡罗模拟指定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,“StateNames”,[“扩张”“衰退”]);
为这两个机制创建单独的、完全指定的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: - 2004:沿。有关数据集的更多细节,请输入描述
在命令行。
通过以下方法将数据转换为年化速率系列:
在估计期间内,将数据转换为每季度的速率
按季度计算
qrate = diff(数据(2:230)。/数据(2:229);季度率%Arate = 100*((1 + qrate)。^ 4 - 1);%折合成年率
变换降低了第一个观察值。
预测的美国GDP增长率
预测模型在12个季度的预测水平。通过提供年化利率序列来初始化模型。
numPeriods = 12;yf =预测(Mdl arate 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”,...日期(结束)+ calquarters (1: numPeriods)、yf,“r——”)包含(“年”) ylabel (“国内生产总值(GDP)(折合成年率)”) recessionplot传奇(“观察”,“预测”)
用三状态马尔科夫转换动态回归模型计算二维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);%自回归系数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);
YF1
和YF2
分别为最佳预测和估计预测的20 × 2矩阵。EstCov
是一个2 × 2 × 20的预测误差协方差数组。
提取预测视界内每个时段每个响应的预测误差方差。
estVar1 (,) = EstCov (1 1:);estVar2 (,) = EstCov (2 2:);
estVar1
和estVar2
是预测误差方差的1 × 20向量。
在单独的子图上绘制每个变量的数据、预测和95%预测区间。
图次要情节(2,1,1)在情节(idx0 Y0 (: 1),“b”);h =情节(idx1, Y1 (: 1),“b——”);h1 =情节(idx1, YF1 (: 1),“r”);h2 =情节(idx1, YF2 (: 1),“米”);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),“米”);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],[“实际”“最佳”“估计”],...“位置”,“西北”)标题(点与区间预测:第二系列)举行从
包括回归成分的预测模型
从三维标准高斯分布生成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),“米”);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),“米”);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],[“实际”“最佳”“估计”],...“位置”,“西北”)标题(点与区间预测:第二系列)举行从
Y
- - - - - -响应数据为预测提供初始值的响应数据,指定为numObs
——- - - - - -numSeries
数字矩阵。
numObs
为样本量。numSeries
为响应变量的个数(Mdl。NumSeries
).
行对应于观察值,最后一行包含最新的观察值。列对应于各个响应变量。
预测YF
代表着Y
.
数据类型:双
numPeriods
- - - - - -预测的时间跨度预测期,或预测期内的时间点数量,指定为正整数。
数据类型:双
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“X”,X
使用矩阵X
作为预测视界的外生数据,以评估模型中的回归组件。
“X”
- - - - - -预测数据预测范围内的预测数据用于评估各子模型的回归成分Mdl
,指定为逗号分隔的对,由“X”
以及一个数值矩阵或数值矩阵的单元向量。第一行X
中最后一次观测值所代表的周期之后的周期内的观测值Y
.
要在每个状态中使用相同预测器的子集,请指定X
作为一个矩阵numPreds
列,至少numPeriods
行。列对应于不同的预测变量。子模型使用相关矩阵的初始列,按顺序排列,直至子模型预测器的数量。的列数β
的属性Mdl。子(
确定子模型回归组件中外生变量的数量j
)
.如果行数超过j
numPeriods
,然后预测
使用最早的观察结果。
要在每个状态中使用不同的预测器,请指定这种矩阵的带长度的细胞向量numStates
.
默认情况下,预测
中忽略回归组件Mdl
.
数据类型:双
“NumPaths”
- - - - - -生成的样本路径数One hundred.
(默认)|正整数YF
点预测点预测,返回作为一个numPeriods
——- - - - - -numSeries
数字矩阵。
如果预测
只返回YF
,那么点预测是最优的。否则,预测
采用蒙特卡罗模拟估计点预测。
EstCov
-预测误差协方差预测误差协方差,作为数字列向量或数字数组返回。
如果子Mdl。子
表示单变量ARX模型,EstCov
是一个numPeriods
1的向量。如果Mdl。子
表示多元VARX模型,EstCov
是一个numSeries
——- - - - - -numSeries
——- - - - - -numPeriods
数组中。
预测
进行蒙特卡罗模拟计算EstCov
.
汉密尔顿[2]提供统计上最优的、提前一步的预测YF
马尔可夫转换动态回归模型。预测
计算YF
当使用单一输出调用时,迭代到预测范围。马尔可夫转换动态回归模型的非线性导致预测误差的非正态性,使区间和密度预测复杂化[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年。
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。