PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
原文链接:http://tecdat.cn/?p=22617
本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果。它应用了Hamilton(1989)的滤波器和Kim(1994)的平滑器。
%matplotlib inlineimport numpy as np
import pandas as pd
import statsmodels.api as smfrom pandas_datareader.data import DataReader
from datetime import datetimeDataReader(start=datetime(1947, 1, 1), end=datetime(2013, 4, 1))
Hamilton (1989) 马尔可夫转换模型(_Markov -switching_ _model_)
这是对Hamilton(1989)介绍马可夫转换模型(_Markov -switching_ _model_)的开创性论文的复现。该模型是一个4阶的自回归模型,其中过程的平均值在两个区制之间切换。可以这样写。
每个时期,区制都根据以下的转移概率矩阵进行转换。
其中 pij是从区制 i 转移到区制 j 的概率。
该模型类别是时间序列部分中的MarkovAutoregression。为了创建这个模型,我们必须指定k\_regimes=2的区制数量,以及order=4的自回归阶数。默认模型还包括转换自回归系数,所以在这里我们还需要指定switch\_ar=False。
创建后,模型通过极大似然估计进行拟合。使用期望最大化(EM)算法的若干步骤找到好的起始参数,并应用准牛顿(BFGS)算法来快速找到最大值。
\[2\]:
#获取数据
hamilton= pd.read('gndata').iloc\[1:\]# 绘制数据
hamilton.plot()# 拟合模型
Markovreg(hamilton)
summary()
我们绘制了经过过滤和平滑处理的衰退概率。滤波指的是基于截至并包括时间tt(但不包括时间t+1,...,Tt+1,...,T)的数据对时间t的概率估计。平滑化是指使用样本中的所有数据对时间t的概率进行估计。
fig, axes = plt.subplots(2, figsize=(7,7))
ax = axes\[0\]
ax.plot(margl_prob\[0\])ax = axes\[1\]
ax.plot(smoomarginal_pro\[0\])
根据估计的转移矩阵,我们可以计算出衰退与扩张的预期持续时间。
点击标题查阅往期内容
用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)股票指数预测实战
左右滑动查看更多
01
02
03
04
print(expected_du)
在这种情况下,预计经济衰退将持续约一年(4个季度),扩张约两年半。
Kim, Nelson, and Startz (1998) 三状态方差转换模型。
这个模型展示了带有区制异方差(方差转换)和无平均效应的估计。
模型是:
由于没有自回归成分,这个模型可以用MarkovRegression类来拟合。由于没有平均效应,我们指定趋势='nc'。假设转换方差有三个区制,所以我们指定k\_regimes=3和switching\_variance=True(默认情况下,方差被假定为在不同区制下是相同的)。
raw = pd.read_table(ew ,engine='python')# 绘制数据集
plot( figsize=(12, 3))
res_kns.summary()
下面我们绘制了处于每个区制中的概率;只有在少数时期,才有可能出现高_方差_区制。
fig, axes = plt.subplots(3, figsize=(10,7))ax.plot(smoothed_proba\[0\])
ax.plot(smoothed_proba\[2\])
ax.plot(smoothed_proba\[3\])
Filardo (1994) 时变的转移概率
这个模型展示了用时变的转移概率进行估计。
在上述模型中,我们假设转移概率在不同时期是不变的。在这里,我们允许概率随着经济状况的变化而变化。否则,该模型就是Hamilton(1989)的马尔可夫自回归。
每个时期,区制现在都根据以下的时变转移概率矩阵进行转移。
其中 pij,tipij,t 是在 t 期间从区制 i 转移到区制 j 的概率,并定义为。
与其将转移概率作为最大似然法的一部分进行估计,不如估计回归系数βij。这些系数将转移概率与预先确定的或外生的变量xt-1向量联系起来。
\[9\]:
# 用标准差进行标准化data\['p'\]\['1960-01-01':\].std() / data\['dlip'\]\[:'1959-12-01'\].std()# 绘制数据
data\['dlip'\].plot( )data\['dmdlleading'\].plot( figsize=(13,3));
时变的转移概率是由exog_tvtp参数指定的。
这里我们展示了模型拟合的另一个特点--使用随机搜索的MLE起始参数。因为马尔科夫转换模型的特征往往是似然函数的许多局部最大值,执行初始优化步骤有助于找到最佳参数。
下面,我们规定对起始参数向量的20个随机扰动进行检查,并将最好的一个作为实际的起始参数。由于搜索的随机性,我们事先设置了随机数种子,以便结果复制。
markovreg(data, k=2, order=4)fit(search=20)
summary()
下面我们绘制了经济运行在低生产状态下的平滑概率,并再次将NBER的衰退情况纳入其中进行比较。
ax.plot(smoo\_marg\_prob\[0\])
利用时间变化的转移概率,我们可以看到低生产状态的预期持续时间如何随时间变化。
exp_dura\[0\].plot( figsize=(12,3));
在经济衰退期间,低生产状态的预期持续时间要比经济扩张时高得多。
点击文末“阅读原文”
获取全文完整资料。
本文选自《R语言极值理论:希尔HILL统计量尾部指数参数估计可视化》。
点击标题查阅往期内容
R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例
python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析
R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型
R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
Python贝叶斯回归分析住房负担能力数据集
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python用PyMC3实现贝叶斯线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言贝叶斯线性回归和多元线性回归构建工资预测模型
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言stan进行基于贝叶斯推断的回归模型
R语言中RStan贝叶斯层次模型分析示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列相关推荐
- python package for Regime switching model 马尔可夫区制转换模型代码
最近看了有关Markov regime switching model方面的内容,主要包括几篇经典文献,Hamilton (1989) ,Kim, Nelson (1999) 等,由于代码水平不行,对 ...
- 用Python中的马尔科夫链进行营销渠道归因
用Python中的马尔科夫链进行营销渠道归因 --第一部分:"更简单 "的方法 任何积极开展营销活动的企业都应该对确定哪些营销渠道推动了实际转化率感兴趣.投资回报率(ROI)是一个 ...
- python做马尔科夫模型预测法_李航《统计学习方法》第十章——用Python实现隐马尔科夫模型...
相关文章: 李航<统计学习方法>第二章--用Python实现感知器模型(MNIST数据集) 李航<统计学习方法>第三章--用Python实现KNN算法(MNIST数据集) 李航 ...
- python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc
您所在位置:网站首页 > 海量文档  > 高等教育 > 科普读物 使用隐马尔可夫模型的运动笔迹手势识别.doc10页 ...
- python手势识别隐马尔可夫模型_手势识别身份认证的连续隐马尔可夫模型
2018 收稿日期 :2017 - 03 - 18 收修改稿日期 :2017 - 04 - 25 基金项目 : 国家自然科学基金项目 (61373126) 资助 ; 中央高校基本科研业务费专项基金 项 ...
- Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
最近我们被客户要求撰写关于MCMC的研究报告,包括一些图形和统计输出. 我们将研究两种对分布进行抽样的方法:拒绝抽样和使用 Metropolis Hastings 算法的马尔可夫链蒙特卡洛方法 (MC ...
- 隐马尔可夫模型的java实现_机器学习——python模拟隐马尔可夫模型
<统计学习方法> 李航著 第十章 隐马尔可夫模型 我是小白一个:本文代码转载地址文末有注释:有问题请多指教 先看书,看完书,代码就看懂了.程序只是将算法翻译成机器认识的罢了 import ...
- R语言隐马尔可夫模型HMM识别股市变化分析报告
了解不同的市场状况如何影响您的策略表现可能会对您的收益产生巨大的影响.最近我们被客户要求撰写关于HMM的研究报告,包括一些图形和统计输出. 某些策略在波动剧烈的市场中表现良好,而其他策略则需要强劲而平 ...
- 机器学习强基计划6-1:图文详细总结马尔科夫链及其性质(附例题分析)
目录 0 写在前面 1 从一个实例出发 2 马尔科夫链 3 马氏链的基本性质 4 C-K方程 5 平稳状态分布 6 遍历性与例题分析 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的 ...
最新文章
- jquery中$.post()方法的简单实例
- mysql的in和not in的用法(特别注意not in结果集中不能有null)
- 002_JDK的Comparable接口
- asp.net中将枚举绑定到下拉列表
- kafka分布式_带有Kafka和ZeroMQ的分布式类星体演员
- java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)
- php文章列表源码,抓取文章列表
- Poi读写Excel文件
- 慕课-现代通信技术-知识点记录
- 8句极易踩中买家雷点的口头禅,你中了哪几条?
- 4种 LBS “附近的人” 实现方案,人人都能看的懂
- 软件测试工程师的优点,合格的软件测试工程师需要必备哪些优点
- python qqplot 检验正态分布
- 金智塔CTO陈超超:构建产学研用价值闭环,持续探索隐私计算技术前沿 | 数据猿专访...
- java循环返回结果_Java 循环(for、while)中整数相减结果返回输出/的问题
- 视频教程-2020年软考系统分析师--综合知识视频培训课程-软考
- autojs 简单使用
- php 输出划线,cad点画线画出来为什么还是直线
- PAT_甲级_1071 Speech Patterns (25point(s)) (C++)【字符串处理/单词统计】
- 遗传算法综述(一、 遗传算法简介)