PYTHON用時變馬爾可夫區制轉換(MARKOV REGIME SWITCHING)自回歸|附代碼數據

2023-08-18     tecdat拓端

原標題:PYTHON用時變馬爾可夫區制轉換(MARKOV REGIME SWITCHING)自回歸|附代碼數據

全文下載連結:http://tecdat.cn/?p=22617

最近我們被客戶要求撰寫關於MRS的研究報告,包括一些圖形和統計輸出。

本文提供了一個在統計模型中使用馬可夫轉換模型模型的例子,來復現Kim和Nelson(1999)中提出的一些結果。它應用了Hamilton(1989)的濾波器和Kim(1994)的平滑器

%matplotlib inline

import numpy as np

import pandas as pd

import statsmodels.api as sm

from pandas_datareader.data import DataReader

from datetime import datetime

DataReader(start=datetime(1947, 1, 1), end=datetime(2013, 4, 1))

相關視頻

拓端

,贊12

拓端

,贊8

拓端

,贊15

Hamilton (1989) 馬爾可夫轉換模型(Markov -switching model)

這是對Hamilton(1989)介紹馬可夫轉換模型(Markov -switching model)的開創性論文的復現。該模型是一個4階的自回歸模型,其中過程的平均值在兩個區制之間切換。可以這樣寫。

每個時期,區制都根據以下的轉移機率矩陣進行轉換。

其中 pij是從區制 i 轉移到區制 j 的機率。

該模型類別是時間序列部分中的MarkovAutoregression。為了創建這個模型,我們必須指定k_regimes=2的區制數量,以及order=4的自回歸階數。默認模型還包括轉換自回歸係數,所以在這裡我們還需要指定switch_ar=False。

創建後,模型通過極大似然估計進行擬合。使用期望最大化(EM)算法的若干步驟找到好的起始參數,並應用准牛頓(BFGS)算法來快速找到最大值。

[2]:

#獲取數據

hamilton= pd.read('gndata').iloc[1:]

# 繪製數據

hamilton.plot()

# 擬合模型

Markovreg(hamilton)

summary()

我們繪製了經過過濾和平滑處理的衰退機率。濾波指的是基於截至並包括時間tt(但不包括時間t+1,...,Tt+1,...,T)的數據對時間t的機率估計。平滑化是指使用樣本中的所有數據對時間t的機率進行估計。

fig, axes = plt.subplots(2, figsize=(7,7))

ax = axes[0]

ax.plot(margl_prob[0])

ax = axes[1]

ax.plot(smoomarginal_pro[0])

根據估計的轉移矩陣,我們可以計算出衰退與擴張的預期持續時間。

點擊標題查閱往期內容

用機器學習識別不斷變化的股市狀況—隱馬爾科夫模型(HMM)股票指數預測實戰

左右滑動查看更多

01

02

03

04

print(expected_du)

在這種情況下,預計經濟衰退將持續約一年(4個季度),擴張約兩年半。

Kim, Nelson, and Startz (1998) 三狀態方差轉換模型。

這個模型展示了帶有區制異方差(方差轉換)和無平均效應的估計。

模型是:

由於沒有自回歸成分,這個模型可以用MarkovRegression類來擬合。由於沒有平均效應,我們指定趨勢='nc'。假設轉換方差有三個區制,所以我們指定k_regimes=3和switching_variance=True(默認情況下,方差被假定為在不同區制下是相同的)。

raw = pd.read_table(ew ,engine='python')

# 繪製數據集

plot( figsize=(12, 3))

res_kns.summary()

下面我們繪製了處於每個區制中的機率;只有在少數時期,才有可能出現高_方差_區制。

fig, axes = plt.subplots(3, figsize=(10,7))

ax.plot(smoothed_proba[0])

ax.plot(smoothed_proba[2])

ax.plot(smoothed_proba[3])

Filardo (1994) 時變的轉移機率

這個模型展示了用時變的轉移機率進行估計。

在上述模型中,我們假設轉移機率在不同時期是不變的。在這裡,我們允許機率隨著經濟狀況的變化而變化。否則,該模型就是Hamilton(1989)的馬爾可夫自回歸。

每個時期,區制現在都根據以下的時變轉移機率矩陣進行轉移。

其中 pij,tipij,t 是在 t 期間從區制 i 轉移到區制 j 的機率,並定義為。

與其將轉移機率作為最大似然法的一部分進行估計,不如估計回歸係數βij。這些係數將轉移機率與預先確定的或外生的變量xt-1向量聯繫起來。

[9]:

# 用標準差進行標準化

data['p']['1960-01-01':].std() / data['dlip'][:'1959-12-01'].std()

# 繪製數據

data['dlip'].plot( )

data['dmdlleading'].plot( figsize=(13,3));

時變的轉移機率是由exog_tvtp參數指定的。

這裡我們展示了模型擬合的另一個特點--使用隨機搜索的MLE起始參數。因為馬爾科夫轉換模型的特徵往往是似然函數的許多局部最大值,執行初始優化步驟有助於找到最佳參數。

下面,我們規定對起始參數向量的20個隨機擾動進行檢查,並將最好的一個作為實際的起始參數。由於搜索的隨機性,我們事先設置了隨機數種子,以便結果複製。

markovreg(data, k=2, order=4)

fit(search=20)

summary()

下面我們繪製了經濟運行在低生產狀態下的平滑機率,並再次將NBER的衰退情況納入其中進行比較。

ax.plot(smoo_marg_prob[0])

利用時間變化的轉移機率,我們可以看到低生產狀態的預期持續時間如何隨時間變化。

exp_dura[0].plot( figsize=(12,3));

在經濟衰退期間,低生產狀態的預期持續時間要比經濟擴張時高得多。

點擊文末 「閱讀原文」

獲取全文完整資料。

本文選自《PYTHON用時變馬爾可夫區制轉換(MARKOV REGIME SWITCHING)自回歸模型分析經濟時間序列》。

點擊標題查閱往期內容

R語言馬爾可夫MCMC中的METROPOLIS HASTINGS,MH算法抽樣(採樣)法可視化實例

python貝葉斯隨機過程:馬爾可夫鏈Markov-Chain,MC和Metropolis-Hastings,MH採樣算法可視化

Python貝葉斯推斷Metropolis-Hastings(M-H)MCMC採樣算法的實現

Metropolis Hastings採樣和貝葉斯泊松回歸Poisson模型

Matlab用BUGS馬爾可夫區制轉換Markov switching隨機波動率模型、序列蒙特卡羅SMC、M H採樣分析時間序列R語言RSTAN MCMC:NUTS採樣算法用LASSO 構建貝葉斯線性回歸模型分析職業聲望數據

R語言BUGS序列蒙特卡羅SMC、馬爾可夫轉換隨機波動率SV模型、粒子濾波、Metropolis Hasting採樣時間序列分析

R語言Metropolis Hastings採樣和貝葉斯泊松回歸Poisson模型

R語言貝葉斯MCMC:用rstan建立線性回歸模型分析汽車數據和可視化診斷

R語言貝葉斯MCMC:GLM邏輯回歸、Rstan線性回歸、Metropolis Hastings與Gibbs採樣算法實例

R語言貝葉斯Poisson泊松-正態分布模型分析職業足球比賽進球數

R語言用Rcpp加速Metropolis-Hastings抽樣估計貝葉斯邏輯回歸模型的參數

R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機森林算法預測心臟病

R語言中貝葉斯網絡(BN)、動態貝葉斯網絡、線性模型分析錯頜畸形數據

R語言中的block Gibbs吉布斯採樣貝葉斯多元線性回歸

Python貝葉斯回歸分析住房負擔能力數據集

R語言實現貝葉斯分位數回歸、lasso和自適應lasso貝葉斯分位數回歸分析

Python用PyMC3實現貝葉斯線性回歸模型

R語言用WinBUGS 軟體對學術能力測驗建立層次(分層)貝葉斯模型

R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析

R語言和STAN,JAGS:用RSTAN,RJAG建立貝葉斯多元線性回歸預測選舉數據

R語言基於copula的貝葉斯分層混合模型的診斷準確性研究

R語言貝葉斯線性回歸和多元線性回歸構建工資預測模型

R語言貝葉斯推斷與MCMC:實現Metropolis-Hastings 採樣算法示例

R語言stan進行基於貝葉斯推斷的回歸模型

R語言中RStan貝葉斯層次模型分析示例

R語言使用Metropolis-Hastings採樣算法自適應貝葉斯估計與可視化

R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型

WinBUGS對多元隨機波動率模型:貝葉斯估計與模型比較

R語言實現MCMC中的Metropolis–Hastings算法與吉布斯採樣

R語言貝葉斯推斷與MCMC:實現Metropolis-Hastings 採樣算法示例

R語言使用Metropolis-Hastings採樣算法自適應貝葉斯估計與可視化

視頻:R語言中的Stan機率編程MCMC採樣的貝葉斯模型

R語言MCMC:Metropolis-Hastings採樣用於回歸的貝葉斯估計

文章來源: https://twgreatdaily.com/zh-mo/86d25fefe05d85355d3326f20a5678fd.html