時間序列

對協整向量施加限制,R 範例

  • June 1, 2018

下面給出的程式碼估計具有 4 個協整向量的 VEC 模型。這是一個可重現的程式碼,所以只需複制並粘貼到您的 R 控制台(或腳本編輯器)中。

nobs = 200
e = rmvnorm(n=nobs,sigma=diag(c(.5,.5,.5,.5,.5)))
e1.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,1])
e2.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,2])
e3.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,3])
e4.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,4])
y5 = cumsum(e[,5])
y1 = y5 + e1.ar1
y2 = y5 + e2.ar1
y3 = y5 + e3.ar1
y4 = y5 + e4.ar1
data = cbind(y1,y2,y3,y4,y5)

jcointt = ca.jo(data,ecdet="const",type="trace",K=2,spec="transitory")
summary(jcointt)

我繼續使用四個協整向量並估計了一個 VECM:

vecm <- cajorls(jcointt,r=4)
summary(vecm$rlm)
print(vecm)

以下是估計的協整向量:

$beta

          ect1    ect2    ect3    ect4
y1.l1       1        0       0      0
y2.l1       0        1       0      0
y3.l1       0        0       1      0
y4.l1       0        0       0      1
y5.l1      -1.07    -1.05   -0.985 -1.05
constant   -0.16    0.505   -0.05   0.116

現在,我想對第一個協整向量(ect1參數)施加限制,以便分析變數之間的長期關係。這是我在強加和重新參數化協整向量後想要獲得的結果:

           ect1   ect2  ect3   ect4
y1.l1        1      0      0     0
y2.l1      b1.1     1      0     0
y3.l1      b2.1     0      1     0
y4.l1      b3.1     0      0     1
y5.l1      b4.1    b4.2   b4.3   b4.4
constant   b0.1    b0.2   b0.3   b0.4

這裡,b1.1 到 b0.1 是係數 ( $ \beta_1,\beta_2,\beta_3,\beta_4 $ ) 的第一個協整向量標記為ect1,現在可以寫為 $ y_{1,t-1}=\beta_0-\beta_1y_{2,t-1}-\beta_2y_{3,t-1}-\beta_3y_{4,t-1}-\beta_4y_{5,t-1} $ . 類似地,b4.2 和 b0.2 是第二個協整方程等的係數。

我想知道您是否可以幫助進一步實施限制並重新估計帶有限制的 VECM。urca包有一個bltest(),bh6lrtest()bh5lrtest()函式來測試協整向量的限制,但是,我需要一些關於如何構造我的H矩陣(限制矩陣)的指導謝謝。

我知道這是大約兩年前提出的,但我想我會回答這個問題。

除了第 1:4 行和第 2:4 列之外,您要估計的 H 似乎與您從 Johansen 檢驗中收到的值相同。您只需要將這些值設置為 0 和 1,考慮到對角線(非常接近)1 並且其他值足夠小,可以將它們四捨五入到需要的位置,這相當容易。

程式碼:

# Set H to found cointegrating vectors
H <- vecm$beta 

# Replace needed rows with rounded values
H[1:4, 2:4] <- round(H[1:4, 2:4])

這具有創建預期限制矩陣的效果,如下所示:

                 ect1        ect2        ect3      ect4
y1.l1     1.000000e+00  0.00000000  0.00000000  0.000000
y2.l1     6.001737e-17  1.00000000  0.00000000  0.000000
y3.l1    -2.103352e-17  0.00000000  1.00000000  0.000000
y4.l1     3.744563e-17  0.00000000  0.00000000  1.000000
y5.l1    -9.857458e-01 -1.00335472 -1.01229025 -1.066448
constant  5.632217e-02  0.02311308  0.07969588 -0.519249

現在,執行blrtest函式:

blrresult <- blrtest(jcointt, H, 4)

結果是:

> summary(blrresult)

###################### 
# Johansen-Procedure # 
###################### 

Estimation and testing under linear restrictions on beta 

The VECM has been estimated subject to: 
beta=H*phi and/or alpha=A*psi

                 ect1        ect2        ect3      ect4
y1.l1     1.000000e+00  0.00000000  0.00000000  0.000000
y2.l1     6.001737e-17  1.00000000  0.00000000  0.000000
y3.l1    -2.103352e-17  0.00000000  1.00000000  0.000000
y4.l1     3.744563e-17  0.00000000  0.00000000  1.000000
y5.l1    -9.857458e-01 -1.00335472 -1.01229025 -1.066448
constant  5.632217e-02  0.02311308  0.07969588 -0.519249

Eigenvalues of restricted VAR (lambda):
[1] 0.2009 0.1479 0.1410 0.0963

The value of the likelihood ratio test statistic:
0 distributed as chi square with 8 df.
The p-value of the test statistic is: 1 

Eigenvectors, normalised to first column
of the restricted VAR:

           [,1]    [,2]    [,3]    [,4]
y1.l1     1.0000  1.0000  1.0000  1.0000
y2.l1    -0.7020  1.1557 -0.2307 -3.3582
y3.l1     0.5135 -0.3613 -0.2651 -6.0261
y4.l1    -0.2599  0.1480  2.9151 -1.5204
y5.l1    -0.5241 -1.9374 -3.5946 10.1052
constant  0.2160 -0.0226 -1.4838  0.2879

Weights W of the restricted VAR:

       [,1]    [,2]    [,3]   [,4]
y1.d -0.2594 -0.1574  0.0141 0.0035
y2.d  0.1290 -0.1118  0.0467 0.0214
y3.d -0.1813  0.0618  0.0085 0.0302
y4.d  0.0270  0.0014 -0.0560 0.0097
y5.d -0.0629 -0.0009  0.0254 0.0065

希望這可以幫助您或其他人。

即使是兩年,這可能會有所幫助。因此,據我所知,blrtest 對每個協整向量都測試了相同的限制。例如,在這裡,它可以用於測試從所有 4 個協整向量中排除常數。

因此,它也不能辨識(因為它對每個向量都有相同的限制)。

引用自:https://quant.stackexchange.com/questions/21215