拓端tecdat|R語言向量誤差修正模型 (VECMs)分析長期利率和通脹率影響關(guān)系
原文鏈接:http://tecdat.cn/?p=22215?
原文出處:拓端數(shù)據(jù)部落公眾號
向量自回歸模型估計(jì)的先決條件之一是被分析的時間序列是平穩(wěn)的。但是,經(jīng)濟(jì)理論認(rèn)為,經(jīng)濟(jì)變量之間在水平上存在著均衡關(guān)系,可以使這些變量差分而平穩(wěn)。這就是所謂的協(xié)整關(guān)系。由于知道這種關(guān)系可以改善分析的結(jié)果,所以希望有一個計(jì)量經(jīng)濟(jì)學(xué)模型,能夠捕捉到這種關(guān)系。所謂的向量誤差修正模型(VECMs)就屬于這一類模型。下文介紹了VECMs的基本概念,并在R中估計(jì)這種模型。
模型和數(shù)據(jù)
向量誤差修正模型與VAR模型非常相似,可以有如下形式。

其中,Δx為向量x中各變量的第一次差分,Pi為協(xié)整關(guān)系的系數(shù)矩陣,Γ為x的差分變量滯后的系數(shù)矩陣,d為確定性項(xiàng)的向量,C為其對應(yīng)的系數(shù)矩陣,p為VAR形式下模型的滯后階數(shù),?為均值為零的誤差項(xiàng),方差-協(xié)方差矩陣Σ。
由上式可知,與VAR模型唯一不同的是誤差修正項(xiàng)Πxt-1,它反映了如果其中一個變量偏離其均衡值,則x中的變量增長率會如何變化的影響。系數(shù)矩陣Π可以寫成矩陣乘積Π=αβ′,這樣誤差修正項(xiàng)就變成了αβ′xt-1。協(xié)整矩陣β包含了各層次變量之間的均衡關(guān)系信息。β′xt-1描述的向量可以解釋為變量與均衡值之間的距離,α是所謂的載荷矩陣,描述了因變量向均衡值收斂的速度。
為了說明R向量誤差修正模型估計(jì),我們使用數(shù)據(jù)集E6(2007),其中包含從季度1972Q2到1998Q4,季節(jié)性調(diào)整的長期利率和通脹率時間序列。
plot(data) #繪圖數(shù)據(jù)

估計(jì)
有多種方法可以估計(jì)VEC模型。第一種方法是使用普通最小二乘法,這種方法可以得到準(zhǔn)確的結(jié)果,但不能估計(jì)變量之間的協(xié)整關(guān)系。估計(jì)廣義最小二乘法(EGLS)是一種替代方法。然而,最流行的VECMs估計(jì)方法是Johansen(1995)的最大似然估計(jì)。
但是,在估計(jì)VEC模型之前,必須指定滯后階數(shù)p、協(xié)整矩陣的等級r和確定性項(xiàng)。選擇滯后階數(shù)的一個有效策略是在水平上估計(jì)VAR,并選擇最小化信息準(zhǔn)則的滯后方法。由于時間序列表現(xiàn)出強(qiáng)烈的季節(jié)性規(guī)律,我們通過指定季節(jié)參數(shù)=4來控制,其中4是數(shù)據(jù)的頻率。
# 估計(jì) VAR
VAR(data,ic = "AIC", season = 4 ,....)
# AIC建議的滯后階數(shù)
var$p
## AIC(n)
## ? ? ?4
根據(jù)AIC,可以使用滯后階數(shù)為4,這與Lütkepohl(2007)中使用的數(shù)值相同。這意味著VEC模型對應(yīng)的VAR在水平上有3個滯后期。由于ca.jo函數(shù)要求VAR模型的滯后階數(shù),我們設(shè)置K=4。
在VECM中加入確定性項(xiàng)是一個巧妙的問題。一個常見的策略是在誤差修正項(xiàng)中加入一個線性趨勢,在方程的非協(xié)整部分加入一個常數(shù),這個策略就不做贅述了。在這個例子中,我們遵循Lütkepohl(2007)的方法,在方程的非協(xié)整部分添加一個常數(shù)項(xiàng)和季節(jié)性偽變量。
cajo函數(shù)不僅僅是估計(jì)VECM,它還計(jì)算了方程的檢驗(yàn)統(tǒng)計(jì)量。它還計(jì)算了r的不同特異性的檢驗(yàn)統(tǒng)計(jì)量,用戶可以在兩種方法中進(jìn)行選擇,即跡檢驗(yàn)和特征值檢驗(yàn)。在這個例子中,使用了跡檢驗(yàn),即type = "trace"。
# 估計(jì)
cajo(e6, ecdet = "none", type = "trace",...)

跡檢驗(yàn)表明,r=1,協(xié)整關(guān)系β和載荷矩陣α的第一列估計(jì)值與Lütkepohl(2007年,第7章)中ML估計(jì)的結(jié)果一致。
# Beta
round(vec@V, 2)
## ? ? ? ?R.l1 Dp.l1
## R.l1 ? 1.00 ? 1.0
## Dp.l1 -3.96 ? 1.7
# Alpha
round(vec@W, 2)
## ? ? ? R.l1 Dp.l1
## R.d ?-0.10 -0.04
## Dp.d ?0.16 -0.02
然而,模型中非協(xié)整部分的估計(jì)系數(shù)與EGLS估計(jì)的結(jié)果一致。
round(GAMMA, 2)
## ? ? ?constant ?sd1 ?sd2 ?sd3 R.dl1 Dp.dl1 R.dl2 Dp.dl2 R.dl3 Dp.dl3
## R.d ? ? ?0.01 0.01 0.00 0.00 ?0.29 ?-0.16 ?0.01 ?-0.19 ?0.25 ?-0.09
## Dp.d ? ?-0.01 0.02 0.02 0.03 ?0.08 ?-0.31 ?0.01 ?-0.37 ?0.04 ?-0.34
由于使用了不同的參考日期,與Lütkepohl(2007)的結(jié)果不同。
脈沖響應(yīng)分析
VECM的脈沖響應(yīng)函數(shù)通常由其VAR形式獲得。
# 將VEC轉(zhuǎn)換為VAR,r=1。
vec2var(vec, r = 1)
然后用通常的方式計(jì)算脈沖響應(yīng)函數(shù)。
# 獲得IRF
irf(impulse = "R", response = "Dp",...)

請注意,和平穩(wěn)的VAR模型的一個重要區(qū)別是,協(xié)整VAR模型的脈沖反應(yīng)不是必須接近零,因?yàn)樽兞渴遣黄椒€(wěn)的。
參考文獻(xiàn)
Lütkepohl, H. (2007).?New introduction to multiple time series analysis?(2nd ed.). Berlin: Springer.

最受歡迎的見解
1.在python中使用lstm和pytorch進(jìn)行時間序列預(yù)測
2.python中利用長短期記憶模型lstm進(jìn)行時間序列預(yù)測分析
3.使用r語言進(jìn)行時間序列(arima,指數(shù)平滑)分析
4.r語言多元copula-garch-模型時間序列預(yù)測
5.r語言copulas和金融時間序列案例
6.使用r語言隨機(jī)波動模型sv處理時間序列中的隨機(jī)波動
7.r語言時間序列tar閾值自回歸模型
8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類
9.python3用arima模型進(jìn)行時間序列預(yù)測