使用Stata做脉冲响应分析

article/2025/11/10 20:32:50

Source: Rizaudin Sahlan → Impulse Response Function with Stata (time series)

在这篇推文中,我们讨论 VAR 模型中的脉冲响应函数(IRFs)。

脉冲响应函数反映了当 VAR 模型某个变量受到"外生冲击"时,模型中其他变量受到的动态影响。我们会根据这些变量受到此冲击后的一段时间内的动态变化画出脉冲响应图形。

脉冲响应函数是一种条件预测,更确切地说,是一种点估计,只不过我们会估计冲击发生后不同时点的值。

类似于 AR 模型有 MA 表达形式,VAR 模型也有 VMA 表达形式。 VMA 表达形式有助于我们探求在 VAR 系统中变量收到冲击后的随时间变化的路径。考虑一个由 y t y_t yt z t z_t zt 构成的VAR 系统:
(1) [ y t z t ] = [ a 10 a 20 ] + [ a 11 a 12 a 21 a 22 ] [ y t − 1 z t − 1 ] + [ e 1 t e 2 t ] \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} [ytzt]=[a10a20]+[a11a21a12a22][yt1zt1]+[e1te2t](1)
该模型也可以写成如下形式:
(2) [ y t z t ] = [ y ‾ z ‾ ] + ∑ i = 0 ∞ [ a 11 a 12 a 21 a 22 ] i [ e 1 t − i e 2 t − i ] \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} [ytzt]=[yz]+i=0[a11a21a12a22]i[e1tie2ti](2)
方程 (2) 使用 { e 1 t } \left\{ e_ { 1 t } \right\} {e1t} { e 2 t } \left\{ e_ { 2 t } \right\} {e2t} 序列表示了 y t y_t yt z t z_t zt 。根据 Enders(2014, p286), { e 1 t } \left\{ e_ { 1 t } \right\} {e1t} { e 2 t } \left\{ e_ { 2 t } \right\} {e2t} 可以写成:
(3) [ e 1 t e 2 t ] = 1 1 − b 12 b 21 [ 1 − b 12 − b 21 1 ] [ ε y t ε z t ] \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} [e1te2t]=1b12b211[1b21b121][εytεzt](3)
将 (3) 式代入 (2) 式中可得:
( 4 ) [ y t z t ] = [ y ‾ z ‾ ] + 1 1 − b 12 b 21 ∑ i = 0 ∞ [ a 11 a 12 a 21 a 22 ] i [ 1 − b 12 − b 21 1 ] [ ε y t ε z t ] \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 } [ytzt]=[yz]+1b12b211i=0[a11a21a12a22]i[1b21b121][εytεzt]( 4 )
由于 (4) 式不太简洁,我们可以通过定义一个 2 × 2 2\times2 2×2 的矩阵 ϕ i \phi_i ϕi 来简化它:
(5) ϕ i = A 1 i 1 − b 12 b 21 [ 1 − b 12 − b 21 1 ] \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} ϕi=1b12b21A1i[1b21b121](5)
将 (5) 式代入 (4) 式可得:
(6) [ y t z t ] = [ y ‾ z ‾ ] + ∑ i = 0 ∞ [ ϕ 11 ( i ) ϕ 12 ( i ) ϕ 21 ( i ) ϕ 22 ( i ) ] i [ ε y t − i ε z t − i ] \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} [ytzt]=[yz]+i=0[ϕ11(i)ϕ21(i)ϕ12(i)ϕ22(i)]i[εytiεzti](6)
显然 (6) 式可以写成更简洁的形式:
(7) x t = μ + ∑ i = 0 ∞ ϕ i ε t − i x _ { t } = \mu + \sum _ { i = 0 } ^ { \infty } \phi _ { i } \varepsilon _ { t - i }\tag{7} xt=μ+i=0ϕiεti(7)
以上 VMA 形式的表出对于我们理解 y t y_t yt z t z_t zt 构成的VAR 系统格外有帮助。其中系数矩阵 ϕ i \phi_i ϕi 即为来自 ε y t \varepsilon_{yt} εyt ε z t \varepsilon_{zt} εzt 的冲击对 y t y_t yt z t z_t zt 序列的影响。

很显然 ϕ j k ( 0 ) \phi_{jk} (0) ϕjk(0) 是冲击的即时影响。比如, ϕ 12 ( 0 ) \phi_{12} (0) ϕ12(0) 表示 1 个单位 ε z t \varepsilon_{zt} εzt 的冲击会使当期的 y t y_t yt 变化多少个单位。类似地, ϕ 11 ( 1 ) \phi_{11} (1) ϕ11(1) ϕ 12 ( 1 ) \phi_{12} (1) ϕ12(1) 则分别表示来自一个单位 ε y t − 1 \varepsilon_{yt-1} εyt1 和一个单位 ε z t − 1 \varepsilon_{zt-1} εzt1 的冲击对 y t y_t yt 产生的影响。

显然 ϕ 11 ( 1 ) \phi_{11} (1) ϕ11(1) ϕ 12 ( 1 ) \phi_{12} (1) ϕ12(1) 也可以表示来自一个单位 ε y t \varepsilon_{yt} εyt ε z t \varepsilon_{zt} εzt 的冲击对 y t + 1 y_{t+1} yt+1 产生的影响。以此类推,来自一个单位 ε y t \varepsilon_{yt} εyt ε z t \varepsilon_{zt} εzt 的冲击对后续各期的 y t y_t yt z t z_t zt 产生的影响可以通过对脉冲响应函数进行适当的汇总得到。比如来自一个单位 ε z t \varepsilon_{zt} εzt 的冲击对 { y t y_{t} yt} 序列在后续第 n n n 期产生的影响即为 ϕ 12 ( n ) \phi_{12} (n) ϕ12(n) ,则在此 ε z t \varepsilon_{zt} εzt 冲击对 y t y_{t} yt 序列在冲击发生后的 n n n 期内产生的总影响为:
∑ i = 0 n ϕ 12 ( n ) \sum _ { i = 0 } ^ { n } \phi _ { 12 } ( n ) i=0nϕ12(n)
n n n 趋于无穷,可以得到冲击对 y t y_t yt z t z_t zt 产生的长期影响。由于 { y t y_{t} yt} 和 { z t z_{t} zt} 被假定为平稳的,易得对于任意 j j j k k k
∑ i = 0 ∞ ϕ j k 2 ( i ) 在  i → ∞ 时收敛 \sum _ { i = 0 } ^ { \infty } \phi _ { j k } ^ { 2 } ( i )\text{ 在 $i\rightarrow \infty$ 时收敛} i=0ϕjk2(i)  i∞ 时收敛
四个系数集 ϕ 11 ( i ) \phi_ { 11 } ( i ) ϕ11(i) ϕ 12 ( i ) \phi _ { 12 } ( i ) ϕ12(i) ϕ 21 ( i ) \phi _ { 21 } ( i ) ϕ21(i) ϕ 22 ( i ) \phi _ { 22 } ( i ) ϕ22(i) 被称为脉冲响应函数。绘制脉冲响应函数的图形是观察冲击 ε y t \varepsilon_{yt} εyt ε z t \varepsilon_{zt} εzt 对系统内变量 y t y_t yt z t z_t zt 影响的实用手段,也是观察来自 ε y t \varepsilon_{yt} εyt ε z t \varepsilon_{zt} ε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 criteriaSample:  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 lrgdpExogenous:  _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) 都出现了高度持续的下降。


http://chatgpt.dhexx.cn/article/TYmKqyum.shtml

相关文章

matlab 单位脉冲响应,滤波器系数、单位脉冲响应、频率响应等概念笔记

单位脉冲响应:单位脉冲和滤波器系数的卷积。 对于FIR滤波器来说,单位脉冲响应就是滤波器系数。对于IIR滤波器,应该是需要用matlab中的filter函数,得到单位脉冲响应。 频率响应:幅度和相位随频率的变化关系。具体地&…

单位脉冲(冲激)响应与频率响应

1.线性时不变系统 (1)线性系统:满足可加性和比例性(齐次性)的系统。 令y(t)为系统对输入x(t)的响应: 比例性:ay(t)为该系统对ax(t)的响应,其中a为复常数。 可加性:为…

房间脉冲响应测量与模拟方法

本文是作者投稿到“21dB声学人”公众号的文章,现经有允许转载到自己的博客,技术交流可以联系593170280qq.com 房间脉冲响应(Room Impulse Response, RIR)表征了房间系统的系统响应,可以用于房间均衡和计算房间声学参数…

时间序列分析(12)| 脉冲响应函数、格兰杰因果检验

上篇介绍到,VAR模型研究的是多个时间序列变量之间的相互影响关系,但是模型估计出的参数结果及其显著水平似乎并不能直观地反映这种影响关系,而要想直观地呈现这种关系,就需要使用本篇介绍的「脉冲响应函数」(impulse r…

鸢尾花数据集可视化

Iris数据集 Iris数据集包含有四个属性一个标签 四个属性分别是 花萼(Sepall)长度花萼宽度花瓣(Petal)长度花瓣宽度 一个标签,用来说明是哪一种鸢尾花 山鸢尾(Setosa)变色鸢尾(versicolor)维吉尼亚鸢尾(virginica) 目标 任意两个不同的…

鸢尾花数据集分类--神经网络

1.1 鸢尾花数据集介绍 iris数据集是用来给莺尾花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,我们需要建立一个分类器,该分类器可通过样本的四个特征来来判断样本属于山鸢尾(Setosa&#xff0…

机器学习鸢尾花数据集分析

目录 1 sklearn数据集的使用2 sklearn数据集返回值介绍3 查看数据分布4 数据集的划分5 总结 1 sklearn数据集的使用 鸢尾属(拉丁学名:Iris L.)是单子叶植物纲,鸢尾科多年生草本植物,有块茎或匍匐状根茎;叶…

决策树可视化:鸢尾花数据集分类(附代码数据集)

决策树 数据集实战可视化评价 决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,流程图就是一种决策树。 有没有车,没车的话有没有房,没房的话有没有存款,没存款pass。这个流程就是…

机器学习算法:基于鸢尾花(iris)数据集的数据可视化 (200+收藏)

文章目录 基于鸢尾花(iris)数据集的数据可视化1、数据导入2、查看样本数据3、特征与标签组合的散点可视化3.1、 散点图3.2、 箱型图3.2、 三维散点图想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 干货推送,微信随时解答你的疑问 😃😃😃 基于…

鸢尾花数据集的可视化

#TensorFlow实战 鸢尾花数据集的可视化化展示 文章目录 前言一、介绍二、步骤1.引入库2.读入数据 前言 数据可视化展示能在实验中可视化展出实验结果,是基础部分 一、介绍 鸢尾花数据集是公开的数据集,可通过URL从TensorFlow的Keras连接下载。 二、步…

探索sklearn | 鸢尾花数据集

1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集。它是用统计进行分类的鼻祖。 sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一。 导入的方法很简单,不过我比较好奇它是如何来存…

线性回归实例-鸢尾花数据集

文章目录 一、具体实现步骤1. 导入Iris鸢尾花数据集2. 提取花瓣数据3. 拆分数据4. 训练模型 二、可视化结果展示1. 训练集2. 测试集 三、相关知识点讲解1. train_test_split()函数2. LinearRegression()函数3. 散点图与折线统计图的绘制 这篇文章中,我们要通过鸢尾花…

基于朴素贝叶斯的鸢尾花数据集分类

目录 1.作者介绍2.理论知识介绍2.1算法介绍2.2数据集介绍 3.实验代码及结果3.1 数据集下载3.2实验代码3.2实验结果 1.作者介绍 王炜鑫,男,西安工程大学电子信息学院,2021级研究生 研究方向:小型无人直升机模型辨识 电子邮件&…

鸢尾花数据集的数据可视化

鸢尾花数据集的数据显示 一、鸢尾花数据集介绍1.历史2.数据集 二、鸢尾花数据集可视化1.普通读取数据方法2.运行结果3.普通读取数据方法4.运行结果5.未使用mglearn库的代码6.运行结果7.使用mglearn库的代码8.运行结果 一、鸢尾花数据集介绍 1.历史 安德森鸢尾花卉数据集&#…

鸢尾花数据集分类

数据集介绍 共有数据150组,每组包括花萼长、花萼宽、花瓣长、花瓣宽4个输入特征。 同时给出了,这一组特征对应的鸢尾花类别。类别包括Setosa Iris(狗尾草 鸢尾),Versicolour Iris(杂色鸢尾)&…

鸢尾花数据集分类-决策树

文章目录 决策树数据集代码实验分析 决策树 决策树(Decision Tree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。主要介绍分类树。 决策树由结点和有向边组成。结点有两种类型:内…

鸢尾花数据集的各种玩法

目录 鸢尾花数据集下载鸢尾花数据集iris csv文件下载数据集 Pandas访问csv数据集 Pandas库Pandas二维数据基本操作 读取csv数据集文件设置列标题names参数 访问数据显示统计信息DataFrame的常用属性:ndim、size、shape转化为NumPy数组 访问数组元素–索引和切片 鸢…

iris鸢尾花数据集最全数据分析

写在前面 在写这篇文章之前,首先安利下jupyter,简直是神作,既可以用来写文章,又可以用来写代码,文章和代码并存,简直就是写代码/文章/教程的利器。 安装很简单:pip install jupyter 使用很简单…

sklearn数据集——iris鸢尾花数据集

参考书籍:Python机器学习基础教程 1、初始数据 鸢尾花(Iris)数据集,是机器学习和统计学中一个经典的数据集。它包含在 scikit-learn 的 datasets 模块中。 我们可以调用 load_iris 函数来加载数据: from sklearn.da…

重拾Iris鸢尾花数据集分析

最近我又又又开始了我的机器学习道路,并且回过头来重新看了一遍Iris数据分析,作为机器学习里面最经典的案例之一,鸢尾花既是我入门机器学习到放弃的地方,又是再次细读之后给予我灵感的地方。 下面介绍一下这次灵感之旅&am…