时间序列分析(8)| 结构性变化和Perron检验

本系列的前面两篇推文介绍了使用DF和ADF方法检验时间序列数据中单位存在性。而在一些情况,使用DF和ADF方法会把受到结构性冲击的平稳过程或趋势平稳过程误认为是单位根过程。本篇就来介绍在序列存在结构性变化下的单位根检验方法——Perron检验。

1 结构性变化

按照Pierre Perron的研究,序列受到冲击后发生的结构性变化可以分为三类:

  • A:冲击前后序列的水平发生变化,但斜率不变;

  • B:冲击前后序列的斜率发生变化,但水平未变化;

  • C:冲击前后序列的水平和系列均发生了变化。

  • Pierre Perron的研究见https://www.jstor.org/stable/1913712。

  • 免费下载地址:http://www.fsb.miamioh.edu/lij14/672_perron89.pdf。

1.1 原假设

原假设为序列存在单位根,上述三种情况的序列表达式如下:

情况A:

情况B:

402 Payment Required

情况C:

402 Payment Required

假设发生结构性变化的时刻为。上述式子中:

  • 是脉冲虚拟变量(Pulse);当时,,否则为0;

  • 是水平虚拟变量(Level);当时,,否则为0。

1.2 备选假设

备选假设认为冲击前后序列是趋势平稳过程(趋势项0时为平稳过程),此时三种情况的表达式如下:

情况A:

情况B:

情况C:

式中,当时,,;否则均为0。

2 Perron检验

2.1 检验步骤

Perron检验一共分为如下几个步骤:

「第一步」:根据备选假设的表达式对原序列进行OLS回归,得到其残差,记为。

三种情况下,因变量均为原序列值。自变量包括:

  • A:截距(常数项)、时间项、;

  • B:截距(常数项)、时间项、;

  • C:截距(常数项)、时间项、、。

「第二步」:使用OLS方法对第一步得到的残差项进行自回归估计。

Perron检验就是针对的检验。若原序列存在单位根(原假设),则应不显著异于1。不过在对进行显著性检验前,应先进行第三步。

「第三步」:检验上一步的残差是否存在序列相关。若存在,需改变第二步的回归形式,即加入拓展项:

「第四步」:对第二步或第三步得到的进行显著性检验。

根据如下表达式计算t统计量:

不过该统计量并不服从t分布。Perron通过模拟计算了该统计量的一些临界值。下面比较取绝对值:

  • 若t统计量小于临界值,则接受原假设(即序列是方式结构性变化的单位根过程);

  • 若t统计量大于临界值,则拒绝原假设(即序列是方式结构性变化的趋势平稳过程)。

2.2 临界值表

统计量的临界值除了与显著性水平相关外,还和发生结构性变化的位置有关,位置可以使用表示,其中为序列的时间长度(或者说是样本总数)。
Perron计算的临界值表如下:

情况A:

b16db9902d44bf05036a45f5377ccf61.png

情况B:

fe0dba0ad1682ebc0fc9cdbea1da8634.png

情况C:

40bb52a298fd184bd22366c9d78101b5.png

3 示例

下面根据正反两个示例来说明检验的有效性。

3.1 示例1

本示例为一个平稳序列受到了结构性冲击,即数据生成过程不含单位根。

假设序列,初始值,。序列表达式分为如下两个阶段:

  • 在时,;

  • 在时,其均值增加了,。

首先,生成100个服从正态分布并相互独立的随机数:

set.seed(20220611)
e <- rnorm(100)

然后根据上述表达式模拟的值:

y = 0 + e[1]
for(i in 2:50) {y[i] = 0.5*y[i-1] + e[i]}
for(i in 51:100) {y[i] = 0.5*y[i-1] + e[i] + 5}

plot(y, type = "l", family = "mono")
abline(v = 51, lty = 2, col = "blue")
475916a363e72a317a8307bbff30108c.png

再使用DF方法(时间序列分析(6)| DF检验)检验序列是否存在单位根:

library(urca)
model.1 <- ur.df(y, type = "none", lags = 0)
model.2 <- ur.df(y, type = "drift", lags = 0)
model.3 <- ur.df(y, type = "trend", lags = 0)

summary(model.3)
## Value of test-statistic is: -2.6856 2.6395 3.6612 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47

summary(model.2)
## Value of test-statistic is: -1.1747 0.9737 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86

summary(model.1)
## Value of test-statistic is: -0.3327 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61

可以看出,三个模型的tau都小于10%显著水平的临界值(取绝对值),说明DF检验不能拒绝原假设,即认为序列存在单位根。

最后使用Perron方法进行单位根检验。

得到残差序列ye

DL = c(rep(0,50), rep(1,50))
t = 1:100
ylag = dplyr::lag(y)
ylag[1] = 0
ye = residuals(lm(y ~ t +  DL)) 

plot(ye, type = "l", family = "mono")
lines(e, lty = 2)
7427b63aa3f1095e6a7dd8feea3bc807.png

对残差进行自回归:

fit.1 <- lm(ye ~ dplyr::lag(ye))
summary(fit.1)
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -0.002095   0.122998  -0.017    0.986    
## dplyr::lag(ye)  0.490381   0.088982   5.511 2.94e-07 ***

a1 = summary(fit.1)$coefficients[2,1] # alpha
b1 = summary(fit.1)$coefficients[2,2] # sd of alpha
(a1-1)/b1
## [1] -5.727196

本例中,计算的t统计量为-5.727196,大于5%显著性水平的临界值-3.76(情况A,比较时取绝对值),因此Perron检验可以拒绝存在单位根的原假设。

3.2 示例2

本示例为一个单位根过程受到结构性冲击,即数据生成过程含有单位根。

以随机游走模型为例,构造序列:

  • 在时,;

  • 当时,序列获得一个脉冲,;

  • 在时,其表达式仍为。

下面使用R程序模拟这一序列,随机数序列仍然使用上个示例的:

z = 0 + e[1]
for(i in 2:50) {z[i] = z[i-1] + e[i]}
z[51] = z[50] + e[51] + 10
for(i in 52:100) {z[i] = z[i-1] + e[i]}

plot(z, type = "l", family = "mono")
abline(v = 51, lty = 2, col = "blue")
e59d22269160a8b94ee9afd026e3e0a9.png

进行Perron检验。

得到残差ze

zlag = dplyr::lag(z)
zlag[1] = 0
ze = residuals(lm(z ~ t + DL ))  

plot(ze, type = "l", family = "mono")
lines(e, lty = 2)
e335559f497b05fd630e38ed9adcb175.png

对残差进行自回归:

fit.2 <- lm(ze ~ dplyr::lag(ze))
summary(fit.2)
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.05586    0.10928   0.511     0.61    
## dplyr::lag(ze)  0.80586    0.06135  13.135   <2e-16 ***

a2 = summary(fit.2)$coefficients[2,1] # alpha
b2 = summary(fit.2)$coefficients[2,2] # sd of alpha
(a2-1)/b2
## [1] -3.164269

本例中,计算的t统计量为-3.164269,小于5%显著性水平的临界值-3.76(情况A,比较时取绝对值),因此Perron检验不能拒绝存在单位根的原假设。

推荐阅读

a3c27629561b4b9fd4543a4c33053434.png
ggplot2基础语法系列推文汇总
21316ded3cbb3b50443e7432172fff92.png
胶水函数用法的几个例子
77fc2a293de5946684be3535374b9c1b.png
空间计量经济模型的简单形式在R语言中的实现
06caee99e655001ccb3eeacfa2e6bb7e.png
使用R语言的常用工具包绘制双变量填充地图
5553d647635f5ec3d9bf077cdcb551ea.png
R语言基础绘图系统的拼图功能

037cd6baf196c1e06498d667c9f16126.png
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列分析中的平稳性检验是用来确定一个时间序列是否具有统计稳定性的方法。平稳性检验时间序列分析中扮演着重要的角色,它能够帮助我们选择适当的建模方法。 常见的平稳性检验方法包括以下几种: 1. ADF检验(Augmented Dickey-Fuller test):ADF检验是一种基于统计量的检验方法,用于检验时间序列的单位根是否存在。如果单位根存在,说明时间序列是非平稳的;反之,如果不存在单位根,则说明时间序列是平稳的。 2. KPSS检验(Kwiatkowski-Phillips-Schmidt-Shin test):KPSS检验也是一种基于统计量的检验方法,用于检验时间序列的平稳性。KPSS检验的原假设是时间序列是平稳的,备择假设是时间序列存在单位根。如果检验结果拒绝了原假设,即拒绝了时间序列的平稳性,则说明时间序列是非平稳的。 3. PP检验(Phillips-Perron test):PP检验是另一种基于统计量的平稳性检验方法,其原理与ADF检验相似,用于检验时间序列的单位根是否存在。如果检验结果拒绝了单位根存在的原假设,则说明时间序列是平稳的。 4. 周期图谱检验:周期图谱检验是一种基于谱分析的平稳性检验方法,通过分析时间序列的频谱密度函数,判断时间序列是否呈现出平稳性特征。如果频谱密度函数在不同频率上的幅值变化较小,则说明时间序列是平稳的。 需要注意的是,不同的平稳性检验方法适用于不同的时间序列,并且每种方法都有其特点和限制。因此,在进行时间序列分析时,需要根据具体情况选择适合的平稳性检验方法来确保分析结果的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值