R語言如何做馬爾可夫轉換模型markov switching model|附代碼數據

2023-01-11     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 + 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模型

文章來源: https://twgreatdaily.com/1dcdceccba5a22483a60c2167b4b60a5.html