拓端tecdat|R语言如何做马尔可夫转换模型markov switching model
原文链接:http://tecdat.cn/?p=6962
原文出处:拓端数据部落公众号
假设 有时间序列数据,如下所示。经验表明,目标变量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 + noisey <- c(y1[1:200], y2[201:400], y1[401:500])observed <- data.frame(x = x, y = y)
x和y1,y2之间的关系如下图所示。
数据
在马尔可夫转换模型中,观察数据被认为是从几个状态生成的,并且如上所示可以很好地分离。
观察到的数据
创建马尔可夫转换模型
模型公式
# 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的情况下)概率分布族
# 马尔可夫转换模型#
# 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
可以看到区制2 与y1 <- x * 4 + 20
匹配。
从调整后的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,那么就选择那个时刻概率最高的 。
> 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
...
异常值/变化点是状态更改的时间
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
因此,我们可以看到检测到在第一次数据创建时指定的变化点。
拓端tecdat|R语言如何做马尔可夫转换模型markov switching model相关推荐
- r语言怎么做经验分布_R语言如何做马尔科夫转换模型markov switching model
原文链接: R语言如何做马尔科夫转换模型markov switching modeltecdat.cn 假设 有时间序列数据,如下所示.经验表明,目标变量y似乎与解释变量x有关.然而,乍一看,y的水 ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- python做马尔科夫模型预测法_Python实现HMM(隐马尔可夫模型)
1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...
- python做马尔科夫模型预测法_通过Python的Networkx和Sklearn来介绍隐性马尔科夫模型...
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 文章梗概 马尔科夫是何人? 马尔科夫性质是什么? 马尔科夫模型是什么? 是什么让马尔科夫模型成为隐性的? ...
- 提升C语言程序运行效率 马尔可夫,计算机程序编程课程设计报告(马尔可夫链算法生成随机可读文本).doc...
PAGE 1 计算机程序编程课程设计报告 (马尔可夫链算法生成随机可读文本) 引言: 马尔可夫链的数学背景: 马尔可夫链,因安德烈?马尔可夫(A.A.Markov,1856-1922)得名 ,是数学随 ...
- 时序分析 43 -- 时序数据转为空间数据 (二) 马尔可夫转换场
马尔可夫转换场(MRF,Markov Transition Fields) MRF 马尔可夫转换场(MRF, Markov Transition Fields)比GAF要简单一些,其数学模型对于从事数 ...
- 马尔科夫链模型状态转移矩阵
关于马尔可夫链模型,详细请参考马尔可夫链模型 这里我使用的马尔科夫链模型的状态转移矩阵是: 股市的概率分布为[0.4, 0.3, 0.3], 即40%概率的牛市,30%概率的熊盘与30%的横盘. 代码 ...
最新文章
- win10系统没声音 服务器,win10没有声音怎么解决
- 【RL】快速强化学习实战案例
- (一) 自带刷新的列表-LtRecyclerView v2.x版本(LtAdapter)(基本使用)
- 【转】一步步构建大型网站架构
- php mysql 绑定变量,在MYSQL中,怎么用PDO绑定变量的方式插入数据?
- 测试电梯的测试用例_测试用例设计经典面试题
- 普通的PHP上传到云函数,php封装上传函数代码示例
- mybatis字符串模糊匹配
- 本特利990-05-50-02-00变送器
- 光电LED玻璃屏成商显新势力 优势颠覆传统LED灯条屏
- hibernate之多对多配置
- HBuilderX前端html功能拓展应用
- 吃鸡降落伞降落,射线检测,触发销毁降落伞等
- python爬房源信息_python爬虫获取链家二手房源信息
- 360在网站安全防护中的实践
- 黑苹果SSDT修正关机/重启问题
- 1024程序员节:最能讨好程序员的12件礼物
- 51Nod 13831048 整数分解为2的幂
- js将RFC3339时间格式转换为正常格式
- 程序人生 - 祝贺荣获《Java领域优质创作者》称号
热门文章
- SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)...
- Nginx的Rewrite规则编写
- 搜索引擎设计实用教程(1)-以百度为例 之一:查询处理以及分词技术
- python基础--字典
- monkey4444勒索病毒解密方法方案成功处理复旦安全实验室
- Asp.Net母版页元素ID不一致的体现
- Linux SMB和NFS文件共享
- 为什么Java 8 中不再需要StringBuilder拼接字符串
- mybatis官方文档知识点梳理
- java中4种修饰符访问权限的区别