原文链接:http://tecdat.cn/?p=19918

原文出处:拓端数据部落公众号

本文估计实际GDP增长率的两状态Markov区制转换动态回归模型 。

创建模型进行估计

通过指定转移矩阵和两个区制的AR(0)(仅常数)子模型的两状态离散时间马尔可夫链,为朴素估计量创建马尔可夫转换动态回归模型。标记状态。

mc(NaN(2),'StateNames',["增长" "衰退"]);

加载和预处理数据

加载GDP数据集。

Data 包含1947:Q1-2005:Q2期间实际GDP的季度数据。估计周期  为1947:Q2-2004:Q2。

通过以下方式将数据转换为年度序列:

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

  2. 将季度比率年度化

diff(Data(2:230))./Data(2:229); % 季度比率
100*((1 + qrate).^4 - 1);       % 年度比率

估计模型

模型拟合Mdl 年利率序列 arate

 estimate(Mdl,Mdl0,arate);

EstMdl 是估计的(完全指定的)马尔可夫转换动态回归模型。 EstMdl.Switch 是估计的离散时间马尔可夫链模型(dtmc 对象), EstMdl.Submodels 是估计的单变量VAR(0)模型(varm 对象)的向量。

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

varm with properties:Description: "ARIMA(0,0,0) Model (Gaussian Distribution)"SeriesNames: "Y1" NumSeries: 1P: 0Constant: 4.90146AR: {}Trend: 0Beta: [1×0 matrix]Covariance: 12.0871-Dimensional VAR(0) Model
  varm with properties:Description: "ARIMA(0,0,0) Model (Gaussian Distribution)"SeriesNames: "Y1" NumSeries: 1P: 0Constant: 0.0084884AR: {}Trend: 0Beta: [1×0 matrix]Covariance: 12.68761-Dimensional VAR(0) Model

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

2×20.9088    0.09120.2303    0.7697

估计后的EM算法

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

创建部分指定模型进行估计

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

加载并预处理数据。

diff(Data(2:230))./Data(2:229);
100*((1 + qrate).^4 - 1);       

使模型拟合数据。当估计过程终止时,绘制对数似然比与迭代步骤。

Plot(Mdl,Mdl0);

使模型拟合模拟数据

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

为DGP创建模型

为转换区制创建一个完全指定的两状态离散时间马尔可夫链模型。

P = [0.7 0.3; 0.1 0.9];

对于每个状态,为过程创建一个完全指定的AR(1)模型。

% 常数
C1 = 4;
C2 = -1;% 自回归系数
AR1 = 0.5;
AR2 = 0.3;% 方差
V1 = 3;
V2 = 2;% AR 子模型
arima('Constant',C1,'AR',AR1,'Variance',V1);

为DGP创建完全指定的Markov转换动态回归模型。

模拟来自DGP的路径

从DGP生成10条长度为1000的随机路径。

rng(1); % 重现性
N = 10;
n = 1000;
simulate(DGP,n,'Numpaths',N);

Data 是模拟的1000 x 10矩阵。

创建估计模型

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

创建包含初始值的模型

创建一个完全指定的马尔可夫转换动态回归模型,该模型具有与相同的结构 Mdl,但是将所有可估计的参数都设置为初始值。

P0 = 0.5*ones(2);
dtmc(P0);ms(mc0,[mdl01,mdl02]);

估计模型

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


figure
hold onfor i = 1:Nestimate(Data(:,i),'Plot',true);endhold off

评估准确性

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

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

DGPvsEstimate = 6×25.0000    5.0260-2.0000   -1.96154.0000    3.97102.0000    1.99030.4000    0.40610.2000    0.2017
P = 2×20.7000    0.30000.1000    0.9000
PEstimate = 2×20.7065    0.29350.1023    0.8977

预采样数据

考虑 估计马尔可夫转换动态回归模型中的数据,但假设关注期间为1960:Q1–2004:Q2。另外,考虑向每个子模型添加一个自回归项。

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

arima(1,0,0);
ms(mc,[mdl; mdl]);

由于子模型是AR(1),因此每个子模型都需要进行一次预采样观察以初始化其动态分量以进行估计。

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

P0 = 0.5*ones(2);
mc(P0,'StateNames');

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

使用与年率序列相关的日期来确定预采样和估计采样周期。由于转换应用了一阶差分,因此必须从原始样本中删除第一个观察日期。

dates = datetime(dates(2:end),'ConvertFrom','datenum',...'Format','yyyy:QQQ','Locale','en_US');
estPrd = datetime(["1960:Q2" "2004:Q2"],'InputFormat','yyyy:QQQ',...'Format','yyyy:QQQ','Locale','en_US');

使模型拟合估计样本数据。指定预采样观测值,并在估计过程终止时在每次迭代时绘制对数似然度。

访问预期的平滑状态概率和对数似然

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

创建部分指定的模型进行估计

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

加载并预处理数据。

使模型拟合数据。当算法终止时,返回预期的平滑状态概率和对数似然。

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

SS 是预期平滑状态概率的228 x 2矩阵;行对应于估计样本中的周期,列对应于方案。 logL 是最终的对数似然。

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

ans = 1×20.8985    0.1015
logL = -639.4962

执行约束估计

将模拟数据拟合到具有VARX子模型的Markov转换动态回归模型。指定用于估计的相等约束。

为DGP创建模型

为转换区制创建一个完全指定的三态离散时间马尔可夫链模型。

P = [0.8 0.1 0.1; 0.2 0.6 0.2; 0 0.1 0.9];
mc = dt(P);

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

% 常数
C = [1;-1];% 自回归系数
AR = {[0.6 0.1; 0.4 0.2]};% 回归系数
Beta1 = [0.2;-0.4];% VAR 子模型
dgp = varm('Constant',C,'AR',AR,'Covariance',5*eye(2));

为DGP创建完全指定的Markov转换动态回归模型。

ms(mc,[dgp1; dgp2; dgp3]);

模拟来自DGP的数据

通过从均值0和方差100的高斯分布中生成1000个观测值来模拟外生序列的数据。

rng(1); % 重现性
X = 10*randn(1000,1);

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

Data = simulate(DGP,1000,'X',X);

Data 是模拟的1000 x 1向量。

创建估计模型

创建一个部分指定的马尔可夫转换动态回归模型,该模型具有与数据生成过程相同的结构,但是指定了未知的转换矩阵和未知的回归系数。指定常数和AR系数矩阵的真值。

ms(mcEst,[mdl; mdl; mdl]);

由于常数和AR系数矩阵的值被指定在 Mdl, estimate 将它们作为用于估计等式约束。

创建包含初始值的模型

创建具有与相同结构的完全指定的马尔可夫转换动态回归模型 Mdl,但将所有可估计参数设置为初始值,并将具有相等约束的参数设置为中指定的值 Mdl

估计模型

使模型拟合模拟数据。指定回归的外部数据。在EM算法的每次迭代中绘制对数似然。

figure
EstMdl = estimate(Mdl,Mdl0,Data,'X',X,'IterationPlot',true);

评估准确性

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

Beta1 = 2×10.2000-0.4000
Beta1Estimate = 2×10.1596-0.4040
Beta2 = 2×10.6000-1.0000
Beta2Estimate = 2×10.5888-0.9771
Beta3 = 2×10.9000-1.3000
Beta3Estimate = 2×10.8987-1.2991
P = 3×30.8000    0.1000    0.10000.2000    0.6000    0.20000    0.1000    0.9000
PEstimate = 3×30.7787    0.0856    0.13570.1366    0.6906    0.17270.0086    0.0787    0.9127

最受欢迎的见解

1.用R语言模拟混合制排队随机服务排队系统

2.R语言中使用排队论预测等待时间

3.R语言中实现马尔可夫链蒙特卡罗MCMC模型

4.R语言中的马尔科夫机制转换(Markov regime switching)模型

5.matlab贝叶斯隐马尔可夫hmm模型

6.用R语言模拟混合制排队随机服务排队系统

7.Python基于粒子群优化的投资组合优化

8.R语言马尔可夫转换模型研究交通伤亡人数事故预测

9.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

拓端tecdat|Matlab马尔可夫区制转换动态回归模型估计GDP增长率相关推荐

  1. PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列

    原文链接:http://tecdat.cn/?p=22617 本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果.它应用了Hamilton( ...

  2. python package for Regime switching model 马尔可夫区制转换模型代码

    最近看了有关Markov regime switching model方面的内容,主要包括几篇经典文献,Hamilton (1989) ,Kim, Nelson (1999) 等,由于代码水平不行,对 ...

  3. 马尔可夫预测matlab编程,MATLAB马尔科夫链预测法

    MATLAB马尔科夫链预测法 发布时间:2018-06-10 09:10, 浏览次数:1195 , 标签: MATLAB 1,确定初始概率分布p0 输入初始状态矩阵: >>A=[11 19 ...

  4. 马尔科夫决策 matlab,马尔科夫决策过程的matlab编程实现

    [实例简介] 马尔科夫决策过程的matlab编程实现 [实例截图] [核心代码] 马尔科夫决策过程的matlab编程实现 └── 马尔科夫决策过程的matlab编程实现 ├── Markov Deci ...

  5. 数学建模-预测模型总结(适用范围、优缺点)【灰色预测模型、插值与拟合、时间序列预测法、马尔科夫预测、差分方程、微分方程模型、神经元网络】

    基于数学建模的预测方法种类繁多,从经典的单耗法.弹性系数法.统计分析法,到目前的灰色预测法.当在使用相应的预测方法建立预测模型时,我们需要知道主要的一些预测方法的研究特点,优缺点和适用范围.下面就当下 ...

  6. MATLAB马尔科夫决策过程遗传,科学网—【RL系列】马尔可夫决策过程与动态编程笔记 - 管金昱的博文...

    推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit) 本篇 马尔可夫决策过程 马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动 ...

  7. MATLAB马尔科夫链预测法

    1,确定初始概率分布p0 输入初始状态矩阵: >>A=[11 19 36 37 33]; p0=A./sum(A) 2,计算一步转移概率矩阵 输入频数矩阵: >>n1=[48 ...

  8. python做马尔科夫模型预测法_Python实现HMM(隐马尔可夫模型)

    1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...

  9. 马尔可夫网络,(马尔可夫随机场、无向图模型)(Markov Random Field)

    转载自: http://blog.sina.com.cn/s/blog_54d222750101dgz2.html 马尔可夫网络,(马尔可夫随机场.无向图模型)是关于一组有马尔可夫性质随机变量的全联合 ...

  10. NLP 《马尔科夫链》

    定义:是一个离散的随机过程,状态的变化都是依赖于状态转移矩阵,用来描述状态空间中经过从一个状态到另一个状态的转换的随机过程,用图的形式表示如下,下图是截图别人的. 马尔科夫链是基于两个假设: 有限视野 ...

最新文章

  1. 系统清理工具(Wise Care 365)绿色版
  2. c++ 在哪里找文档来看_FPX双C十四连败引热议!Doinb:我再也不跟LWX双排了
  3. 什么是网络地址转换(NAT)—Vecloud 微云
  4. ci中如何得到配置的url
  5. 小手拍拍机器人_幼儿园互动儿歌游戏,小朋友瞬间变听话!
  6. HDU 3555 Bomb (数位DP)
  7. IOS – OpenGL ES 调节图像对比度 GPUImageContrastFilter
  8. linux用dd命令刻录u盘,巧用linux dd命令刻录启动U盘
  9. Skyline软件二次开发初级——9如何在WEB页面中的三维地图上进行交互
  10. 通信协议(三)——IIC协议
  11. 几种常见电源防反接设计
  12. android 打包报错 Execution failed for task ‘:app:lintVitalRelease‘.
  13. 东莞厚街工业机器人展会_展会效果大起底2020东莞厚街机械展暨2020东莞国际工业自动化及机器人展览会...
  14. 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用
  15. PCB抄板最新方法及步骤
  16. 游戏海报——快手2019校招真题——笔试编程C/C++
  17. 如何开始 Kaggle 比赛之旅
  18. Task2-18跬步
  19. R语言“优雅地“进行医学统计分析
  20. JQuery 字符串转为Data

热门文章

  1. 用图形工具管理Server Core上的账号和组图文教程
  2. JS Date.Format
  3. windows7+fedora16双系统安装
  4. 关于全局低级键盘hook的记录(WH_KEYBOARD_LL)
  5. 设为首页 和 收藏本页
  6. Mobileye单目测距
  7. 梯度消失的有效解决方法-batch normalization
  8. 先知平台算法原理简介
  9. CTF—攻防练习之HTTP—命令执行漏洞
  10. velocity--shiro