使用Stata做脈衝響應分析

Source: Rizaudin SahlanImpulse Response Function with Stata (time series)

在這篇推文中,我們討論 VAR 模型中的脈衝響應函數(IRFs)。

脈衝響應函數反映了當 VAR 模型某個變量受到"外生衝擊"時,模型中其他變量受到的動態影響。我們會根據這些變量受到此衝擊後的一段時間內的動態變化畫出脈衝響應圖形。

脈衝響應函數是一種條件預測,更確切地說,是一種點估計,只不過我們會估計衝擊發生後不同時點的值。

類似於 AR 模型有 MA 表達形式,VAR 模型也有 VMA 表達形式。 VMA 表達形式有助於我們探求在 VAR 系統中變量收到衝擊後的隨時間變化的路徑。考慮一個由 yty_tztz_t 構成的VAR 系統:
(1)[ytzt]=[a10a20]+[a11a12a21a22][yt1zt1]+[e1te2t] \left[ \begin{array} { c } { y _ { t } } \\ { z _ { t } } \end{array} \right] = \left[ \begin{array} { c } { a _ { 10 } } \\ { a _ { 20 } } \end{array} \right] + \left[ \begin{array} { c c } { a _ { 11 } } & { a _ { 12 } } \\ { a _ { 21 } } & { a _ { 22 } } \end{array} \right] \left[ \begin{array} { c } { y _ { t - 1 } } \\ { z _ { t - 1 } } \end{array} \right] + \left[ \begin{array} { c } { e _ { 1 t } } \\ { e _ { 2 t } } \end{array} \right]\tag{1}
該模型也可以寫成如下形式:
(2)[ytzt]=[yz]+i=0[a11a12a21a22]i[e1tie2ti] \left[ \begin{array} { c } { y _ { t } } \\ { z _ { t } } \end{array} \right] = \left[ \begin{array} { c } { \overline { y } } \\ { \overline { z } } \end{array} \right] + \sum _ { i = 0 } ^ { \infty } \left[ \begin{array} { c c } { a _ { 11 } } & { a _ { 12 } } \\ { a _ { 21 } } & { a _ { 22 } } \end{array} \right] ^ { i } \left[ \begin{array} { c } { e _ { 1 t - i } } \\ { e _ { 2 t - i } } \end{array} \right] \tag{2}
方程 (2) 使用 {e1t}\left\{ e_ { 1 t } \right\}{e2t}\left\{ e_ { 2 t } \right\} 序列表示了 yty_tztz_t 。根據 Enders(2014, p286){e1t}\left\{ e_ { 1 t } \right\}{e2t}\left\{ e_ { 2 t } \right\} 可以寫成:
(3)[e1te2t]=11b12b21[1b12b211][εytεzt] \left[ \begin{array} { c } { e _ { 1 t } } \\ { e _ { 2 t } } \end{array} \right] = \frac{1}{ 1 - b _ { 12 } b _ { 21 }} \left[ \begin{array} { c c } { 1 } & { - b _ { 12 } } \\ { - b _ { 21 } } & { 1 } \end{array} \right] \left[ \begin{array} { c } { \varepsilon _ { y t } } \\ { \varepsilon _ { zt } } \end{array} \right]\tag{3}
將 (3) 式代入 (2) 式中可得:
( 4 )[ytzt]=[yz]+11b12b21i=0[a11a12a21a22]i[1b12b211][εytεzt] \left[ \begin{array} { c } { y _ { t } } \\ { z _ { t } } \end{array} \right] = \left[ \begin{array} { c } { \overline { y } } \\ { \overline { z } } \end{array} \right]+ \frac{1}{ 1 - b _ { 12 } b _ { 21 }} \sum _ { i = 0 } ^ { \infty } \left[ \begin{array} { c c } { a _ { 11 } } & { a _ { 12 } } \\ { a _ { 21 } } & { a _ { 22 } } \end{array} \right] ^ { i } \left[ \begin{array} { c c } { 1 } & { - b _ { 12 } } \\ { - b _ { 21 } } & { 1 } \end{array} \right] \left[ \begin{array} { c } { \varepsilon _ { y t } } \\ { \varepsilon _ { z t } } \end{array} \right] \tag { 4 }
由於 (4) 式不太簡潔,我們可以通過定義一個 2×22\times2 的矩陣 ϕi\phi_i 來簡化它:
(5)ϕi=A1i1b12b21[1b12b211] \phi _ { i } = \frac{A _ { 1 } ^ { i } }{ 1 - b _ { 12 } b _ { 21 } } \left[ \begin{array} { c c } { 1 } & { - b _ { 12 } } \\ { - b _ { 21 } } & { 1 } \end{array} \right]\tag{5}
將 (5) 式代入 (4) 式可得:
(6)[ytzt]=[yz]+i=0[ϕ11(i)ϕ12(i)ϕ21(i)ϕ22(i)]i[εytiεzti] \left[ \begin{array} { l } { y _ { t } } \\ { z _ { t } } \end{array} \right] = \left[ \begin{array} { c } { \overline { y } } \\ { \overline { z } } \end{array} \right] + \sum _ { i = 0 } ^ { \infty } \left[ \begin{array} { c c } { \phi _ { 11 } ( i ) } & { \phi _ { 12 } ( i ) } \\ { \phi _ { 21 } ( i ) } & { \phi _ { 22 } ( i ) } \end{array} \right] ^ { i } \left[ \begin{array} { c } { \varepsilon _ { y t - i } } \\ { \varepsilon _ { zt - i } } \end{array} \right]\tag{6}
顯然 (6) 式可以寫成更簡潔的形式:
(7)xt=μ+i=0ϕiεti x _ { t } = \mu + \sum _ { i = 0 } ^ { \infty } \phi _ { i } \varepsilon _ { t - i }\tag{7}
以上 VMA 形式的表出對於我們理解 yty_tztz_t 構成的VAR 系統格外有幫助。其中係數矩陣 ϕi\phi_i 即爲來自 εyt\varepsilon_{yt}εzt\varepsilon_{zt} 的衝擊對 yty_tztz_t 序列的影響。

很顯然 ϕjk(0)\phi_{jk} (0) 是衝擊的即時影響。比如,ϕ12(0)\phi_{12} (0) 表示 1 個單位 εzt\varepsilon_{zt} 的衝擊會使當期的 yty_t 變化多少個單位。類似地,ϕ11(1)\phi_{11} (1)ϕ12(1)\phi_{12} (1) 則分別表示來自一個單位 εyt1\varepsilon_{yt-1} 和一個單位 εzt1\varepsilon_{zt-1} 的衝擊對 yty_t 產生的影響。

顯然 ϕ11(1)\phi_{11} (1)ϕ12(1)\phi_{12} (1) 也可以表示來自一個單位 εyt\varepsilon_{yt}εzt\varepsilon_{zt} 的衝擊對 yt+1y_{t+1} 產生的影響。以此類推,來自一個單位 εyt\varepsilon_{yt}εzt\varepsilon_{zt} 的衝擊對後續各期的 yty_tztz_t 產生的影響可以通過對脈衝響應函數進行適當的彙總得到。比如來自一個單位 εzt\varepsilon_{zt} 的衝擊對 {yty_{t}} 序列在後續第 nn 期產生的影響即爲 ϕ12(n)\phi_{12} (n) ,則在此 εzt\varepsilon_{zt} 衝擊對 yty_{t} 序列在衝擊發生後的 nn 期內產生的總影響爲:
i=0nϕ12(n) \sum _ { i = 0 } ^ { n } \phi _ { 12 } ( n )
nn 趨於無窮,可以得到衝擊對 yty_tztz_t 產生的長期影響。由於 {yty_{t}} 和 {ztz_{t}} 被假定爲平穩的,易得對於任意 jjkk
i=0ϕjk2(i) 在 i 時收斂 \sum _ { i = 0 } ^ { \infty } \phi _ { j k } ^ { 2 } ( i )\text{ 在 $i\rightarrow \infty$ 時收斂}
四個係數集 ϕ11(i)\phi_ { 11 } ( i )ϕ12(i)\phi _ { 12 } ( i )ϕ21(i)\phi _ { 21 } ( i )ϕ22(i)\phi _ { 22 } ( i ) 被稱爲脈衝響應函數。繪製脈衝響應函數的圖形是觀察衝擊 εyt\varepsilon_{yt}εzt\varepsilon_{zt} 對系統內變量 yty_tztz_t 影響的實用手段,也是觀察來自 εyt\varepsilon_{yt}εzt\varepsilon_{zt} 衝擊造成的時變影響的有力工具。

使用 Stata 估計脈衝響應函數

Stata 中, 我們可以使用 irf create 命令得到脈衝響應函數,這個命令可以估計五種脈衝響應函數(IRFs):簡單脈衝響應函數(simple IRFs)、正交脈衝響應函數(orthogonalized IRFs)、累積脈衝響應函數(cumulative IRFs)、累積正交脈衝響應函數(cumulative orthogonalized IRFs)以及結構脈衝響應函數(structural IRFs)。

具體的操作思路爲:首先擬合 VAR 模型,然後使用 irf create 命令估計脈衝響應函數並將其存儲到文件中,最後使用 irf graph 或其他的 irf 分析命令檢驗結果。

本篇推文使用的數據集爲 Data09.dta,可以點擊這裏下載。

我們想估計的 VAR 模型中包含的變量有:對數固定資本形成總額 (lrgrossinv) ,對數實際家庭消費支出額 (lrconsump) 以及對數 GDP (lrgdp)。

在估計脈衝響應函數之前,我們首先需要知道該 VAR 模型的最優滯後階數:

 varsoc lrgrossinv lrconsump lrgdp, max (12)

   Selection-order criteria
   Sample:  1962q1 - 2010q3                     Number of obs      =       195
  +---------------------------------------------------------------------------+
  |lag |    LL      LR      df    p      FPE       AIC      HQIC      SBIC    |
  |----+----------------------------------------------------------------------|
  |  0 |  721.692                      1.3e-07   -7.3712  -7.35081  -7.32085  |
  |  1 |  1979.02  2514.7    9  0.000  3.5e-13  -20.1746   -20.093  -19.9731  |
  |  2 |  2022.28  86.525    9  0.000  2.4e-13   -20.526  -20.3833* -20.1735* |
  |  3 |  2030.07  15.571    9  0.076  2.5e-13  -20.5135  -20.3096    -20.01  |
  |  4 |  2036.31  12.492    9  0.187  2.5e-13  -20.4853  -20.2202  -19.8307  |
  |  5 |  2044.65  16.669    9  0.054  2.6e-13  -20.4784  -20.1522  -19.6728  |
  |  6 |  2056.46  23.622    9  0.005  2.5e-13  -20.5073  -20.1199  -19.5505  |
  |  7 |  2070.89  28.858*   9  0.001  2.4e-13*  -20.563* -20.1144  -19.4552  |
  |  8 |  2074.97  8.1629    9  0.518  2.5e-13  -20.5125  -20.0028  -19.2537  |
  |  9 |  2078.94  7.9406    9  0.540  2.6e-13  -20.4609  -19.8901   -19.051  |
  | 10 |  2083.77  9.6582    9  0.379  2.7e-13  -20.4181  -19.7861  -18.8572  |
  | 11 |  2088.52  9.5076    9  0.392  2.9e-13  -20.3746  -19.6814  -18.6626  |
  | 12 |     2094  10.959    9  0.279  3.0e-13  -20.3385  -19.5841  -18.4754  |
  +---------------------------------------------------------------------------+
   Endogenous:  lrgrossinv lrconsump lrgdp
    Exogenous:  _cons

以上結果顯示,根據 AIC 準則,模型的最優滯後結束爲 7 階。使用 7 階滯後重新估計 VAR 模型:

quietly var lrgrossinv lrconsump lrgdp,lags(1/7)dfk small

並基於估計結果估計脈衝響應函數:

 irf create order1, step(10) set(myirf1) replace
(file myirf1.irf created)
(file myirf1.irf now active)
irfname order1 not found in myirf1.irf
(file myirf1.irf updated)

Stata 中,多個脈衝響應的結果可以被存儲在同一個文件中,並被標記爲不同的名字。上述命令表示,此次脈衝響應估計的結果被存儲在 myirf1 文件中,其名字被標記爲 order1order1 中存儲了前面提到的該 VAR 模型的全部五種脈衝響應函數的估計結果。

得到了脈衝響應函數的估計結果後,我麼就可以使用 irf graph 命令來繪製秒衝響應圖形了:

irf graph oirf, impulse(lrgrossinv lrconsump lrgdp) response(lrgrossinv lrconsump lrgdp)  yline (0,lcolor(black)) byopts(yrescale)

脈衝響應函數脈衝響應圖形中,每一行爲同種衝擊對不同變量造成的影響,每一列爲不同衝擊對同一變量造成的影響。橫座標的刻度單位爲 VAR 模型估計的單位時間(在這個案例中爲每一季度)。這張圖形中顯示的是衝擊在 10 個季度內造成的影響。縱座標以每個變量自己的單位來衡量,由於我們估計的模型所有變量的單位均爲百分比,因此縱座標表示百分比的變化。

第一行展示了家庭消費 (lrconsump) 受到一個單位標準差的衝擊對 VAR 系統造成的影響:家庭消費 (lrconsump) 會瞬間全部吸收衝擊,並增加相應單位的百分比,此影響甚至到 10 個季度之後都沒有消退。GDP (lrgdp) 受到該衝擊的影響會在4個季度內有所上升,在第四個季度達到峯值,隨後該影響慢慢衰退。固定資本形成額 (lrconsump) 與 GDP 呈現相似的變化。

第二行展示了GDP (lrgdp) 受到一個單位標準差的衝擊對 VAR 系統造成的影響:家庭消費 (lrconsump) 和固定資本形成額 (lrconsump) 都在前 5 個季度輕微下降,之後回升。

第三行展示了固定資本形成額 (lrconsump) 受到一個標準差的衝擊對 VAR 系統造成的影響:家庭消費 (lrconsump) 和 GDP (lrgdp) 都出現了高度持續的下降。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章