原文链接:

R语言如何做马尔科夫转换模型markov switching model​tecdat.cn

假设 有时间序列数据,如下所示。经验表明,目标变量y似乎与解释变量x有关。然而,乍一看,y的水平在中间移动,所以它似乎并不总是有固定的关系(背后有多个状态)。

上面的样本数据创建如下。数据根据时间改变x和y之间的关系。

x <- rpois(500, lambda = 10) y1 <- x * 4 + 20 y2 <- x * 2 + 60 noise <- rnorm(1:500, mean = 10, sd = 5) y1 <- y1 + noise y2 <- y2 + noise y <- c(y1[1:200], y2[201:400], y1[401:500]) observed <- data.frame(x = x, y = y)

x和y1,y2之间的关系如下图所示。如果您知道x和y有两种状态,则x和y看起来像这样。

数据

​ 在马尔可夫转换模型中,观察数据被认为是从几个状态生成的,并且如上所示很好地分离。

观察到的数据

创建马尔可夫转换模型

模型公式

# Call: # lm(formula = y ~ x, data = observed) # # Residuals: # Min 1Q Median 3Q Max # -24.303 -9.354 -1.914 9.617 29.224 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 45.7468 1.7202 26.59 <2e-16 *** # x 3.2262 0.1636 19.71 <2e-16 *** # --- # Signif. codes: # 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 11.51 on 498 degrees of freedom # Multiple R-squared: 0.4383, Adjusted R-squared: 0.4372 # F-statistic: 388.7 on 1 and 498 DF, p-value: < 2.2e-16

参数的含义是

  • k:马尔可夫转换模型的状态数。在这里,它被指定为后面有两个状态。
  • sw:使用逻辑指定每个参数在状态更改时是否更改
  • p:AR模型系数
  • family:(在GLM的情况下)概率分布族

# Markov Switching Model # # AIC BIC logLik # 3038.846 3101.397 -1513.423 # # Coefficients: # # Regime 1 # --------- # Estimate Std. Error t value Pr(>|t|) # (Intercept)(S) 69.3263 4.0606 17.0729 <2e-16 *** # x(S) 2.1795 0.1187 18.3614 <2e-16 *** # y_1(S) -0.0103 0.0429 -0.2401 0.8103 # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 4.99756 # Multiple R-squared: 0.6288 # # Standardized Residuals: # Min Q1 Med Q3 Max # -1.431396e+01 -2.056292e-02 -1.536781e-03 -1.098923e-05 1.584478e+01 # # Regime 2 # --------- # Estimate Std. Error t value Pr(>|t|) # (Intercept)(S) 30.2820 1.7687 17.1210 <2e-16 *** # x(S) 3.9964 0.0913 43.7722 <2e-16 *** # y_1(S) -0.0045 0.0203 -0.2217 0.8245 # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 4.836684 # Multiple R-squared: 0.8663 # # Standardized Residuals: # Min Q1 Med Q3 Max # -13.202056966 -0.771854514 0.002211602 1.162769110 12.417873232 # # Transition probabilities: # Regime 1 Regime 2 # Regime 1 0.994973376 0.003347279 # Regime 2 0.005026624 0.996652721

输出中的制度1和制度2表示后面的两个状态 。

# Regime 1 # --------- # Estimate Std. Error t value Pr(>|t|) # (Intercept)(S) 69.3263 4.0606 17.0729 <2e-16 *** # x(S) 2.1795 0.1187 18.3614 <2e-16 *** # y_1(S) -0.0103 0.0429 -0.2401 0.8103

y1 <- x * 4 + 20 可以看到Regime 2 与之兼容。

可以说从调整后的R平方值整体上有所改善。

# Regime 2 # --------- # Estimate Std. Error t value Pr(>|t|) # (Intercept)(S) 30.2820 1.7687 17.1210 <2e-16 *** # x(S) 3.9964 0.0913 43.7722 <2e-16 *** # y_1(S) -0.0045 0.0203 -0.2217 0.8245

模型

对于每个regime,目标变量+指定的解释变量和处于该状态的概率以阴影绘制

每个时间点的概率

每次获取状态和更改点

如果你想知道你在某个特定时间点所在的regime,那么就选择那个时刻概率最高的 。

> probable [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [30] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

异常值/变化点是Regime更改的时间

c(FALSE, diff(probable) != 0) [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [11] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ... [181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [191] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE [201] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ... [381] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [391] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE [401] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ... [491] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

因此,我们可以看到检测到在第一次数据创建时指定的变化点(201,401th)附近的点。

r语言怎么做经验分布_R语言如何做马尔科夫转换模型markov switching model相关推荐

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

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

  2. python做马尔科夫模型预测法_通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型...

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 文章梗概 马尔科夫是何人? 马尔科夫性质是什么? 马尔科夫模型是什么? 是什么让马尔科夫模型成为隐性的? ...

  3. 自然语言处理起源:马尔科夫和香农的语言建模实验

    语言建模和文本生成是当下自然语言处理领域非常火热的两个研究课题.而早在百年以前,科学巨匠马尔科夫和香农就对此进行了初步的探索...... 选自towardsdatascience,作者:Raimi K ...

  4. 隐马尔科夫模型C#语言算法实现

    开发工具: Visual Studio v2010 .NET Framework 4 Client Profile 版本历史: V1.1 2011年06月09日 修正UMDHMM在Baum-Welch ...

  5. 阿尔法狗怎么用机器学习做决策:马尔科夫链减少搜索空间说起(附PDF公号发“马链搜索”下载)...

    阿尔法狗怎么用机器学习做决策:马尔科夫链减少搜索空间说起(附PDF公号发"马链搜索"下载) 以色列理工Dr许铁 数据简化DataSimp 今天 数据简化DataSimp导读:Alp ...

  6. 马尔科夫随机场与gibbs分布

    1. 首先由两个定义,什么是马尔科夫随机场,以及什么是吉布斯分布 马尔科夫随机场:对于一个无向图模型G,对于其中的任意节点X_i,[以除了他以外的所有点为条件的条件概率]和[以他的邻居节点为条件的条件 ...

  7. 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型

    四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...

  8. python做马尔科夫模型预测法_用Python实现马尔可夫链蒙特卡罗

    摘要: 本文通过用Python中的马尔可夫链蒙特卡罗实现了睡眠模型项目,并教会如何使用MCMC. 在过去的几个月里,我在数据科学领域里遇到一个术语:马尔可夫链蒙特卡罗(MCMC).在博客或文章里,每次 ...

  9. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...

    前言 隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 马尔可夫模型理论与分析 参考<统计学习方法>这本书,书上已经讲得 ...

最新文章

  1. 【踩坑记录】记一次MySQL主从复制延迟的坑
  2. html5初探ppt,HTML5---HTML5初探151019解析.ppt
  3. mysql和mybatis优化_MySQL + mybatis的SQL优化方案
  4. HarmonyOS之常用组件WebView的使用
  5. oracle flashback 深入研究,oracle 之flashback 深入研究。
  6. 修复ext4日志(jbd2)bug( Ext4 文件系统有以下 Bug)
  7. 有的时候看项目,和创业者交流,发现他们的企业
  8. android 常用命令随手记
  9. maven生命周期所有阶段_Maven构建生命周期,阶段和目标
  10. 编码器正反转识别方法
  11. ae导出html,AE导出json格式的Web动画工具 Bodymovin v5.6.1 + 使用教程
  12. 维纳滤波(Wiener Filter)
  13. jsp基础之page指令,include动作(新手学习笔记)
  14. 对面向对象和面向过程的理解
  15. 1命名规则 sentinel_sentinel1 GRD数据和SLC数据预处理有什么区别吗?预处理流程是怎样的?...
  16. 困惑很久的解微分方程时绝对值取舍问题(必看)
  17. PyInstaller 打包单文件 exe 注意事项
  18. Python的内置模块
  19. 深度Linux pdf转png指令
  20. 搜狗2016校园招聘之算法编程解析

热门文章

  1. C#多线程使用进度条
  2. 转载---设计模式分类
  3. c#中chart绘制曲线,柱状图等
  4. CC++动态分配内存(手动分配内存)三种方式
  5. C++编译预处理:宏定义指令、文件包含指令和条件编译指令
  6. 函数调用 压栈的工作原理
  7. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础
  8. 谷粒商城高级篇资料_一文搞定剑指offer面试题【分文别类篇】
  9. win10远程桌面连接ubuntu18.04
  10. java删除通用方法_一个比较通用的java删除文件和文件夹的方法