马尔可夫切换动态回归模型的样本路径模拟
模拟一维响应过程的两状态马尔可夫切换动态回归模型的响应路径。此示例使用任意参数值。
创建完全指定型号
创建描述区域切换机制的两状态离散时间马尔可夫链模型。标记区域。
P = [0.9 0.1;0.3 0.7]。MC = DTMC(P,“StateNames”,(“扩展”“衰退”]);
mc
是完全指定的DTMC
对象。
对于每个制度,使用arima创建一个AR模型,描述该制度内的响应过程。将子模型存储在向量中。
mdl1=arima('持续的'5,“AR”[0.3 0.2],......“差异”,2);mdl2=arima('持续的'5,“AR”,0.1,......“差异”mdl=[mdl1;mdl2];
mdl1
和mdl2
完全指定的阿里玛
对象。
从切换机制创建马尔可夫切换动态回归模型mc
子模型的向量mdl
。
MDL = msVAR(MC,MDL);
Mdl
是完全指定的msVAR
对象。
模拟响应路径
从模型中生成一条长度为50的随机响应路径。
rng (1);%为了再现性y=模拟(Mdl,50);
Y
是一条响应路径的50×1向量。
绘制响应路径。
图绘制(y)包含(“时间”) ylabel (“响应”)
考虑在模型模拟响应路径。
创建马尔可夫切换动态回归模型。
P = [0.9 0.1;0.3 0.7]。MC = DTMC(P,“StateNames”,(“扩展”“衰退”]); mdl1=arima('持续的'5,“AR”[0.3 0.2],......“差异”,2);mdl2=arima('持续的'5,“AR”,0.1,......“差异”,1); mdl=[mdl1;mdl2];Mdl=msVAR(mc,Mdl);
模拟响应3,创新,并且从模型5个的观察状态的索引的路径。
rng (“默认”)%为了再现性(Y, E, SP) =模拟(Mdl 5“NumPaths”,3)
Y =5×310.7774 -5.6161 -3.1665 -2.2920 -5.2677 -3.8995 -4.7403 -6.3141
E=5×3-0.2050 0.9496 1.4633 -0.1241 -1.7076 0.7269 2.1068 1.0143 -0.3034 1.4090 1.6302 0.2939 1.4172 0.4889 -0.7873
SP=5×32 1 1 2 1 2 1 1 2 2 2 2 2 2 2
Y
,E
,SP.
是5乘3的矩阵。列表示独立的路径。
模拟单一路径的反应,创新,并进入长度为50的模拟范围。然后分别绘制每条路径。
[Y,E,SP] =模拟(MDL,50);图副区(3,1,1)图(Y)ylabel('回复')网格在子地块(3,1,2)地块(e)ylabel(“创新”)网格在子地块(3,1,3)图(sp,“米”) ylabel (“状态”) yticks([1 2]) yticklabels(Mdl.StateNames)
考虑战后美国实际GDP增长率的两状态马尔可夫转换动态回归模型。模型的参数估计在[1]。
创建描述政权开关机构离散时间马尔可夫链模型。标签的制度。
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];
创建描述美国GDP增长率的行为马氏切换的动态回归模型。
MDL = msVAR(MC,MDL);
Mdl
是完全指定的msVAR
对象。
从模型中生成100个响应、相应的创新和状态的随机路径。
RNG(1)%为了再现性[y,e,sp]=模拟(Mdl,100);
Y
是GDP比率的100乘1向量,然后呢E
是相应创新的100乘1向量。SP.
是状态指数的100×1向量。
考虑马尔可夫切换模型模拟美国GDP价格和经济的国家但是假设子模型是AR(1),而是考虑将模型拟合到周期1960中的观测值:Q1—2004:Q2。
创建估算的模型模板。指定AR(1)子模型。
mc=dtmc(NaN(2),“StateNames”,(“扩展”“衰退”])ar1=arima(1,0,0);Mdl=msVAR(mc[ar1;ar1]);
因为子模型是AR(1),每一个都需要一个样品前体观测来初始化其动态部件,用于估计。
创建包含估算过程初始参数值的模型。
MC0 = DTMC(0.5 *酮(2),“StateNames”,(“扩展”“衰退”]);submdl01 = arima ('持续的'1.“差异”1.“AR”,0.001); submdl02=arima('持续的',-1,“差异”1.“AR”,0.001);Mdl0 = msVAR(MC0,[submdl01; submdl02]);
加载数据。将整个集合转换为年化利率序列。
负载国内生产总值数据QRATE = DIFF(数据)./数据(1:(结束 - 1));arate = 100 *((1 + QRATE)^ 4 - 1);
使用与年化利率系列相关联的日期识别预采样和估计采样周期。由于转换应用第一个差异,因此必须从原始样本中删除第一个观察日期。
日期= datetime(日期(2:结束),“ConvertFrom”,'datenum',......“格式”,“yyyy:QQQ”,“区域设置”,'EN_US'); estPrd=日期时间([“1960:Q2”“2004年:Q2”],“InputFormat”,“yyyy:QQQ”,......“格式”,“yyyy:QQQ”,“区域设置”,'EN_US')idxEst=isbetween(日期,estPrd(1),estPrd(2));idxPre=dates
拟合模型来估算样品的数据。指定样品前观察。
y0=阿拉伯酸盐(idxPre);EstMdl=估算值(Mdl,Mdl0,阿拉伯酸盐(idxEst),'Y0',y0);
模拟从在估计周期拟合模型的响应路径。指定样品前观察。
RNG(1)%为了再现性numObs =总和(idx);aratesim =模拟(EstMdl numObs,'Y0',y0);
绘制的意见和年率的模拟路径,并通过识别衰退时期衰退图
。
图;[arate(idxEst) aratesim]) recessionplot xlabel(“时间”) ylabel (“国内生产总值(GDP)年率”) 传奇(“观察”,“模拟”);
使用从已知数据生成处理(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,“AR”,AR1,“差异”,V1);dgp2=arima('持续的',C2,“AR”,AR2,“差异”,V2);
为DGP创建完全指定的马尔可夫切换动态回归模型。
文章= msVAR (mc, [dgp1 dgp2]);
模拟来自DGP的响应路径
从DGP生成10条长度为1000的随机响应路径。
rng (1);%为了再现性N = 10;N = 1000;数据=模拟(DGP,N,“Numpaths”,N);
数据
是一个1000乘10的模拟响应矩阵。
创建估算模型
创建具有相同的结构,该数据生成处理部分指明的马尔可夫切换动态回归模型,但是指定一个未知的转换矩阵和未知子模型系数。
PEst=NaN(2);mcEst=dtmc(PEst);mdl=arima(1,0,0);Mdl=msVAR(mcEst,[Mdl;Mdl]);
创建包含初始值的模型
创建一个完全指定的马尔可夫转换动态回归模型,该模型的结构与Mdl
,但将所有可估计参数设置为初始值。
P0=0.5*个(2);mc0=dtmc(P0);mdl01=arima('持续的'1.“AR”, 0.5,“差异”2);mdl02 = arima ('持续的',-1,“AR”, 0.5,“差异”,1);Mdl0 = msVAR(MC0,[mdl01,mdl02]);
估计模型
将模型拟合到每个模拟路径。对于每个路径,绘制EM算法每次迭代的对数似然。
c1=零(N,1);c2=零(N,1);v1=零(N,1);v2=零(N,1);ar1=零(N,1);ar2=零(N,1);PStack=零(2,2,N);数字保持在对于i = 1:N EstModel = estimate(Mdl,Mdl0,Data(:,i))“IterationPlot”,true);c1(i)=EstModel.子模型(1).常数;c2(i)=EstModel.子模型(2).常数;v1(i)=EstModel.子模型(1).协方差;v2(i)=EstModel.子模型(2).协方差;ar1(i)=EstModel.子模型(1).AR{1};ar2(i)=EstModel.子模型(2).AR{1};PStack(:,:,i)=EstModel.Switch.P;终止持有从
评估准确性
计算每个估计参数的蒙特卡罗均值。
c1平均值=平均值(c1);c2平均值=平均值(c2);v1平均值=平均值(v1);v2平均值=平均值(v2);ar1平均值=平均值(ar1);ar2平均值=平均值(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
从二维VARX响应过程的三状态马尔可夫切换动态回归模型生成随机路径。此示例使用DGP的任意参数值。
为DGP创建完全指定的模型
为切换机制创建一个三状态离散时间马尔可夫链模型。
P=[1011;1101;1110];mc=dtmc(P);
mc
是完全指定的DTMC
对象。DTMC
标准化的行P
因此,它们的总和为1.
。
对于每个政体,使用它varm.
创建描述制度内响应过程的VAR模型。请指定所有参数值。
常量%C1 = (1, 1);C2 = (2, 2);C3 = [3; 3);%自回归系数AR1={};AR2={[0.50.1;0.50.5]};AR3={[0.25 0;0.0][0;0.25 0]};%回归系数β1的= [1 -1]。β2 = [2 2 -2 -2];素β3= [3 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,“AR”,AR1,“测试版”,β1,“协方差”,Sigma1);mdl2=varm('持续的',C2,“AR”,AR2,“测试版”,Beta2中,“协方差”,Sigma2);mdl3=varm('持续的',C3,“AR”,AR3,“测试版”,Beta3中,“协方差”,Sigma3);mdl=[mdl1;mdl2;mdl3];
mdl
包含三个完全指定的varm.
模型对象。
对于DGP,从切换机制中创建一个完全指定的马尔可夫切换动态回归模型mc
以及子模型mdl
。
MDL = msVAR(MC,MDL);
Mdl
是完全指定的msVAR
模型。
忽略回归组件模拟数据
如果不提供外生数据,模拟
忽略子模型中的回归组件。从模型中模拟3条独立的响应路径、创新路径和长度为5的状态指数。
rng (1);%为了再现性(Y, E, SP) =模拟(Mdl 5“NumPaths”,3)
Y=Y(:,:,1)=5.23871.5297 4.4290 4.2738 1.1668-1.2905-0.9654-0.2028-0.27010.8993 Y(:,:,2)=2.7737-2.5383-0.8651-1.1046-0.0511 0.3696 0.5826-0.8926-0.4022-0.6912 Y(:,,,:,3)=3.5443 0.8768 4.9748-0.7956 5.7213 0.2473-0.5805.3340-1.797
E = E(:,:,1)= 1.2387 1.5297 -0.3434 2.8896 0.1668 -0.2905 -1.9654 0.7972 -1.2701 1.8993 E(:,:,2)= 1.7737 -1.5383 -1.8651 -0.1046 -1.0511 1.3696 -0.4174 0.1074 1.4022 0.3088ë(:,:,3)= -0.4557 0.8768 1.1150 -1.0061 1.3134 0.7176 -0.6941 -0.6838 1.7972 -0.3340
SP=5×32 1 2 2 1 2 1 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1
Y
和E
分别是5乘2乘3的模拟响应和创新。行对应时间点,列对应系统中的变量,页对应路径。SP.
是一个5 × 3矩阵,其列对应路径。
模拟单一路径的反应,创新,并进入长度为50的模拟范围。然后分别绘制每条路径。
rng0=rng;%存储重新生成状态序列的设置。[Y,E,SP] =模拟(MDL,50);图副区(3,1,1)图(Y)ylabel(“响应”)网格在传奇([“y_1”“YU 2”])子地块(3,1,2)地块(E)ylabel(“创新”)网格在传奇([“e_1”“e_2”])子地块(3,1,3)图(SP,“米”) ylabel (“状态”)yticks([1 2 3])
模拟数据,包括回归组件
从三维标准高斯分布生成50个随机观测值,模拟三个回归器的外生数据。
X=randn(50,3);
生成一个长度为50的随机响应、创新和状态路径。为子模型回归组件指定模拟的外生数据。策划的结果。
rng(rng0);%在先前的模拟中再现状态序列。[Y,E,SP]=模拟(Mdl,50,“X”,X);图形子地块(3,1,1)图(Y)标签(“响应”)网格在传奇([“y_1”“YU 2”])子地块(3,1,2)地块(E)ylabel(“创新”)网格在传奇([“e_1”“e_2”])子地块(3,1,3)图(SP,“米”) ylabel (“状态”)yticks([1 2 3])
考虑在模型模拟路径从VARx前提子模型模式。
创建完全指定型号
创建马尔可夫转换模型,不包括回归组件。
P=[1011;1101;1110];mc=dtmc(P);C1=[1;-1];C2=[2;-2];C3=[3;-3];AR1={};AR2={[0.50.1;0.50.5]};AR3={[0.25 0;0 0][0;0.25 0]};Sigma1=[1-0.1;-0.11];Sigma2=[2-0.2;-0.2];Sigma3=[3-0.3;-0.3];mdl1=varm('持续的'C1,“AR”,AR1,“协方差”,Sigma1);mdl2=varm('持续的',C2,“AR”,AR2,“协方差”,Sigma2);mdl3=varm('持续的',C3,“AR”,AR3,“协方差”,Sigma3);mdl=[mdl1;mdl2;mdl3];MDL = msVAR(MC,MDL);
模拟多条路径
为50个时间步骤生成1000个随机响应路径。在第一个状态开始所有的模拟。
rng(10);%为了再现性S0=[1 0];Y=模拟(Mdl,50,‘S0’,S0,“NumPaths”, 1000);
Y
是一个50 × 2 × 1000的模拟响应路径阵列。
计算蒙特卡罗分布
对于每个变量和路径,计算过程均值。
mus=平均值(Y,1);
对于每个变量,绘制过程均值的蒙特卡罗分布。
图h1=直方图(mus(1,1,:),“正常化”,“概率”,......“宽度”,0.1);保持在h2=直方图(mus(1,2,:),“正常化”,“概率”,......“宽度”, 0.1);传奇([“y_1”“YU 2”])头衔(“过程方法”)举行从
对于每个变量和路径,计算过程标准差。
sigmas=std(Y,0,1);
对于每个变量,绘制过程标准偏差的蒙特卡罗分布图。
图H1 =直方图(西格玛(1,1,:),“正常化”,“概率”,......“宽度”, 0.05);持有在h2 =直方图(((1、2:)“正常化”,“概率”,......“宽度”, 0.05);传奇([“y_1”“YU 2”])头衔(“过程标准偏差”)举行从
numObs
—要生成的观察数为每个样本路径生成的观察数,指定为正整数。
数据类型:双重的
指定可选的逗号分隔的字符对名称,值
论据。姓名
是参数名和价值
为对应值。姓名
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
。
'NumPaths',1000, 'Y0',Y0
模拟1000
样品路径,并通过使用样品前体响应数据初始化每一个子模型的动态分量Y0
。
努帕斯
—生成的样本路径数1.
(默认)|正整数要生成的样本路径数,指定为逗号分隔对,由“NumPaths”
和一个正整数。
例子:“NumPaths”,1000年
数据类型:双重的
Y0
—采样前响应数据预采样响应数据,指定为逗号分隔对,由'Y0'
和数字矩阵或阵列。
用于每个相同的样品前数据努帕斯
路径,指定一个numPreSampleObs
-借-numSeries
矩阵,努帕斯
价值是多少努帕斯
,numPreSampleObs
是采样前观测值的数量,以及numSeries
是响应变量的数量。
为每个路径使用不同的预样例数据:
对于单变量ARX子模型,指定numPreSampleObs
-借-努帕斯
矩阵。
对于多变量VARX子模型,请指定numPreSampleObs
-借-numSeries
-借-努帕斯
数组中。
采样前观测值的数量numPreSampleObs
必须足以初始化所有子模型的AR项。如果numPreSampleObs
超过任何州的应收账款订单,模拟
使用最新的观察结果。
每一次模拟
切换状态,它会更新Y0
使用最新的模拟观测。
默认情况下,模拟
决定了Y0
通过子模型的初始状态(见S0
):
如果初始子模型是静止AR处理而不回归组件,模拟
将采样前观测值设置为无条件平均值。
除此以外,模拟
将样本前观察值设置为零。
数据类型:双重的
S0
—初始状态概率初始状态概率,指定为逗号分隔对,包括‘S0’
和长度的非负数值向量numStates
。
模拟
规格化S0
发行发行。
模拟
选择来自每个路径的初始状态S0
在随机的。从一个特定的初始状态开始,用指定的概率质量分布1.
在那种状态下。
默认情况下,模拟
设置S0
到由以下公式计算的稳态分布:渐近
。
例子:“S0”,0.2 0.2 0.6
例子:‘S0’,[01]
将状态2指定为初始状态。
数据类型:双重的
X
—预测数据用于评估模型所有子模型中回归成分的预测数据Mdl
,指定为逗号分隔的对,由“X”
和数字矩阵或数字矩阵的细胞载体。
要使用在每个国家的预测相同的一个子集,指定X
作为具有矩阵裸体
列和至少numObs
行。列对应不同的预测变量。子模型按顺序使用关联矩阵的初始列,直到子模型预测变量的数量。子模型中的列数bet
性质子模型(
确定子模型回归组件中外生变量的数量J
)
. 如果行数超过J
numObs
然后模拟
使用最新的观察结果。
要在每个状态中使用不同的预测器,请指定具有长度的矩阵的单元向量numStates
。
默认情况下,模拟
忽略中的回归组件Mdl
。
数据类型:双重的
[1]肖韦,M.,和J. D.哈密尔顿。“约会商业周期的转折点。”在商业周期的非线性分析(《经济分析贡献》第276卷)。(C. Milas, P. Rothman, D. van Dijk编)。阿姆斯特丹:翡翠集团出版有限公司,2006。
[2]汉密尔顿,J.D.“受体制变化影响的时间序列分析。”计量经济学杂志1990年第45卷,第39-70页。
[3]汉密尔顿,詹姆斯D。时间序列分析。普林斯顿:普林斯顿大学出版社,1994。
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。