Belo exemplo, onde uma série sem raiz unitária não é estacionária?


18

Vi várias vezes as pessoas rejeitarem o nulo em um teste Dickey-Fuller aumentado e depois afirmarem que elas mostram que suas séries são estacionárias (infelizmente, não posso mostrar as fontes dessas declarações, mas imagino que existam declarações semelhantes aqui e ali em um ou outro diário).

Eu afirmo que é um mal-entendido (que a rejeição do nulo de uma raiz unitária não é necessariamente a mesma coisa que ter uma série estacionária, especialmente porque formas alternativas de não estacionariedade raramente são investigadas ou mesmo consideradas quando esses testes são realizados).

O que eu procuro é:

a) um bom exemplo claro da alegação (posso imaginar um casal agora, mas aposto que alguém que não seja eu terá algo melhor do que o que tenho em mente). Pode ser uma descrição de uma situação específica, talvez com dados (simulados ou reais; ambos têm suas vantagens); ou

b) um argumento convincente por que a rejeição em um Dickey-Fuller aumentado deve ser vista como estabelecendo estacionariedade

(ou mesmo ambos (a) e (b) se você estiver se sentindo inteligente)


3
Xn=(-1)n com probabilidade 1.
cardeal

@ cardinal Bem, isso certamente seria rejeitado pelo teste do ADF (editar: sim, sim), e é claramente não estacionário (uma raiz no círculo unitário, mas não uma raiz igual a 1 que o ADF detecta); então isso conta.
Glen_b -Reinstala Monica

Observe que o teste do ADF possui variantes nas quais a tendência está incluída. Se o nulo for rejeitado, a série será estacionária, ou seja, estacionária se a tendência for removida, mas não estacionária.
mpiktas

+1. Glen_b, uma tendência linear + ruído estacionário de AR (1) contaria como um contra-exemplo?
Ameba diz Reinstate Monica

Respostas:


15

Aqui está um exemplo de uma série não estacionária que nem mesmo um teste de ruído branco pode detectar (muito menos um teste do tipo Dickey-Fuller):

isso não é ruído branco

Sim, isso pode ser surpreendente, mas isso não é ruído branco .

A maioria dos contra-exemplos não estacionários se baseia na violação das duas primeiras condições estacionárias: tendências determinísticas (média não constante) ou raiz unitária / série temporal heteroscedástica (variação não constante). No entanto, você também pode ter processos não estacionários com média e variação constantes, mas eles violam a terceira condição: a função de autocovariância (ACVF) deve ser constante ao longo do tempo e uma função desó.| s - t |cov(xs,xt)|s-t|

A série temporal acima é um exemplo dessa série, que tem média zero, variação de unidade, mas o ACVF depende do tempo. Mais precisamente, o processo acima é um processo MA (1) localmente estacionário com parâmetros que se tornam ruídos brancos espúrios (consulte as referências abaixo): o parâmetro do processo MA Mudanças ao longo do tempoxt=εt+θ1εt-1

θ1(você)=0,5-1você,

onde é o tempo normalizado. A razão pela qual isso se parece com ruído branco (embora, por definição matemática, claramente não seja), é que o tempo que varia no ACVF se integra a zero ao longo do tempo. Como o ACVF de amostra converge para o ACVF médio, isso significa que a autocovariância da amostra (e a autocorrelação (ACF)) convergirão para uma função que se parece com ruído branco. Assim, mesmo um teste de Ljung-Box não será capaz de detectar essa não estacionariedade. O artigo (exoneração de responsabilidade: eu sou o autor) sobre Teste de ruído branco contra alternativas localmente estacionárias propõe uma extensão dos testes Box para lidar com esses processos estacionários localmente.você=t/T

Para obter mais código R e mais detalhes, consulte também esta postagem do blog .

Atualizar após o comentário mpiktas :

É verdade que isso pode parecer um caso teoricamente interessante que não é visto na prática. Concordo que é improvável ver diretamente esse ruído branco espúrio em um conjunto de dados do mundo real, mas você verá isso em quase todos os resíduos de um ajuste de modelo estacionário. Sem entrar em muitos detalhes teóricos, imagine um modelo geral variável no tempo com uma função de covariância variável no tempo . Se você ajustar um modelo constante , essa estimativa será próxima da média de tempo do modelo verdadeiro ; e, naturalmente, os resíduos agora estarão próximos de , que pela construção dey θ ( k , u ) θ θ ( u ) θ ( u ) - θ θθ(você)γθ(k,você)θ^θ(você)θ(você)-θ^θ^será integrado a zero (aproximadamente). Veja Goerg (2012) para detalhes.

Vejamos um exemplo

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

Então ajustamos o ruído fracionário com o parâmetro (uma vez que achamos que está tudo bem e temos um modelo estacionário). Vamos verificar os resíduos: d <0,5d^=0,23d^<0,5

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

série temporal e gráfico acf

Parece bom, certo? Bem, a questão é que os resíduos são ruídos brancos espúrios . Como eu sei? Primeiro, eu posso testar

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

e segundo, sabemos na literatura que os dados do anel das árvores são, de fato, ruído fracionário localmente estacionário: ver Goerg (2012) e Ferreira, Olea e Palma (2013) .

Isso mostra que meu exemplo - reconhecidamente teórico - está realmente ocorrendo na maioria dos exemplos do mundo real.


+1, exemplo muito bom! Estou interessado, porém, existem exemplos da vida real de tais séries?
mpiktas

@mpiktas Adicionei uma atualização ao post que deve responder à sua pergunta.
Georg M. Goerg

Obrigado pelo exemplo. Encontrei alguns erros no seu blog e no artigo de Ferreira et al. Em seu blog, você afirma que , quando na verdade é . Também o ACF de amostra, ou seja, converge para 0, não porque , mas porque , ou seja, deve ser escolhido de acordo com para que a declaração seja mantida. Em Ferreira et al., A definição (4) carece de . γ1(você)=θ(você)σ(você)σ(você-1/T)θ(você)γ^10 01θ(você)dvocê=0 00 01θ(você)σ2(você)dvocê=0 0σ(você)θ(você)εt
Mvctas

Seu exemplo indica que, quando temos um modelo de variação no tempo, o ajuste de um modelo que não seja no tempo levaria a inferência incorreta. Mas isso está longe de dizer que cada série temporal real pode ser modelada com um modelo de variação temporal. Por outro lado, seu teste pode ser aplicado para testar a presença de variação de tempo. Obrigado novamente por uma visão interessante.
Mvctas

@mpiktas obrigado por apontar isso. Corrigi-o no blog também. Nesse caso, aconteceu da mesma maneira, já que é igual ao ponto médio (com ). E pratique: eu não disse que todas as séries temporais podem ser modeladas dessa maneira. Mas, na prática, quando alguém o modela com seu modelo estacionário favorito da ARFIMA, então eles já assumem que ele está nessa classe de família. (modelos estacionários são um subconjunto de probabilidade zero dos modelos estacionários localmente). σ(você)20,5T
68670 Georg Georg Goerg

7

Exemplo 1

Sabe-se que os processos de raiz unitária com um forte componente MA negativo conduzem a testes de ADF com tamanho empírico muito superior ao nominal (por exemplo, Schwert, JBES 1989 ).

Ou seja, se com , as raízes da parte AR e MA quase serão canceladas, de modo que o processo será cancelado. assemelham-se a ruído branco em amostras finitas, levando a muitas rejeições falsas do nulo, pois o processo ainda possui uma raiz unitária (não é estacionária).

Yt=Yt-1+ϵt+θϵt-1,
θ-1

Abaixo está um exemplo para o teste do ADF que você mencionou. [Schwert simula que tamanhos empíricos muito mais extremos poderiam ser gerados com estruturas MA menos extremas se você analisasse a estatística do coeficiente ou o teste de Phillips-Perron, consulte as tabelas 5-10.]T(ρ^-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)

Exemplo 2

Processos com reversão média, mas não estacionários. Por exemplo, pode ser um processo AR (1) com coeficiente de AR menor que um em valor absoluto, mas com um processo de inovação cuja variação muda permanentemente em algum ponto no tempo ("heterocedasticidade incondicional"). O processo então não possui uma raiz de unidade, mas também não é estacionário, pois sua distribuição incondicional muda com o tempo.Yt

Dependendo do tipo de alteração de variação, o teste do ADF ainda será rejeitado com frequência. No meu exemplo abaixo, temos uma quebra de variância descendente, que faz o teste "acreditar" que a série converge, levando a uma rejeição do nulo de uma raiz unitária.

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)

(Além disso, o teste do ADF "perde" sua distribuição nula assintótica essencial na presença de heterocedasticidade incondicional.)


@Glen_b, isso (espero) poderia ser uma resposta para o seu primeiro parágrafo, mas não realmente para o título da sua pergunta - há uma discrepância ou falta de entendimento da minha parte?
Christoph Hanck 5/11

"That" = Exemplo 1
Christoph Hanck 5/11

Depende do que a "raiz da unidade" está definida. Eu o aprendi originalmente como "raiz no círculo unitário" (raiz do módulo 1), mas agora parece ser (e no contexto do teste do ADF se refere a) uma raiz do polinômio característico realmente igual a 1 . Mesmo se eu tiver o senso errado no título, sua resposta responderá à pergunta pretendida, então pense que está tudo bem.
Glen_b -Reinstala Monica 5/11

Meu argumento provavelmente não está claramente formulado: no título, você procura exemplos de séries "sem raiz unitária", enquanto o primeiro parágrafo (para mim) parece procurar exemplos nos quais a rejeição está errada. Meu primeiro exemplo é o último caso, no qual o ADF provavelmente rejeitará, embora o processo tenha uma raiz unitária.
Christoph Hanck 5/11

Ah, desculpe, eu não estava pensando nisso direito. Sim, estritamente não está de acordo com a interpretação do título, mas ainda responde à questão mais ampla do corpo. (Os títulos necessariamente são menos matizados, então isso não é um problema.) ... Eu acho que é uma resposta muito interessante, e se alguma coisa serve ao meu real propósito melhor do que o que o título pede.
Glen_b -Reinstala Monica

7

O teste de raiz unitária é notoriamente difícil. Usar um teste geralmente não é suficiente e você deve ter muito cuidado com as suposições exatas que o teste está usando.

A maneira como o ADF é construído o torna vulnerável a uma série de tendências não lineares simples com ruído branco adicional. Aqui está um exemplo:

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

Aqui temos a tendência exponencial e vemos que o ADF apresenta um desempenho muito ruim. Ele aceita o valor nulo da raiz da unidade em 30% do tempo e o rejeita em 70% do tempo.

Normalmente, o resultado de qualquer análise não é afirmar que a série é estacionária ou não. Se os métodos usados ​​na análise exigem estacionariedade, a suposição errada de que a série é estacionária quando na verdade não é, geralmente se manifesta de uma maneira ou de outra. Então, eu pessoalmente olho para toda a análise, não apenas para a parte do teste de raiz unitária. Por exemplo, o OLS e o NLS funcionam bem para dados não estacionários, onde a não estacionariedade está na média, ou seja, na tendência. Portanto, se alguém afirmar erroneamente que a série é estacionária e aplicar o OLS / NLS, essa afirmação poderá não ser relevante.


1
p>0,05

Ah sim, eu confundi os sinais. Corrigi a resposta de acordo. Obrigado por perceber!
Mvctas

Por que você não usou sapply(oo, "[[","p.value")?
Germcd

Bem, eu usei, apenas com sintaxe de pipe. Eu gosto de canos :)
mpiktas 5/11

1
Eu também gosto do dplyr. Para esse código, é desnecessário, carregar o magrittr é suficiente.
Mvctas
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.