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

本文介绍了脉冲响应函数(IRF)在VAR模型中的作用,它能直观展示多个时间序列变量间的相互影响。通过VMA的系数矩阵,我们可以理解每个变量的单位变化如何影响其他变量。此外,文章还提到了格兰杰因果检验,用于判断一个变量是否是其他变量的格兰杰原因,即滞后值对当期值的影响。在R语言中,可以使用vars包的irf()和causality()函数进行计算和检验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1 脉冲响应函数

1.1 向量移动平均(VMA)

通过上篇的介绍,我们知道双变量的VAR模型的标准形式如下:

通过不断迭代,可以将上式进行如下转换:

当,,而的数学期望始终为0,则为的数学期望,记为。则有,

通过上篇我们还知道,

代入得到,

上式称为VAR的移动平均形式,即VMA(vector moving averge)。

1.2  VMA的系数矩阵()

通过定义如下符号:

VMA可以写成如下形式:

可以看出,中的元素刻画了的单位变化对时间序列变量当期值的影响作用。以双变量为例,每个都是一个二行、二列的矩阵:

  • 第一行、第一列:的单位变化对的影响作用;

  • 第一行、第二列:的单位变化对的影响作用;

  • 第二行、第一列:的单位变化对的影响作用;

  • 第二行、第二列:的单位变化对的影响作用。

每个位置的元素构成了一个脉冲响应函数,反映了不同滞后期的的单位变化对的影响的变化趋势。

1.3 R中的函数及案例

和上篇一样,这里仍然使用vars工具包中的相关函数。

计算VMA的系数矩阵()的函数是Phi(),它的语法结构如下:

Phi(x, nstep = 10)
  • 参数含义如下:

  • x:由VAR()SVAR()函数估计出的VAR模型对象;

  • nstep:的最大滞后项数,默认为10。

Phi()函数输出的矩阵个数是nstep + 1,其中第一个为,然后依次为、、...、。

library(vars)
model <- VAR(Canada, p = 2, type = "const")
Phi(model, nstep = 2)  

## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    0    0    0
## [2,]    0    1    0    0
## [3,]    0    0    1    0
## [4,]    0    0    0    1
## 
## , , 2
## 
##            [,1]        [,2]        [,3]        [,4]
## [1,]  1.6378206  0.16727167 -0.06311863  0.26558478
## [2,] -0.1727658  1.15042820  0.05130390 -0.47850131
## [3,] -0.2688329 -0.08106500  0.89547833  0.01213003
## [4,] -0.5807638 -0.07811707  0.01866214  0.61893150
## 
## , , 3
## 
##            [,1]       [,2]        [,3]       [,4]
## [1,]  2.0191501  0.3491150 -0.14251580  0.6512430
## [2,]  0.1676489  1.1553945 -0.01191318  0.1240154
## [3,] -0.3062245 -0.2169480  0.86759379 -0.1419466
## [4,] -0.8923428 -0.1847587  0.10271259  0.1952708

脉冲响应函数可以通过irf()函数计算,语法结构如下:

irf(x, impulse = NULL, response = NULL,
    n.ahead = 10, ortho = TRUE, cumulative = FALSE, 
    boot = TRUE, ci = 0.95, runs = 100, seed = NULL, ...)

主要参数含义如下:

  • x、n.ahead:同Phi()函数的xnstep参数;

  • impulse:作为脉冲的变量;默认为所有内生变量;

  • response:作为响应的变量;默认为所有内生变量;

  • cumulative:是否计算累积的脉冲响应系数。

impluse <- irf(model, n.ahead = 20)
par(mfrow = c(2,2))
plot(impluse)
30778308f59848abe0f94f2d3ed44c2b.png 193d1638c31b9141cc3d7f143ba232e3.png d6c0187c669e88f47dc1060bbf3d3fa4.png 7bb39ad209ccb7a939e1bfb2dd89ffe9.png

2 格兰杰因果检验

若变量的「滞后值」对的当期值具有影响作用,则称是的格兰杰(Granger)原因,即对于下式中至少有一个滞后项系数不为0:

402 Payment Required

  • 是否为0与是否是格兰杰原因无关,因为它刻画的是当期值而非滞后值对当期值的影响作用。

格兰杰因果检验(Granger Causality Test)就是检验某(些)变量是否是其他变量的格兰杰原因,其零假设是该变量不是其他变量的格兰杰原因。若零假设为真,意味着没必要把该变量作为VAR模型的内生变量看待。

可以使用vars工具包中的causality()函数进行格兰杰因果检验,语法结构如下:

causality(x, cause = NULL, vcov.=NULL, 
          boot=FALSE, boot.runs=100)

检验变量e是否为其他变量的格兰杰原因:

causality(model, cause = "e")

## $Granger
## 
##  Granger causality H0: e do not Granger-cause prod rw U
## 
## data:  VAR object model
## F-Test = 6.2768, df1 = 6, df2 = 292, p-value = 3.206e-06
推荐阅读

b9ebb68277070689dfe2fba5446bfd1a.png
ggplot2基础语法系列推文汇总
9bd8fbb41004234831fdd3f2e92cc3dc.png
胶水函数用法的几个例子
5c543d28c989ee71e0847e3932b18806.png
空间计量经济模型的简单形式在R语言中的实现
33eecea8471a5bd3f5657e1b69226ec2.png
使用R语言的常用工具包绘制双变量填充地图
66d587895240c1a86f6ab8adef90df80.png
R语言基础绘图系统的拼图功能

6e887cb8b3b511e9d0eb8cae9dc548ea.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值