主要内容

估计

配合马尔可夫切换动态回归模型数据

描述

例子

EstMdl=估计(MDLMdl0Y估计马尔可夫转换动态回归模型的参数MDL估计将模型与响应数据相匹配Y和通过处理完全指定马尔可夫切换动态回归模型的参数值初始化估计过程Mdl0作为初始值。估计使用Hamilton描述的期望最大化(EM)算法的一个版本[3]

例子

EstMdl=估计(MDLMdl0Y名称,值使用由一个或多个名称值参数中指定的其他选项。例如,“IterationPlot”,真的在算法结束后显示对数似然与迭代步骤的关系图。

例子

EstMdlSS.logL) =估计(___也返回预期的平滑状态概率SS.估计的对数似然logL当算法终止时,使用前面语法中的任何输入参数组合。

EstMdlSS.logL) =估计(斧头___在由指定的坐标轴曲线斧头而不是当前的轴(gca).的选项斧头可以在前面的语法先于任何输入参数的组合。

EstMdlSS.logLh) =估计(斧头___也返回情节句柄h使用h在创建绘图后修改它的属性。

例子

全部折叠

考虑战后美国实际GDP增长率的两状态马尔可夫切换动态回归模型,如估计[1]

创建的部分指明模型估计

通过指定具有未知转移矩阵的两状态离散时间马尔可夫链和AR(0)(仅为常数)子模型,为朴素估计器建立马尔可夫切换动态回归模型。标签的政权。

P = NaN的(2);MC = DTMC(P,“StateNames”,[“扩张”“经济衰退”]);MDL = ARIMA(0,0,0);MDL = msVAR(MC,[MDL; MDL]);

MDL是部分指定的msVAR目的。的-值元素开关属性表示可估计的参数。

创建包含初始值的完全指定模型

估计过程要求对所有估计的参数的初始值。创建一个完全指定的马尔可夫转换动态回归模型,该模型具有与MDL,但将所有可估计参数设为初值。这个例子使用了任意的初始值。

P0 = 0.5 * 1 (2);mc0 = dtmc (P0,“StateNames”, Mdl.StateNames);mdl01 = arima ('持续的', 1“方差”1);mdl02 = ARIMA('持续的', 1“方差”1);Mdl0 = msVAR (mc0 [mdl01;mdl02]);

Mdl0是一部全面规定msVAR目的。

加载和数据预处理

加载美国GDP数据集。

负载Data_GDP

数据包含1947年第一季度至2005年第二季度美国实际GDP的季度数据。估算周期为[1]1947: - 2004:沿。有关数据集的更多细节,请输入描述在命令行。

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

  1. 在估计期间内,将数据转换为每季度的速率

  2. 按季度计算

qrate = diff(数据(2:230)。/数据(2:229);%按季率Arate = 100*((1 + qrate)。^ 4 - 1);%折合成年率

估计模型

合适的模型MDL到年化利率序列arate.指定Mdl0作为包含初始可估计参数值的模型。

EstMdl =估计(Mdl Mdl0 arate);

EstMdl是一个估计的(完全指定的)马尔可夫转换动态回归模型。EstMdl。开关是一个估计的离散马尔可夫链模型(DTMC对象),EstMdl。子是估计的单变量VAR(0)模型的向量(varm对象)。

显示估计的特定于状态的动态模型。

EstMdlExp = EstMdl.Submodels (1)
EstMdlExp = varm with properties:描述:“一维VAR(0)模型”SeriesNames:“Y1”NumSeries: 1 P: 0 Constant: 4.90146 AR:{}趋势:0 Beta: [1×0 matrix]协方差:12.087
EstMdlRec = EstMdl.Submodels (2)
EstMdlRec = varm with properties:描述:"1维VAR(0)模型" SeriesNames: "Y1" NumSeries: 1 P: 0 Constant: 0.0084884 AR:{}趋势:0 Beta: [1×0 matrix]协方差:12.6876

显示估计的状态转移矩阵。

EstP = EstMdl.Switch.P
EstP =2×20.9088 0.0912 0.2303 0.7697

显示包含参数估计和推断的估计摘要。

总结(EstMdl)
描述1维msVAR模型与2个子模型切换估计转移矩阵:0.909 0.091 0.230 0.770拟合有效样本量:228估计参数数:2约束参数数:0 LogLikelihood: -639.496 AIC: 1282.992 BIC:1289.851 Submodels Estimate StandardError TStatistic PValue _________ _____________ __________ ___________ State 1 Constant(1) 4.9015 0.23023 21.289 1.4301e-100 State 2 Constant(1) 0.0084884 0.2359 0.035983 0.9713

考虑模型和数据估计马尔可夫转换动态回归模型

创建估计部分指定的模型。

P = NaN的(2);MC = DTMC(P,“StateNames”,[“扩张”“经济衰退”]);MDL = ARIMA(0,0,0);MDL = msVAR(MC,[MDL; MDL]);

创建包含评估过程初始参数值的完全指定的模型。

P0 = 0.5 * 1 (2);mc0 = dtmc (P0,“StateNames”, Mdl.StateNames);mdl01 = arima ('持续的', 1“方差”1);mdl02 = ARIMA('持续的', 1“方差”1);Mdl0 = msVAR (mc0 [mdl01;mdl02]);

加载和预处理的数据。

负载Data_GDPqrate = diff(数据(2:230)。/数据(2:229);Arate = 100*((1 + qrate)。^ 4 - 1);

使模型与数据相符。当估计过程结束时,绘制对数似然与迭代步骤的对比图。

EstMdl =估计(MDL,Mdl0,arate,“IterationPlot”,真正的);

图中包含一个轴对象。标题为“期望最大化算法”的axis对象包含一个类型为line的对象。

使用来自已知数据生成过程(DGP)的模拟数据评估估计精度。本示例使用任意参数值。

为DGP创建模型

为切换机制建立一个完全指定的双状态离散时间马尔可夫链模型。

P = [0.7 0.3;0.1 - 0.9);MC = DTMC(P);

对于每个状态,创建完全指明的AR(1),用于响应过程模型。

%的常量C1 = 5;C2 = 2;%自回归系数AR1 = 0.4;AR2 = 0.2;%方差V1 = 4;V2 = 2;% AR的子dgp1 = arima ('持续的',C1,基于“增大化现实”技术的AR1,“方差”V1);dgp2 = arima ('持续的',C2,基于“增大化现实”技术的AR2,“方差”V2);

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

文章= msVAR (mc, [dgp1 dgp2]);

模拟DGP的响应路径

产生从DGP长度1000的10条随机响应路径。

rng (1);%的再现性n = 10;N = 1000;数据=模拟(DGP,N,“Numpaths”,N);

数据是模拟响应的1000乘10矩阵。

创建估算模型

创建具有相同的结构,该数据生成处理部分指明的马尔可夫切换动态回归模型,但是指定一个未知的转换矩阵和未知子模型系数。

害虫=南(2);mc = dtmc(害虫);mdl = arima (1,0,0);Mdl = msVAR (mc, [Mdl;mdl));

创建包含初值的模型

创建一个完全指定的马尔可夫转换动态回归模型,该模型具有与MDL,但将所有可估计参数设为初值。

P0 = 0.5 * 1 (2);mc0 = dtmc (P0);mdl01 = arima ('持续的', 1基于“增大化现实”技术的,0.5%,“方差”,2);mdl02 = ARIMA('持续的', 1基于“增大化现实”技术的,0.5%,“方差”1);Mdl0 = msVAR(MC0,[mdl01,mdl02]);

估计模型

使模型适合于每个模拟路径。对于每条路径,绘制EM算法每次迭代的对数似然曲线。

c1 = 0 (N, 1);c2 = 0 (N, 1);v1 = 0 (N, 1);v2 = 0 (N, 1);ar1 = 0 (N, 1);ar2 = 0 (N, 1);PStack = 0 (2 2 N);图保存I = 1:N EstModel =估计(MDL,Mdl0,数据(:,i)中,“IterationPlot”,真正的);c1 (i) = EstModel.Submodels .Constant (1);c2 (i) = EstModel.Submodels (2) .Constant;v1 (i) = EstModel.Submodels .Covariance (1);v2 (i) = EstModel.Submodels (2) .Covariance;ar1 (i) = EstModel.Submodels (1) .AR {1};ar2 (i) = EstModel.Submodels (2) .AR {1};PStack (:,:, i) = EstModel.Switch.P;结束持有

图中包含一个轴对象。标题为期望最大化算法的轴对象包含10个类型为line的对象。

评估的准确性

计算每个估计参数的蒙特卡罗均值。

c1Mean =意味着(c1);c2Mean =意味着(c2);v1Mean =意味着(v1);v2Mean =意味着(v2);ar1Mean =意味着(ar1);ar2Mean =意味着(ar2);PMean =意味着(PStack, 3);

将总体参数与相应的蒙特卡罗估计进行比较。

DGPvsEstimate = [...C1 c1Mean C2 c2Mean V1 v1Mean V2 v2Mean AR1 ar1Mean AR2 ar2Mean]
DGPvsEstimate =6×25.0000 5.0260 -2.0000 -1.9615 4.0000 3.9710 2.0000 1.9903 0.4000 0.4061 0.2000 0.2017
P
P =2×20.7000 0.3000 0.1000 0.9000
PEstimate = PMean
PEstimate =2×20.7065 0.2935 0.1023 0.8977

考虑数据估计马尔可夫转换动态回归模型,但假设利息时期是1960年:Q1-2004年:Q2。另外,考虑在每个子模型中添加一个自回归术语。

创建部分指明的马尔可夫切换动态回归模型估计。指定AR(1)的子模型。

P = NaN的(2);MC = DTMC(P,“StateNames”,[“扩张”“经济衰退”]);mdl = arima (1,0,0);MDL = msVAR(MC,[MDL; MDL]);

由于子模型是AR(1),每个子模型都需要一个预样本观测来初始化其动态分量进行估计。

创建包含评估过程的初始参数值的模型。

P0 = 0.5 * 1 (2);mc0 = dtmc (P0,“StateNames”, Mdl.StateNames);mdl01 = arima ('持续的', 1“方差”, 1基于“增大化现实”技术的, 0.001);mdl02 = ARIMA('持续的', 1“方差”, 1基于“增大化现实”技术的, 0.001);Mdl0 = msVAR (mc0 [mdl01;mdl02]);

加载数据。将整个集合转换为年化速率系列。

负载Data_GDPqrate = diff(数据)。/数据(1:结束(- 1));Arate = 100*((1 + qrate)。^ 4 - 1);

使用与年化率系列相关的日期确定前样本和估计样本时期。由于转换应用第一个差异,您必须从原始样本中删除第一个观察日期。

日期=日期时间(日期(2:结束),'ConvertFrom''datenum'...“格式”“yyyy QQQ”“场所”'EN_US');estPrd = datetime ([“1960:第二季”“2004:第二季”],“InputFormat”“yyyy QQQ”...“格式”“yyyy QQQ”“场所”'EN_US');idx = isbetween(日期、estPrd (1) estPrd (2));idxPre = date < estPrd(1);%的样品前是以前的四分之一。

将模型与估计样本数据拟合。指定预样本观测值,并在每次迭代结束时绘制对数似然曲线。

EstMdl =估计(Mdl、Mdl0 arate (idx),“Y0”arate (idxPre),...“IterationPlot”,真正的);

图中包含一个轴对象。标题为“期望最大化算法”的axis对象包含一个类型为line的对象。

考虑模型和数据估计马尔可夫转换动态回归模型

创建估计部分指定的模型。

P = NaN的(2);MC = DTMC(P,“StateNames”,[“扩张”“经济衰退”]);MDL = ARIMA(0,0,0);MDL = msVAR(MC,[MDL; MDL]);

创建包含评估过程初始参数值的完全指定的模型。

P0 = 0.5 * 1 (2);mc0 = dtmc (P0,“StateNames”, Mdl.StateNames);mdl01 = arima ('持续的', 1“方差”1);mdl02 = ARIMA('持续的', 1“方差”1);Mdl0 = msVAR (mc0 [mdl01;mdl02]);

加载和预处理的数据。

负载Data_GDPqrate = diff(数据(2:230)。/数据(2:229);Arate = 100*((1 + qrate)。^ 4 - 1);

使模型与数据相符。当算法终止时,返回预期的平滑状态概率和日志可能性。

[EstMdl, SS, logL] =估计(Mdl, Mdl0 arate);

SS.为期望平滑状态概率的228 × 2矩阵;行对应于估计样本中的周期,列对应于制度。logL是最终的对数似然。

显示估计样本中最后一段时间的期望平滑状态概率,并显示最终的对数似然。

党卫军(最终,:)
ans =1×20.8985 0.1015
logL
logL = -639.4962

将模拟数据拟合到一个带有VARX子模型的马尔科夫转换动态回归模型中。为估计指定等式约束。本示例使用任意参数值。

为DGP创建模型

创建一个完全指明的,三态离散时间马尔可夫链为切换机构的模型。

P = [0.8 0.1 0.1;0.2 0.6 0.2;0 0.1 0.9]。MC = DTMC(P);

对于每个状态,创建用于响应过程完全指明VARx前提(1)模型。指定相同的模型常数和滞后1点为所有子模型AR系数矩阵。对于每个模型,指定一种外源变量不同的2×1回归系数。

%的常量C = (1, 1);%自回归系数AR = {[0.6 0.1;0.4 0.2]};%回归系数Beta1 = [0.2, -0.4];Beta2 = [0.6, -1.0];Beta3 = [0.9, -1.3];% VAR的子文章= varm ('持续的'C基于“增大化现实”技术的基于“增大化现实”技术,协方差的5 *眼(2));dgp1 =文章;dgp1。bet= Beta1; dgp2 = dgp; dgp2.Beta = Beta2; dgp3 = dgp; dgp3.Beta = Beta3;

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

文章= msVAR (mc, [dgp1;dgp2;dgp3]);

从DGP模拟数据

模拟外生序列的数据,从平均值为0和方差为100的高斯分布生成1000个观测值。

rng (1);%的再现性X = 10 * randn (1000 1);

从DGP生成长度为1000的随机响应路径。为子模型回归组件指定模拟的外生数据。

数据=模拟(DGP,1000,“X”, X);

数据是一个1000乘1的模拟响应向量。

创建估算模型

创建一个部分指定的Markov-switching动态回归模型,该模型具有与数据生成过程相同的结构,但指定一个未知的转移矩阵和未知的回归系数。指定常数和AR系数矩阵的真值。

害虫=南(3);mc = dtmc(害虫);mdl = varm (2, 1);mdl。常数= C;mdl。基于“增大化现实”技术=基于“增大化现实”技术;mdl。bet= NaN(2,1); Mdl = msVAR(mcEst,[mdl; mdl; mdl]);

因为常数和AR系数矩阵的值在MDL估计将它们作为等式约束进行估计。

创建包含初值的模型

创建一个完全指定的马尔可夫转换动态回归模型,该模型具有与MDL,但将所有可估计参数设为初值,并将具有等式约束的参数设为中所规定的值MDL

P0 = (1/3) * 1 (3);mc0 = dtmc (P0);mdl0 = varm ('持续的'C基于“增大化现实”技术的基于“增大化现实”技术,协方差的、眼(2));mdl01 = mdl0;mdl01。bet= [0.1;-0.1]; mdl02 = mdl0; mdl02.Beta = [0.5;-0.5]; mdl03 = mdl0; mdl03.Beta = [1;-1]; Mdl0 = msVAR(mc0,[mdl01; mdl02; mdl03]);

估计模型

将模型与模拟数据拟合。为回归组件指定外生数据。绘制EM算法每次迭代的对数似然曲线。

图EstMdl =估计(MDL,Mdl0,数据“X”, X,“IterationPlot”,真正的);

图中包含一个轴对象。标题为“期望最大化算法”的axis对象包含一个类型为line的对象。

评估的准确性

将估计的回归系数向量和转移矩阵与它们的真值进行比较。

Beta1
Beta1的=2×10.2000 - -0.4000
Beta1Estimate = EstMdl.Submodels(1)度量
Beta1Estimate =2×10.1596 - -0.4040
Beta2
Beta2中=2×10.6000 - -1.0000
Beta2Estimate = EstMdl.Submodels(2)度量
Beta2Estimate =2×10.5888 - -0.9771
Beta3
素β3=2×10.9000 - -1.3000
Beta3Estimate = EstMdl.Submodels(3).Beta
Beta3Estimate =2×10.8987 - -1.2991
P
P =3×30.8000 0.1000 0.1000 0.2000 0.6000 0.2000 0 0.1000 0.9000
PEstimate = EstMdl.Switch.P
PEstimate =3×30.7787 0.0856 0.1357 0.1366 0.6906 0.1727 0.0086 0.0787 0.9127

输入参数

全部折叠

部分指定的马尔可夫切换动态回归模型,用于表示约束和可估计的模型参数,指定为msVAR模型对象通过返回msVAR.性能MDL描述模型结构并指定参数。

估计在估计过程中,将指定的参数视为等式约束。

估计适合不明(-value)参数Y

完全指定用于初始化估计过程的马尔可夫切换动态回归模型,指定为msVAR模型对象通过返回msVAR.完全指定的模型对象的属性不包含值。

Mdl0是一份MDL被初始值替换的值。

提示

为了广泛覆盖参数空间,从的多个实例运行算法Mdl0.有关详细信息,请参阅算法

观察到的响应数据估计适合的模型,指定为numObs——- - - - - -numSeries数字矩阵。

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

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

Y中样本前响应序列的延续Y0

数据类型:

上轴绘制数似然每次迭代时,“IterationPlot”名称-值参数是真的,指定为目的。

默认情况下,估计地块为当前轴(gca).

如果“IterationPlot”估计忽略了斧头

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:Y0, Y0, X, X, IterationPlot,真的使用矩阵Y0作为估计所需的前样本响应,在每个由预测数据组成的子模型中包括一个线性回归组件X和指定的回归系数,并绘制每个迭代的对数似然曲线。

预采样响应数据,指定为逗号分隔对,由“Y0”A.numPreSampleObs——- - - - - -numSeries数字矩阵。

前样本观察的数量numPreSampleObs必须足以初始化所有子模型的AR项。如果numPreSampleObs超过任何状态的AR顺序,估计使用最新的观察结果。默认情况下,Y0是的初始段Y,从而减少了有效样本量。

数据类型:

初始状态概率,指定为逗号分隔对,由“S0”和一个长度为非负的数值向量numStates

估计规格化S0.制作发行版。

默认情况下,S0.稳态分布是由渐近

估计更新S0.在每次迭代中使用初始分布的期望平滑概率。

例子:“S0”,0.2 0.2 0.6

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

数据类型:

的所有子模型中用于评估回归成分的预测数据MDL,指定为逗号分隔的对,由“X”以及一个数值矩阵或数值矩阵的单元向量。

要在每个状态中使用相同预测器的子集,请指定X作为具有矩阵numPreds列,至少numObs行。列对应于不同的预测变量。子模型使用相关矩阵的初始列,按顺序排列,直至子模型预测器的数量。的列数bet的属性Mdl。子(j确定子模型回归组件中外生变量的数量j.如果行数超过numObs,然后估计使用最新的观察结果。

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

默认情况下,估计中忽略回归分量MDL

数据类型:

收敛公差,指定为逗号分隔对组成“宽容”和一个正数标量。

迭代后EM算法终止于该对数似然logL变化小于宽容

例子:“宽容”,1 e-6

数据类型:

EM算法的最大迭代次数,指定为逗号分隔对组成“MaxIterations”一个正整数。

例子:“MaxIterations”,1000年

数据类型:

标志在每一次迭代绘制对数似然,指定为逗号分隔的一对组成的“IterationPlot”和这个表中的值。

价值 描述
真的 当算法终止时,估计示出了在每个迭代步骤中的对数似然的曲线图。
估计没有显示情节。

例子:“IterationPlot”,真的

数据类型:逻辑

输出参数

全部折叠

估计马尔可夫切换动态回归模型,返回一个msVAR目的。EstMdl是一份MDL用参数估计替换的值。EstMdl完全指定。

请注意

行规范化可以改变输入模型的转换矩阵中的指定值Mdl.Switch.P

当算法终止时,预期的平滑状态概率,返回为numObs——- - - - - -numStates数字矩阵。

响应数据的对数似然估计Y关于估计模型EstMdl当算法终止时,作为数字标量返回。

迭代图的句柄,当时作为图形对象返回IterationPlot真的

h包含唯一的绘图标识符,可以使用该标识符查询或修改绘图的属性。

提示

  • [4],汉密尔顿警告说:“尽管研究人员可能会试图使用最普遍的规范,因为所有的参数都在大量的制度中变化……在实践中,这通常要求的比数据能够提供的更多。”Hamilton建议采用精简模型和选择性估计,以“将重点限制在可能发生变化的几个最重要的参数上”。

  • 低方差的数据生成过程会导致状态推断和后续参数估计的困难。在这种情况下,考虑扩展数据。方差是平方的。

算法

  • 估计实现中描述的EM算法的一个版本[2][3], 和[4].给定模型参数的初始估计Mdl0估计迭代以下过程直到收敛:

    1. 期望的步骤,估计适用于光滑的对数据进行分析,得到每个时间步骤的潜在状态概率的推断和总体数据对数似然的估计。

    2. 最大化的一步,估计在更新每个子模型中的参数估计之前,使用期望步骤中的预期平滑概率来加权数据。

  • 切换模型混合密度的似然曲面可以包含局部极大值和奇异值[2].如果是这样,则将具有非零模型方差的最大局部极大值视为最大似然估计(MLE)。如果Mdl0就在MLE附近估计通常收敛于它,但这种收敛并不能保证。

  • 估计处理两种类型的约束:

    • 在子模型参数,约束其估计的目标函数varm在每个最大化步骤对象使

    • 转移概率的约束估计通过在每次迭代后的转移矩阵的最大估计投影到受约束的参数空间强制实施

    在子模型的创新约束方差和协方差不受支持。金宝app估计计算估计后的创新协方差,而不管它们的值。

参考文献

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

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

[3]汉密尔顿,詹姆斯D。时间序列分析.普林斯顿:普林斯顿大学出版社,1994。

[4]汉密尔顿,j . D。《宏观经济制度与制度变迁》在手册的宏观经济学.(H.尤利格和J.泰勒编)。阿姆斯特丹:爱思唯尔,2016年

[5]科尔,E。“状态转换模型:股票市场指数的一个例子”。鹿特丹:伊拉斯谟经济学院计量经济研究所,2010。

另请参阅

对象

功能

介绍了R2019b