使用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) 都出现了高度持续的下降。

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