R:增强型迪基富勒 (ADF) 测试

机器算法验证 r 时间序列 单位根 增强的 dickey-fuller
2022-03-07 17:02:30

我对 R 中的单位根检验的 Dickey-Fuller p 值和检验统计量有疑问。我尝试使用函数:

urca::ur.df()
fUnitRoots::adfTest()
tseries::adf.test()

与 gretl 输出相比,它们都显示了相同测试设置(滞后、类型)的不同结果。

例如:

set.seed(1)
x <- rnorm(50, 0, 3)
schwert.param <- trunc(12 * (length(na.omit(x)) / 100) ^ (1 / 4))
adfTest(x = na.omit(x), lags = schwert.param, type = "nc", title = NULL, description = NULL)

# Title:
# Augmented Dickey-Fuller Test
# 
# Test Results:
# PARAMETER:
# Lag Order: 10
# STATISTIC:
# Dickey-Fuller: -2.4362
# P VALUE: 0.01749 

对于 gretl 中的相同向量 x 我得到:

>     Test statistic: tau_nc(1) = -4.03652 
>     Asymptotic p-value = 5.57e-005

两种测试设置都没有常数和趋势,滞后 = 10。所以,为什么我会为相同的数据输入得到不同的结果。我知道,Dickey-Fuller 测试使用蒙特卡洛来获得测试统计的 p 值,但是它们是否会有很大差异,或者我在 R 中对那个函数做错了什么?


@ChristophHanck @GraemeWalsh:好吧,我可能发现这里发生了什么。首先,我将 gretl 语言从波兰语更改为英语,我发现在 ADF 测试窗口中默认检查了一个选项 - “从最大滞后顺序测试”使用 Akaike 信息标准。如果我取消选中该选项,我将获得与 R 中相同的结果。现在我想知道如何在 R 中使用该选项。有人知道该怎么做吗?

1个回答

我没有尝试用 gretl 复制问题,但至少你提到的 R 包似乎都同意,如果指定了确定性(趋势与常数,也就是漂移与无)和滞后(固定、信息标准、启发式)以同样的方式。p 值的计算方式存在差异,但对于x您生成的数据,它们非常相似。

我为我的学生写了下面的概述,如果有人觉得它有用,我可以在这里分享。就个人而言,我主要使用tseriesand CADFtest

  • adf.test()tseries.
    确定性:仅线性趋势。
    滞后:默认情况下是启发式的,但可以由用户选择。
    P 值:来自临界值表。
  • CADFtest()CADFtest.
    确定性:默认趋势、常数(又名漂移)或不支持。
    滞后:默认值为 1,但可以通过信息标准或由用户选择。
    P 值:基于 Costantini 等人的计算。(2007 年)。另见 Lupi (2009)。使用 R. 统计软件杂志进行单位根 CADF 测试,32 (2), 1-19。http://www.jstatsoft.org/v32/i02/
    评论:可以将其他回归量(及其滞后)添加到辅助回归中。
  • ur.df()urca.
    确定性:默认情况下无,也支持常量和趋势。
    滞后:默认为 1,但可以通过信息标准或由用户选择。
    P 值:无,但summary()报告临界值表(1%、5%、10%)。
  • adfTest()fUnitRoots.
    确定性:默认情况下无,也支持常量和趋势。
    滞后:默认为 1,但可由用户选择。
    P 值:来自临界值表。
    评论:基于adf.test()fromtseries但由其他确定性扩展。

对于您生成的数据:

set.seed(1)
x <- rnorm(50, 0, 3)

让我们看看趋势测试的不同结果(因为所有函数都支持这一点)和 10 个滞后(如您上面的启发式所建议的)。检验统计量始终完全相同,并且 p 值接近。

tseries::adf.test(x, k = 10)
## 增强的 Dickey-Fuller 测试
##
## 数据:x
## Dickey-Fuller = -1.6757,滞后阶数 = 10,p 值 = 0.7044
##备择假设:平稳

图书馆(“CADFtest”)
CADFtest(x, max.lag.y = 10, type = "趋势")
## ADF 测试
##
## 数据:x
## ADF(10) = -1.6757,p 值 = 0.743
##备择假设:真实的delta小于0
## 样本估计:
## 增量
## -1.751283

urca::ur.df(x, lags = 10, type = "趋势")
## ################################################ ###############
## # 增强的 Dickey-Fuller 检验单位根 / 协整检验 #
## ################################################ ###############
##
##检验统计量的值为:-1.6757 1.3699 2.0189

fUnitRoots::adfTest(x, lags = 10, type = "ct")
## 标题:
## 增强的 Dickey-Fuller 测试
##
## 测试结果:
## 范围:
## 滞后阶数:10
## 统计:
## 迪基-富勒:-1.6757
## P 值:
## 0.7044
##
## 描述:
## 2015 年 8 月 22 日星期六 20:19:18 用户:zeileis