PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附代码数据

news/2024/12/26 1:17:06/文章来源:https://www.cnblogs.com/tecdat/p/18306088

全文下载链接:http://tecdat.cn/?p=22617

最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。

本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现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 datetime
 DataReader(start=datetime(1947, 1, 1), end=datetime(2013, 4, 1))

相关视频

**

拓端

,赞12

**

拓端

,赞8

**

拓端

,赞15

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));

图片

在经济衰退期间,低生产状态的预期持续时间要比经济扩张时高得多。


图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列》。

点击标题查阅往期内容

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采样用于回归的贝叶斯估计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744900.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pnpm错误, ERR_PNPM_UNEXPECTED_STORE  Unexpected store location

背景ERR_PNPM_UNEXPECTED_STORE  Unexpected store locationThe dependencies at "C:\Users\acer\Code\Nuxt3\init\node_modules" are currently linked from the store at "C:\Users\acer\.hvigor\caches\v3".pnpm now wants to use the store at "…

P5537 题解

blog。今天在 XDFZ 听 ljy 讲的串串(?)题,瞎写写就混了个最优解,来发个题解(注意到树的形态不变,所以可以记录兄弟间的编号 rank。每个点就可以表示为若干 rank 构成的路径,例如下图:然后将每个点的这个路径压成 hash,记为 \(H_i\),并丢进 map 里。 假设从 \(x\) 开…

端口被占用如何处理Error: listen EADDRINUSE: address already in use :::xxxx

启动项目出现 Error: listen EADDRINUSE: address already in use :::9088yarn run v1.22.19 $ node src/index.js events.js:377throw er; // Unhandled error event^ Error: listen EADDRINUSE: address already in use :::9088at Server.setupListenHandle [as _listen2] (n…

xshell 8 关闭默认“图形化标签页”

更新 xshell 8 后,打开变成这样,不能直接输入命令很难受关闭方法: 工具 → 选项 → 高级 → 勾选“Open new tab as local shell” → 重新打开xshell 8

WPS批量将图片嵌入单元格

选中单张图片Ctrl+A全选右键选择图片嵌入单元格注意:它是将图片嵌入在图片左上角所在的单元格内,需要确保每个被嵌入的单元格只有一个图片的左上角在其内部,否则会出现“一个单元格内不能插入多个图片的”的报错

stm32用spi开发W25Q128(Flash闪存芯片)

前提提要spi概念 目录stm32用spi开发W25Q128(Flash闪存芯片)W25Q128(Flash闪存芯片)介绍内存分布引脚说明指令介绍(1) 写使能指令 0x06(2) 读状态寄存器 0x35(3) 写失能指令 0x04(4) 擦除扇区指令 0x20(5) 读取厂商和设备ID 0x90代码 stm32用spi开发W25Q128(Flash闪存芯片…

需求流程

产品愿景目标用户:学校内专业、学院的羽毛球运动员、教练以及教师,用于管理羽毛球比赛积分和晋级信息。 他们的需要或机会:提供一个方便的平台来记录和管理学校内羽毛球比赛数据,包括积分、排名以及教师的比赛晋级信息,以激励学生参与体育活动,促进羽毛球比赛的发展和提升…

【Azure Developer】C#/.NET 静态函数中this关键字的作用

问题描述 在查看.NET代码的时候,发现一个静态方法,第一个参数使用 this 关键字,它在这里是什么作用呢?public static XElement AquireElement(this XContainer container,string name, bool addFirst = false){ ... 问题解答 通过查看微软的官方博文介绍(https://as…

定点数的编码表示

真值和机器数 在日常生活中,形如“+15”、“-3”这样带正负号的数字叫做真值,而用0表示“正”,1表示“负”这样把符号数字化的数称为机器数,常用的有原码、补码和反码表示法,真值是机器数所代表的实际值 原码、补码、反码、移码原码表示的优点:与真值的对应关系简单、直观,…

字节码指令

加载与存储指令public int add(int a, int b) {int res = a + b;return res; }字节码指令public int add(int, int);descriptor: (II)Iflags: (0x0001) ACC_PUBLICCode:stack=2, locals=4, args_size=30: iload_11: iload_22: iadd3: istore_34: iload_35: ireturn1. 将局部变量…

idea 创建springboot项目

参考—— https://blog.csdn.net/Alger_/article/details/128749131——————————需要联网创建————创建项目 new project——》Spring initializr next springboot的版本与jdk版本有关 2.x :jdk8 3.x :jdk17 只选择web 下的spring web ——》create 项目需要联网下…

[智能网联汽车] CAN Log 文件 - ASC文件格式 [转]

因工作研究需要,担心精华内容丢失。故全文转载,转载自:图文详解CAN Log文件 - ASC文件格式 - CSDNVector提供了两种记录数据格式的格式规范:BLF和ASC。在Vector提供的CAN_LOG_TRIGGER_ASC_Format.pdf文件中,规定了CANoe/CANalyzer ASC记录中CAN、Log和Trigger event的格式…