首页 > 其他分享 >R语言如何做马尔可夫转换模型markov switching model|附代码数据

R语言如何做马尔可夫转换模型markov switching model|附代码数据

时间:2023-05-23 23:33:07浏览次数:57  
标签:FALSE 模型 switching 区制 马尔可夫 蒙特卡罗 MCMC model markov

全文链接: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 + noise
 y <- c(y1[1:200], y2[201:400], y1[401:500])
 observed <- data.frame(x = x, y = y)

x和y1,y2之间的关系如下图所示。

数据

图片 

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

观察到的数据

图片


点击标题查阅往期内容

图片

【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

创建马尔可夫转换模型

 

模型公式 

 

# 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

因此,我们可以看到检测到在第一次数据创建时指定的变化点。


图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《R语言如何做马尔可夫转换模型markov switching model》。

点击标题查阅往期内容

matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
R语言BUGS/JAGS贝叶斯分析: 马尔科夫链蒙特卡洛方法(MCMC)采样
马尔可夫Markov区制转移模型分析基金利率
马尔可夫区制转移模型Markov regime switching
时变马尔可夫区制转换MRS自回归模型分析经济时间序列
马尔可夫转换模型研究交通伤亡人数事故时间序列预测
如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?
Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列
R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
stata马尔可夫Markov区制转移模型分析基金利率
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
R语言使用马尔可夫链对营销中的渠道归因建模
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
R语言隐马尔可夫模型HMM识别不断变化的股票市场条件
R语言中的隐马尔可夫HMM模型实例
用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
MATLAB中的马尔可夫区制转移(Markov regime switching)模型
Matlab马尔可夫区制转换动态回归模型估计GDP增长率
R语言马尔可夫区制转移模型Markov regime switching
stata马尔可夫Markov区制转移模型分析基金利率
R语言如何做马尔可夫转换模型markov switching model
R语言隐马尔可夫模型HMM识别股市变化分析报告
R语言中实现马尔可夫链蒙特卡罗MCMC模型

标签:FALSE,模型,switching,区制,马尔可夫,蒙特卡罗,MCMC,model,markov
From: https://www.cnblogs.com/tecdat/p/17426771.html

相关文章

  • Paper Reading: forgeNet a graph deep neural network model using tree-based ensem
    目录研究动机文章贡献本文方法图嵌入深度前馈网络forgeNet特征重要性评估具体实现模拟实验合成数据生成实验评估实验结果真实数据应用BRCA数据集microRNA数据Healthyhumanmetabolomics数据集优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重......
  • AGIEval: A Human-Centric Benchmark for Evaluating Foundation Models
    AbstractEvaluatingthegeneralabilitiesoffoundationmodelstotacklehuman-leveltasksisavitalaspectoftheirdevelopmentandapplicationinthepursuitofArtificialGeneralIntelligence(AGI).Traditionalbenchmarks,whichrelyonartificialdat......
  • Combining Label Propagation and Simple Models Out-performs Graph Neural Networks
    目录概符号说明C&S代码HuangQ.,HeH.,SinghA.,LimS.andBensonA.R.Combininglabelpropagationandsimplemodelsout-performsgraphneuralnetworks.ICLR,2021.概将预测概率作为信号进行传播.符号说明\(G=(V,E)\),图;\(|V|=n\);\(X\in\mathbb{R}......
  • Django Model 定义语法
    简单用法fromdjango.dbimportmodelsclassPerson(models.Model):first_name=models.CharField(max_length=30)last_name=models.CharField(max_length=30)fromdjango.dbimportmodelsclassPerson(models.Model):first_name=models.CharField(max_......
  • Day04 drf之source序列化字段定制与反序列化校验、modelserializer使用
    今日内容1序列化高级用法之source(了解)#1创建了5个表(图书管理的5个)#2对booke进行序列化#总结:source的用法 -1修改前端看到的字段key值---》source指定的必须是对象的属性 book_name=serializers.CharField(source='name')-2修改前端看到的value值,---......
  • drf——序列化之source(了解)、定制字段的两种方式(重要)、多表关联反序列化保存、反
    1序列化高级用法之source(了解)#1.创建了5个表(图书管理的5个)#2.对book进行序列化#总结:source的用法 1.修改前端看到的字段key值--->source指定的必须是对象的属性 book_name=serialiazers.CharField(source='name')2.修改前端看到的value值--->source指......
  • 序列化高级用法之source,序列化高级用法之定制字段的两种方式,多表关联反序列化保存,反序
    序列化高级用法之source:source的用法:1修改前端看到的字段key值---》source指定的必须是对象的属性: 前端展示效果: 2. 修改前端看到的value值,---》source指定的必须是对象的方法models中: 序列化类中: 前端展......
  • 序列化的高级用法与ModelSerializer的使用
    序列化的高级用法与ModelSerializer的使用序列化高级用法之source(了解)source的三个用法:1.取别名: book_name=serializers.CharField(source='name')#book_name为前端可以看到的字段值,name是对象真实的属性。注意:别名和真实属性不能相同2.美化值: #......
  • DTCloud 瞬态模型_models
    DTCloud是一款功能强大的企业资源计划(ERP)软件,它提供了许多模型和功能,用于管理各种业务流程和数据。在DTCloud中,瞬态模型(TransientModel)是一种特殊类型的模型,用于处理临时数据和临时状态。瞬态模型是一种临时性的模型,不会在数据库中创建对应的表。它们用于存储一些临时数据或......
  • ARMv7-A 处理器窥探 —— Memory Model
    1、MemoryTypeARMv7-A处理器中,将Memory定义为几种类型(MemoryType):1、Strongly-ordered;2、Normal;3、Device;它的定义如下所示: 注意:这里的Memory指的不是内存,可以翻译成储存器,是地址空间的概念;普通的内存(RAM),只读的内存(ROM),这些都属于NormalType的范畴;外设和I/O,这......