关于数据挖掘:R语言如何做马尔可夫转换模型markov-switching-model附代码数据

40次阅读

共计 3940 个字符,预计需要花费 10 分钟才能阅读完成。

全文链接: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 模型

正文完
 0