Source: David Schenck→ Vector autoregressions in Stata
1. 引言
在單變量回歸中,一個平穩的時間序列 經常被模型化爲 AR 過程:
當我們分析多個時間序列時,一個對 AR 模型自然的拓展就是 VAR模型, 在這個模型中一組向量裏的每個時間序列被模型化爲決定於自己的滯後項以及這組向量裏所有其他變量的滯後項。兩階 VAR 模型如下式:
經濟學家通常使用這種形式的模型分析宏觀數據、做出因果推斷並提供政策建議。
在這篇推文中,我會用美國失業率、通脹率以及名義利率估計一個三變量 VAR 模型。這個 VAR 模型類似於宏觀經濟中做貨幣政策分析的模型。這篇文章的主要關注點在於該模型的基本估計和估計結果評估,數據和 do 文件在文末提供。背景知識和理論細節可以在這篇文章中獲得。
2. 數據和估計
當使用 VAR 模型進行估計時,我們需要做兩個決定。第一個是需要選擇將那些變量放入 VAR 模型中,這個決定一般取決於研究問題和相關文獻。第二個決定是需要選擇滯後階數。決定了滯後階數後,就可以開始估計。得到估計結果後,需要對結果進行評估分析看其是否符合模型設定。
本文使用 1995-2005 年間美國失業率、CPI和短期名義利率的季度觀測值對模型進行估計,數據來源於聯邦經濟數據庫。在 stata
數據集中,inflation爲CPI,unrate 爲失業率,ffr則表示利率。因此,本文估計的 VAR 模型爲:
是由截距項組成的向量, 到 均爲 的係數矩陣。包含這些變量的 VAR 模型或相近的模型變體經常出現在貨幣政策分析中。
下一步是決定一個合理的滯後階數,我使用 varsoc
命令執行滯後結束選擇測試。
. varsoc inflation unrate ffr, maxlag(8)
Selection-order criteria
Sample: 41 - 236 Number of obs = 196
+---------------------------------------------------------------------------+
|lag | LL LR df p FPE AIC HQIC SBIC |
|----+----------------------------------------------------------------------|
| 0 | -1242.78 66.5778 12.712 12.7323 12.7622 |
| 1 | -433.701 1618.2 9 0.000 .018956 4.54796 4.62922 4.74867 |
| 2 | -366.662 134.08 9 0.000 .010485 3.95574 4.09793 4.30696* |
| 3 | -351.034 31.257 9 0.000 .009801 3.8881 4.09123 4.38985 |
| 4 | -337.734 26.6 9 0.002 .009383 3.84422 4.1083 4.4965 |
| 5 | -319.353 36.763 9 0.000 .008531 3.7485 4.07351 4.5513 |
| 6 | -296.967 44.77* 9 0.000 .007447* 3.61191* 3.99787* 4.56524 |
| 7 | -292.066 9.8034 9 0.367 .007773 3.65373 4.10063 4.75759 |
| 8 | -286.45 11.232 9 0.260 .008057 3.68826 4.1961 4.94265 |
+---------------------------------------------------------------------------+
Endogenous: inflation unrate ffr
Exogenous: _cons
varsoc
展示了之後滯後階數選擇檢驗的主要結果,檢驗的細節可以通過 help varsoc
得到。似然比和 AIC 都推薦選擇六階滯後,因此本文選擇六階滯後。
有了變量和滯後階數,需要估計係數矩陣和誤差項的協方差矩陣。係數估計可以通過對 VAR 模型中的每個等式做 OLS 迴歸得到,誤差項的協方差矩陣則需要根據樣本殘差的協方差矩陣進行估計。var
命令可以同時實現這兩個矩陣的估計,其結果中係數矩陣會默認給出,誤差項的協方差矩陣則可以 e(Sigma) 中找到:
. var inflation unrate ffr, lags(1/6) dfk small
Vector autoregression
Sample: 39 - 236 Number of obs = 198
Log likelihood = -298.8751 AIC = 3.594698
FPE = .0073199 HQIC = 3.97786
Det(Sigma_ml) = .0041085 SBIC = 4.541321
Equation Parms RMSE R-sq F P > F
----------------------------------------------------------------
inflation 19 .430015 0.9773 427.7745 0.0000
unrate 19 .252309 0.9719 343.796 0.0000
ffr 19 .795236 0.9481 181.8093 0.0000
----------------------------------------------------------------
------------------------------------------------------------------------------
| Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
inflation |
inflation |
L1. | 1.37357 .0741615 18.52 0.000 1.227227 1.519913
L2. | -.383699 .1172164 -3.27 0.001 -.6150029 -.1523952
L3. | .2219455 .1107262 2.00 0.047 .0034489 .440442
L4. | -.6102823 .1105383 -5.52 0.000 -.8284081 -.3921565
L5. | .6247347 .1158098 5.39 0.000 .3962065 .8532629
L6. | -.2352624 .0719141 -3.27 0.001 -.3771708 -.093354
|
unrate |
L1. | -.4638928 .1386526 -3.35 0.001 -.7374967 -.1902889
L2. | .6567903 .2370568 2.77 0.006 .1890049 1.124576
L3. | -.271786 .2472491 -1.10 0.273 -.759684 .2161119
L4. | -.4545188 .2473079 -1.84 0.068 -.9425328 .0334952
L5. | .6755548 .2387697 2.83 0.005 .2043893 1.14672
L6. | -.1905395 .136066 -1.40 0.163 -.4590393 .0779602
|
ffr |
L1. | .1135627 .0439648 2.58 0.011 .0268066 .2003187
L2. | -.1155366 .0607816 -1.90 0.059 -.2354774 .0044041
L3. | .0356931 .0628766 0.57 0.571 -.0883817 .1597678
L4. | -.0928074 .0620882 -1.49 0.137 -.2153263 .0297116
L5. | .0285487 .0605736 0.47 0.638 -.0909816 .1480789
L6. | .0309895 .0436299 0.71 0.478 -.0551055 .1170846
|
_cons | .3255765 .1730832 1.88 0.062 -.0159696 .6671226
-------------+----------------------------------------------------------------
unrate |
inflation |
L1. | .0903987 .0435139 2.08 0.039 .0045326 .1762649
L2. | -.1647856 .0687761 -2.40 0.018 -.3005019 -.0290693
L3. | .0502256 .064968 0.77 0.440 -.0779761 .1784273
L4. | .0919702 .0648577 1.42 0.158 -.036014 .2199543
L5. | -.0091229 .0679508 -0.13 0.893 -.1432106 .1249648
L6. | -.0475726 .0421952 -1.13 0.261 -.1308366 .0356914
|
unrate |
L1. | 1.511349 .0813537 18.58 0.000 1.350814 1.671885
L2. | -.5591657 .1390918 -4.02 0.000 -.8336363 -.2846951
L3. | -.0744788 .1450721 -0.51 0.608 -.3607503 .2117927
L4. | -.1116169 .1451066 -0.77 0.443 -.3979565 .1747227
L5. | .3628351 .1400968 2.59 0.010 .0863813 .639289
L6. | -.1895388 .079836 -2.37 0.019 -.3470796 -.031998
|
ffr |
L1. | -.022236 .0257961 -0.86 0.390 -.0731396 .0286677
L2. | .0623818 .0356633 1.75 0.082 -.0079928 .1327564
L3. | -.0355659 .0368925 -0.96 0.336 -.1083661 .0372343
L4. | .0184223 .0364299 0.51 0.614 -.0534651 .0903096
L5. | .0077111 .0355412 0.22 0.828 -.0624226 .0778449
L6. | -.0097089 .0255996 -0.38 0.705 -.0602247 .040807
|
_cons | .187617 .1015557 1.85 0.066 -.0127834 .3880173
-------------+----------------------------------------------------------------
ffr |
inflation |
L1. | .1425755 .1371485 1.04 0.300 -.1280603 .4132114
L2. | .1461452 .2167708 0.67 0.501 -.2816098 .5739003
L3. | -.0988776 .2047683 -0.48 0.630 -.502948 .3051928
L4. | -.4035444 .2044208 -1.97 0.050 -.8069291 -.0001598
L5. | .5118482 .2141696 2.39 0.018 .0892262 .9344702
L6. | -.1468158 .1329922 -1.10 0.271 -.40925 .1156184
|
unrate |
L1. | -1.411603 .2564132 -5.51 0.000 -1.917585 -.9056216
L2. | 1.525265 .4383941 3.48 0.001 .660179 2.39035
L3. | -.6439154 .4572429 -1.41 0.161 -1.546195 .2583646
L4. | .8175053 .4573517 1.79 0.076 -.0849893 1.72
L5. | -.344484 .4415619 -0.78 0.436 -1.21582 .5268524
L6. | .0366413 .2516297 0.15 0.884 -.459901 .5331835
|
ffr |
L1. | 1.003236 .0813051 12.34 0.000 .8427961 1.163676
L2. | -.4497879 .1124048 -4.00 0.000 -.6715968 -.2279789
L3. | .4273715 .1162791 3.68 0.000 .1979173 .6568256
L4. | -.0775962 .114821 -0.68 0.500 -.3041731 .1489807
L5. | .259904 .1120201 2.32 0.021 .0388542 .4809538
L6. | -.2866806 .0806857 -3.55 0.000 -.445898 -.1274631
|
_cons | .2580589 .3200865 0.81 0.421 -.3735695 .8896873
------------------------------------------------------------------------------
. matlist e(Sigma)
| inflation unrate ffr
-------------+---------------------------------
inflation | .1849129
unrate | -.0064425 .0636598
ffr | .0788766 -.09169 .6324
var
命令的報告結果以矩陣形式報告,每個方程以其因變量的名字命名,因此會報告三個方程:通脹方程、失業率方程以及利率方程。 e(Sigma) 中則保存 VAR 模型估計殘差的協方差矩陣。注意各個方程的殘差相關。
如你所見,估計係數表格非常長。即使不考慮常數項,一個有 個變量和 階滯後的 VAR 模型中也會有 個係數。我們的 3 變量,6 階滯後的 VAR 則有將近 60 個係數,但是我們卻僅有 198 個觀測。 選項 dfk
和 small
將對默認情形下報告的大樣本統計量進行小樣本調整。雖然結果會報告係數、標準誤、 統計量、統計量等,但是並不能給我們直觀的信息含量,因此很多論文甚至都不會報告這些係數表格,但是他們會報告一些更有信息量的統計量。接下來的兩部分將會介紹兩個 VAR 結果分析中常用的統計手段:格蘭傑因果檢驗和脈衝響應函數。
3. 評價 VAR 結果:格蘭傑因果檢驗
如果給定 的滯後階數,的滯後滯後項在以 爲因變量的方程中聯合統計顯著,則稱 是 的格蘭傑原因 。例如,如果利率滯後項對失業率是聯合顯著的,則可以稱利率是失業率的格蘭傑原因。vargranger
命令可以進行格蘭傑因果檢驗。
. quietly var inflation unrate ffr, lags(1/6) dfk small
. vargranger
Granger causality Wald tests
+------------------------------------------------------------------------+
| Equation Excluded | F df df_r Prob > F |
|--------------------------------------+---------------------------------|
| inflation unrate | 3.5594 6 179 0.0024 |
| inflation ffr | 1.6612 6 179 0.1330 |
| inflation ALL | 4.6433 12 179 0.0000 |
|--------------------------------------+---------------------------------|
| unrate inflation | 2.0466 6 179 0.0618 |
| unrate ffr | 1.2751 6 179 0.2709 |
| unrate ALL | 3.3316 12 179 0.0002 |
|--------------------------------------+---------------------------------|
| ffr inflation | 3.6745 6 179 0.0018 |
| ffr unrate | 7.7692 6 179 0.0000 |
| ffr ALL | 5.1996 12 179 0.0000 |
+------------------------------------------------------------------------+
像之前一樣,方程之間通過被解釋變量進行區分。對於每個方程,vargranger
都可以先單獨檢驗每個變量在 VAR 模型中的因果關係,然後檢驗所有變量整體的格蘭傑因果關係。在對失業率方程進行的格蘭傑因果檢驗中,如上表所示,“ffr excluded” 檢驗的原假設是所有利率及其滯後項的係數在對失業率的預測中均爲 0 ,備擇假設是至少有一個不爲 0 。 值爲 0.27 並未落在 5% 顯著性水平的拒絕域內,因此我們不能拒絕利率不會影響失業率的原假設,也就是說我們的數據和模型不支持利率是失業率的格蘭傑原因的假設。相反地,在利率方程中,通脹和失業率的滯後項都是統計顯著的,因此可以說通脹和失業率是利率的格蘭傑原因。
每個方程中“all excluded” 行都剔除了全部的滯後項,在方程中只留了自相關係數,這是一個對方程中其他所有滯後項的統計顯著性的檢驗,它可以被當做是一個純粹的自迴歸模型設定(原假設)和 VAR 模型設定(備擇假設)之間的檢驗。
你可以通過對每個方程跑 OLS 迴歸然後使用 test
命令檢驗相應的原假設來得到與格蘭傑因果檢驗相同的結果,其結果與 vargranger
命令得到的結果應該是匹配的:
. quietly regress unrate l(1/6).unrate l(1/6).ffr l(1/6).inflation
. test l1.inflation=l2.inflation=l3.inflation
> =l4.inflation=l5.inflation=l6.inflation=0
( 1) L.inflation - L2.inflation = 0
( 2) L.inflation - L3.inflation = 0
( 3) L.inflation - L4.inflation = 0
( 4) L.inflation - L5.inflation = 0
( 5) L.inflation - L6.inflation = 0
( 6) L.inflation = 0
F( 6, 179) = 2.05
Prob > F = 0.0618
. test l1.ffr=l2.ffr=l3.ffr=l4.ffr=l5.ffr=l6.ffr=0
( 1) L.ffr - L2.ffr = 0
( 2) L.ffr - L3.ffr = 0
( 3) L.ffr - L4.ffr = 0
( 4) L.ffr - L5.ffr = 0
( 5) L.ffr - L6.ffr = 0
( 6) L.ffr = 0
F( 6, 179) = 1.28
Prob > F = 0.2709
4. 評價 VAR 模型結果:脈衝響應分析
評價 VAR 模型結果的第二個統計手段是對系統施加一些外生衝擊,然後看這些衝擊對於內生變量的影響。但是需要記住系統的每個方程的衝擊之間並不是相互獨立的,因此就我們現有模型而言,當我們討論一個對通脹的衝擊時,其結果常常是模糊的,因爲這個衝擊也會同時影響該方程中利率和失業率及其滯後項。
. matlist e(Sigma)
| inflation unrate ffr
-------------+---------------------------------
inflation | .1849129
unrate | -.0064425 .0636598
ffr | .0788766 -.09169 .6324
解決這個問題的一個方法是假設存在一個結構性衝擊向量 ,定義其其分量相互獨立,並且這個衝擊向量與原來的衝擊之間存在如下關係:
如果我們定義誤差項的協方差矩陣爲 ,則矩陣 A 與 之間的關係爲:
因爲我們有從樣本估計出的協方差矩陣 ,我們於是可以由以上等式構造出 :
很多 矩陣都滿足方程 (1) 。一種可能的方法是假設 是一個下三角矩陣,則 即可以通過對 進行 Cholesky 分解得到。這種分解方法非常常見,因此使用 var
命令時可以直接指定使用 Cholesky 分解。
對矩陣 做出下三角的假設在 VAR 模型的變量的順序做出了要求,因爲不同的順序將會得到不同的 。變量順序的經濟學含義是對任意一個方程,其因變量都會被順序在其之前變量的衝擊影響,而不會被順序在其之後的變量影響。對於這篇推文,我會對我們所用變量的順序做出如下的設定:通脹衝擊可以同期影響所有三個變量;失業率衝擊只會同期影響利率,但不會影響通脹;利率衝擊順序在最後,因此既不會同期影響失業率,也不會同期影響通脹。
有了 ,我們就可以製造方程間相互獨立的衝擊並且在 VAR 模型中觀察這些衝擊對變量施加的影響了。我們可以通過 irf create
命令建立脈衝響應方程,然後使用 irf graph
命令對脈衝響應結果畫圖。
. quietly var inflation unrate ffr, lags(1/6) dfk small
. irf create var1, step(20) set(myirf) replace
(file myirf.irf now active)
(file myirf.irf updated)
. irf graph oirf, impulse(inflation unrate ffr) response(inflation unrate ffr)
> yline(0,lcolor(black)) xlabel(0(4)20) byopts(yrescale)
在跑出 VAR 之後,irf create
命令會創建一個 .irf 文件來保存 VAR 模型的結果。多個不同的 VAR 結果會被分別保存在不同的文件找那個,因此我們需要給每個 VAR 命名,在我們的例子中我們命名爲 var1 。 set( ) 選項給 .irf’ 文件命名並將該文件設置爲“活動的”。 .irf’ 文件將在之後的分析中使用。 step(20) 選項則指定 irf create
命令去獲得 20 期的脈衝響應結果。
irf graph
命令根據 .irf’ 文件中的某些統計量畫圖。在該文件中的衆多統計量中,我們對正交脈衝響應方程最感興趣,因此我們在 irf graph
命令後指定 oirf。impulse( ) 和 response( ) 選項則分別指定對以哪些方程爲自變量的方程造成衝擊,以及對哪些變量需要繪圖,這裏我們將對所有變量進行衝擊並繪圖,脈衝響應圖如下:
脈衝響應圖每行放置同一衝擊的影響,每列放置同一受衝擊影響的變量。每張圖的橫軸是 VAR 的時間軸,在這裏時間單位爲季度,因此這裏顯示的是衝擊在未來 20 個季度之內的影響。縱軸爲 VAR 模型中的變量,由於數據中每個變量都使用百分比來衡量,因此在所有面板中縱軸表示的都是百分比的變化。
第一行表示的是一個單位的利率衝擊對系統的影響。對利率的影響是持續的,並且在衝擊開始後的 12 個季度內都保持在較高的水平;通脹在 8 個季度後有輕微下降,但是該衝擊對通脹的影響在任意時間段內都是不顯著的;失業率在12個月後有輕微下降,在下降之前最高會有 0.2% 的增加。
第二行則給出了通脹衝擊對系統的影響。一個未預期到的通脹衝擊將給失業率和利率帶來持續正的影響,並且該衝擊的影響在衝擊發生 5 年後依然顯著。
最後,第三行展示了失業率衝擊對系統的影響。失業率衝擊將會導致通脹率在衝擊發生後一年內下降約 0.5 個百分點,利率則在同樣時間段內下降約 1 個百分點。
這裏使用的 VAR 和順序都很清楚。所有的推斷都基於 矩陣,也就是 VAR 模型中變量的順序。不同的順序會產生不同的 矩陣,從而得到不同的脈衝響應結果。此外,除了簡單地指定變量順序外,還有別的識別策略,我將在知乎的推文中討論。
結論
在這篇推文中,我們估計了一個 VAR 模型並討論了該模型中兩個常見的統計工具:格蘭傑因果檢驗和脈衝響應分析。在我們的下一篇推文中,我們會對脈衝響應方程進行更深的討論並給出對 VAR 模型進行結構推斷的其他方法。