一个很好的例子,其中没有单位根的序列是非平稳的?


18

我已经看过好几次人们在增强Dickey-Fuller检验中拒绝空值,然后声称它表明他们的序列是平稳的(不幸的是,我无法显示这些声明的来源,但是我想类似的声明在这里和那里都存在。一本或另一本日记)。

我认为这是一种误解(拒绝单位根的零点不一定与拥有平稳序列相同,尤其是因为进行此类测试时很少研究甚至不考虑非平稳性的替代形式)。

我想要的是:

a)一个很好的明显反例(我现在可以想象一对夫妇,但我敢打赌,除了我以外的人会比我的想法更好)。它可能是对特定情况的描述,也许带有数据(模拟的或真实的;两者都有其优势);要么

b)一个令人信服的论点,为什么应将增强迪基-富勒中的拒绝视为建立平稳性

(如果感觉很聪明,甚至(a)和(b)都可以)


3
Xn=(1)ñ以概率1
基数

@cardinal好吧,那肯定会被ADF测试拒绝(编辑:是的,确实如此),而且显然是不稳定的(单位圆上的根,但不是ADF检测到的等于1的根);这样就算了
Glen_b-恢复莫妮卡

请注意,ADF测试具有包含趋势的变量。如果零值被拒绝,则该序列是趋势平稳的,即,如果趋势被删除,则该序列是平稳的,但是仍然不是平稳的。
mpiktas 2015年

+1。Glen_b,是否可以将线性趋势+平稳AR(1)噪声算作反例?
变形虫说莫妮卡(Monica)恢复职权

Answers:


15

这是一个非平稳序列的示例,即使白噪声测试也无法检测到该序列(更不用说Dickey-Fuller类型测试)了:

这不是白噪声

是的,这可能令人惊讶,但这不是白噪声

大多数非平稳的反例都基于对平稳的前两个条件的违反:确定性趋势(非恒定均值)或单位根/异方差时间序列(非恒定方差)。但是,您也可以使用具有均值和方差恒定的非平稳过程,但它们违反了第三个条件:自协方差函数(ACVF)应该随时间恒定,并且|的函数为|。s t | 只要。cov(xs,xt)|st|

上面的时间序列是此类序列的示例,其均值为零,单位方差,但ACVF取决于时间。更确切地,上述过程是局部固定的MA(1)与参数的处理,使得它成为杂散白噪声(见下面参考文献):将MA过程的参数变化过时间xt=εt+θ1εt1个

θ1个ü=0.5-1个ü

其中是归一化时间。之所以看起来像白噪声(即使从数学定义上来看显然不是),是因为随时间变化的ACVF随时间累计为零。由于样本ACVF收敛于平均ACVF,因此这意味着样本自协方差(和自相关(ACF))将收敛于看起来像白噪声的函数。因此,即使是Ljung-Box测试也无法检测到这种非平稳性。关于针对本地静止的替代方案测试白噪声的论文(免责声明:我是作者)提出了Box测试的扩展,以处理此类本地静止的过程。ü=Ť/Ť

有关更多R代码和更多详细信息,请参见此博客文章

mpiktas评论后更新

的确,这看起来像是一个理论上有趣的案例,在实践中没有看到。我同意不太可能在现实世界的数据集中直接看到这样的杂散白噪声,但是您会在固定模型拟合的几乎所有残差中看到这一点。没有考虑太多细节理论,试想一下,一般随时间变化的模型 与随时间变化的协方差函数γ θķ ü 。如果您符合恒定模式θ,则这个估计将接近真实模型的时间平均θ ü ; 自然,残差现在将接近θüγθķüθ^θü,其通过结构的 θ将出集成到零(大约)。详见Goerg(2012)。θü-θ^θ^

让我们看一个例子

library(fracdiff)
library(data.table)

tree.ring <- ts(fread(file.path(data.path, "tree-rings.txt"))[, V1])
layout(matrix(1:4, ncol = 2))
plot(tree.ring)
acf(tree.ring)
mod.arfima <- fracdiff(tree.ring)
mod.arfima$d


## [1] 0.236507

因此,我们适应分数噪声参数d = 0.23(因为d < 0.5我们认为一切都很好,我们有一个固定的模型)。让我们检查残差:d^=0.23d^<0.5

arfima.res <- diffseries(tree.ring, mod.arfima$d)
plot(arfima.res)
acf(arfima.res)

时间序列和acf图

看起来不错吧?好吧,问题在于残留物是虚假的白噪声。我怎么知道?首先,我可以测试一下

Box.test(arfima.res, type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  arfima.res
## X-squared = 1.8757, df = 1, p-value = 0.1708

Box.test.ls(arfima.res, K = 4, type = "Ljung-Box")
## 
##  LS Ljung-Box test; Number of windows = 4; non-overlapping window
##  size = 497
## 
## data:  arfima.res
## X-squared = 39.361, df = 4, p-value = 5.867e-08

其次,我们从文献中知道树环数据实际上是局部平稳的分数噪声:请参阅Goerg(2012)Ferreira,Olea和Palma(2013)

这表明,我-诚然-理论上看起来很好的例子,实际上是在大多数现实世界中的例子中发生的。


+1,很好的例子!我很感兴趣,尽管有这样的系列的现实生活中的例子吗?
mpiktas,2016年

@mpiktas我在帖子中添加了更新,应该可以回答您的问题。
Georg M. Goerg'3

γ1个ü=θüσüσü-1个/Ťθüγ^1个01个θüdü=001个θüσ2üdü=0σüθüεŤ

您给出的示例说,当我们具有时变模型时,拟合非时变模型将导致错误的推断。但这并不是说每个实时序列都可以使用时变模型来建模。另一方面,您的测试可用于测试时变的存在。再次感谢您提供有趣的见解。
mpiktas

σü20.5Ť

7

例子1

已知具有强烈的MA负值的单位根过程会导致ADF测试的经验大小远高于标称值(例如Schwert,JBES 1989)。

ÿŤ=ÿŤ-1个+ϵŤ+θϵŤ-1个
θ-1个

Ťρ^-1个

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  y <- cumsum(arima.sim(n = n, list(ma = -0.98)))
  rejections[i] <- (summary(ur.df(y, type = "drift", selectlags="Fixed",lags=12*(n/100)^.25))@teststat[1] < -2.89)
}
mean(rejections)

例子2

ÿŤ

根据方差变化的类型,ADF测试仍然会经常拒绝。在下面的示例中,我们有一个向下的方差突破,这使测试“相信”该级数收敛,导致拒绝了单位根的零值。

library(urca)
reps <- 1000
n <- 100
rejections <- matrix(NA,nrow=reps)

for (i in 1:reps){
  u_1 <- rnorm(n/2,sd=5)
  u_2 <- rnorm(n/2,sd=1)
  u <- c(u_1,u_2)
  y <- arima.sim(n=n,list(ar = 0.8),innov=u)
  rejections[i] <- (summary(ur.df(y, type = "drift"))@teststat[1] < -2.89)      
}
mean(rejections)

(顺便说一句,ADF测试在存在无条件异方差的情况下“失去”了其关键的渐近零分布。)


@Glen_b,(我希望)可能是您的第一段的答案,但实际上不是您问题标题的答案-我是否存在差异或缺乏理解?
Christoph Hanck

“那个” =示例1
Christoph Hanck

这取决于定义为什么“单位根”。我最初将其学习为“单位圆上的根”(模数1的根),但现在看来(实际上在1中与ADF测试有关)是特征多项式的根。即使标题上的意思有误,您的答案也会回答您所要解决的问题,因此请不要紧。
Glen_b-恢复莫妮卡

我的观点可能没有明确表述:在标题中,您查找的是“无单位根”系列的示例,而第一段(对我而言)听起来像是在查找拒绝是错误的示例。我的第一个例子是后一种情况,尽管该过程确实具有单位根,但ADF可能会拒绝。
克里斯多夫·汉克

啊,对不起,我没有正确考虑。是的,严格来说,这与标题的解释都不相符,但它仍然可以回答体内的更广泛问题。(标题一定没有那么细微的差别,所以这不是问题。)...我认为这是一个非常有趣的答案,是否有任何东西比标题所要求的更能满足我的实际目的。
Glen_b-恢复莫妮卡

7

单位根测试非常困难。通常仅使用一项测试是不够的,并且您必须非常小心测试所使用的确切假设。

ADF的构造方式使其容易受到一系列简单的非线性趋势和附加白噪声的影响。这是一个例子:

library(dplyr)
library(tseries)
set.seed(1000)
oo <- 1:1000  %>% lapply(function(n)adf.test(exp(seq(0, 2, by = 0.01)) + rnorm(201)))
pp <- oo %>% sapply("[[","p.value")

> sum(pp < 0.05)
[1] 680

在这里,我们有指数趋势,并且看到ADF的效果很差。它在30%的时间内接受单位根的null,而在70%的时间内拒绝它。

通常,任何分析的结果都不是说该系列是平稳的。如果分析中使用的方法需要平稳性,那么错误的假设是该序列实际上是平稳的,而实际上却不是静止的,通常会以某种方式体现出来。因此,我个人着眼于整个分析,而不仅仅是单元根测试部分。例如,OLS和NLS可以很好地用于非平稳数据,其中非平稳是平均值,即趋势。因此,如果有人错误地声称该系列是固定的并应用OLS / NLS,则此声明可能不相关。


1
(+1),不仅如此,还提供了一种巧妙的方法来避免模拟中的循环!总体结论并不重要,但是:在1000个接受中似乎有320个(p>0.05),不是吗?
Christoph Hanck

嗯,是的,我弄糊涂了。我据此确定了答案。感谢您的关注!
mpiktas 2015年

你为什么不使用sapply(oo, "[[","p.value")
发出胚芽

好吧,我仅在管道语法中使用了它。我喜欢烟斗:)
mpiktas 2015年

1
我也喜欢dplyr。对于此代码,没有必要,加载magrittr就足够了。
mpiktas 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.