全文連結: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模型