Coleção series-temporais

Zivot-Andrews

Zivot-Andrews: raiz unitária, com a quebra achada pelo próprio teste?

O que o bloco faz

Testa se a série tem RAIZ UNITÁRIA admitindo que ela possa ter sofrido uma QUEBRA ESTRUTURAL — e achando a data da quebra sozinho.

Por que este bloco existe

É a resposta a um viés dos vizinhos, e é o motivo de a dissertação trazer o teste. O series/adf e o series/phillips_perron tendem a NÃO REJEITAR quando a série tem quebra estrutural (MARGARIDO, 2001): uma série que é estacionária em torno de uma média que DESLOCOU no meio do caminho se parece muito com um passeio aleatório para os dois, e eles não rejeitam a raiz unitária.

Então a leitura prática é esta: quando o series/adf não rejeita numa série em que você desconfia de uma ruptura, este é o bloco que confere se a quebra era a explicação.

Medido, numa série de 120 observações feita de 60 pontos em torno de zero e 60 em torno de seis — estacionária dos dois lados, com um degrau no meio:

bloco                     estatística   decisão a 5%   conclusão
series/adf                     -1.57    não rejeita    não há evidência contra a raiz unitária
series/zivot_andrews          -14.21    rejeita        estacionária, quebra na obs. 60

O ADF erra a pergunta inteira; este acha o degrau na observação exata em que ele foi posto.

A quebra é ESTIMADA, não informada

Não existe parâmetro de data, e é de propósito: o teste percorre os cortes entre 15% e 85% da série, ajusta a regressão em cada um e fica com aquele que MAIS favorece a estacionariedade. A data sai como resultado, não como entrada — é o que separa este teste de um ADF com dummy escrita à mão.

A janela segue o teste publicado por Zivot e Andrews, de onde vem a tabela de valores críticos, e não o urca, que varre todos os cortes. Sem ela a quebra apontada às vezes cai na ponta da série, com um trecho de uma observação só, e essa data não se lê como quebra de nada. Aparar não muda de forma sensível o quanto o teste rejeita: ela conserta a data, não o excesso de rejeição da série curta descrito mais abaixo.

A contrapartida é que, escolhendo o corte mais favorável entre muitos, ele precisa de valores críticos bem mais severos que os do ADF. São os da tabela abaixo, e é por isso que um t de -4.5 que rejeitaria no ADF não rejeita aqui.

A leitura é invertida

Como no ADF, H0 é a RAIZ UNITÁRIA, e sem quebra — a quebra só entra na alternativa (eq. 3.35 a 3.37 da dissertação): rejeitar é concluir ESTACIONÁRIA (em torno de um nível que quebrou). A cauda é a de BAIXO — o t bem negativo é o que derruba H0.

E não rejeitar aqui diz MAIS do que não rejeitar no ADF: a explicação alternativa mais comum, a quebra, já foi dada de graça à série e mesmo assim não bastou. Por isso a conclusão sai escrita “mesmo admitindo uma quebra”.

Cada modelo tem a SUA tabela

O que você declara em O que quebra não muda só a regressão: muda os valores críticos junto. São três tabelas diferentes, e o bloco lê a do modelo que rodou.

o que quebra        1%      5%     10%     equação
nível            -5.34   -4.80   -4.58     3.35
inclinação       -4.93   -4.42   -4.11     3.36
nível e inclinação -5.57  -5.08   -4.82     3.37

A Tabela 3.2 da dissertação publica só a última linha, que é a do modelo completo — o default daqui. Escolha nível para um degrau (a série pula e segue no mesmo ritmo), inclinação para uma virada de tendência (a série muda de inclinação sem pular), ambas quando não souber ou quando as duas coisas mudarem. No exemplo do degrau acima, inclinação sai com t de -2.68 e NÃO rejeita: o modelo errado não enxerga a quebra certa.

O que sai

A estatística t, a tabela de valores críticos a 10%, 5% e 1% e a conclusão em palavras; a posição da quebra e o rótulo do período vão nas colunas extras. O urca publica só a tabela, então o p_valor sai em branco — interpolar um p-valor a partir dela seria inventar precisão que o pacote não dá. A decisão a 5% vem do valor crítico.

Defasagens: quantas diferenças defasadas entram na regressão, e como se chega ao número — é o que limpa a autocorrelação do erro, e a tabela de críticos supõe que ela foi limpa.

  • Escolha das defasagens = fixa (padrão desde a versão 4) — o número vale como foi dado, sem busca. Defasagens = -1 (padrão) usa a regra l4 de Schwert (1989), trunc(4·(n/100)^(1/4)) — 2 defasagens com 30 observações, 3 com 50, 4 com 100 —, limitada ao que a série comporta; 0 é zero defasagens.
  • t_sig — a regra do artigo: do geral para o específico (Perron, 1989; Zivot & Andrews, 1992), EM CADA CORTE. Para cada data candidata, parte do teto e, enquanto o t da ÚLTIMA diferença defasada não for significativo a 10% (|t| < 1.645), tira uma; o t da raiz unitária daquele corte é o da regressão com o número que sobrou, e o teste é o menor t entre os cortes. Defasagens é o teto; -1 usa a regra l12 de Schwert (1989), trunc(12·(n/100)^(1/4)). A nota diz quantas ficaram no corte vencedor e qual foi o teto.

Por que o padrão deixou de ser a regra do artigo (versão 4): a busca em cada corte escolhe, entre muitos k, o que mais favorece a rejeição, e o nível em amostra finita sai muito acima do nominal. Medido sob passeio aleatório (modelo de nível, 1000 réplicas por tamanho; erro de Monte Carlo perto de 1 ponto), rejeição a 5%:

n     t_sig (teto l12)   fixa l12      fixa l4 (padrão)
30        29.3%          12.0% (k=8)    8.0% (k=2)
50        19.8%           5.3% (k=10)   6.9% (k=3)
100       14.6%           5.6% (k=12)   6.2% (k=4)

A l4 é a que menos erra na série curta; a l12 fica mais perto do nominal a partir de 50 observações, mas com 30 gasta oito defasagens e rejeita 12%. Com t_sig e menos de 100 observações a nota avisa; com fixa e menos de 40, também, porque nem a l4 chega aos 5% ali.

Um teto (ou número fixo) grande demais para uma série curta deixa a regressão da quebra sem graus de liberdade, e nesse caso o bloco recusa dizendo qual é o máximo — sem isso o urca morreria com um erro cru do R.

Com k = 8 fixo, no PNB de Nelson e Plosser (1909-1970, em log, urca::nporg), modelo de nível, o bloco dá t = -5.576 (real) e -5.824 (nominal), quebra em 1929 — iguais ao urca::ur.za, e aos -5.58 e -5.82 citados de Zivot e Andrews (1992), que não foram conferidos no PDF do artigo.

Precisa de série, e de série que chegue

O bloco pede pelo menos 20 observações, e o piso é mais alto que os 12 dos irmãos de categoria porque este teste gasta mais: a dummy da quebra (duas, no modelo completo) sai dos mesmos graus de liberdade, e ainda se escolhe o melhor entre n - 1 cortes.

O número foi medido. Sob passeio aleatório — onde H0 é VERDADEIRA e toda rejeição é erro — o teste rejeita a 5% em 68% das amostras com n = 11, 24% com n = 14, 18% com n = 18, contra 14% com n = 20. Abaixo de vinte o bloco devolveria “estacionária com quebra” para série com raiz unitária de verdade na maioria das vezes.

O excesso não acaba em vinte, só deixa de ser catastrófico: a taxa fica em torno de 10% a 14% até n = 30, e mesmo depois não chega aos 5% nominais: medido no modelo completo, fica em torno de 7% a 10% com n = 40 e perto de 7% com n = 100. Entre vinte e quarenta, onde o excesso é maior, a nota do teste avisa, e um “rejeita H0” apertado aí pede confirmação — de preferência olhando a série no series/plot, para ver se a quebra que ele apontou existe.

Faltantes

Este bloco não aceita faltantes: série com buraco põe o nó em vermelho. Ligue um series/interpolate antes, ou recorte a parte cheia com series/window.

Antes de continuar

Termos que esta página usa, em poucas palavras. As definições completas estão no glossário.

Hipótese nula
A afirmação que o teste põe à prova, em geral a de que não há efeito ou diferença (médias iguais, ausência de tendência). O teste mede o quanto os dados são incompatíveis com ela; não rejeitá-la não prova que ela é verdadeira.
p-valor
A probabilidade de obter um resultado tão extremo quanto o observado, ou mais, se a hipótese nula fosse verdadeira. p-valor pequeno indica dados pouco compatíveis com a hipótese nula; ele não é a probabilidade de a hipótese nula ser verdadeira nem mede o tamanho do efeito.
Autocorrelação
A correlação de uma série com ela mesma deslocada no tempo: o valor de hoje parecido com o de ontem. É o padrão que os modelos de séries descrevem, e o que torna inválidos os testes que supõem observações independentes.
Estacionariedade
Uma série é estacionária quando média, variância e autocorrelação não mudam ao longo do tempo. Muitos modelos (como o ARIMA) a supõem; séries com tendência costumam ser diferenciadas até ficarem estacionárias.
Tendência
O movimento de longo prazo de uma série, de subida ou de descida, separado das oscilações de curto prazo e da sazonalidade.

Quando usar

Teste raiz unitária permitindo uma quebra estrutural única cuja posição é estimada pelo próprio procedimento. Compare a hipótese de quebra com evidências históricas e gráficas.

Pressupostos

  • Há no máximo uma quebra, do tipo escolhido em O que quebra (nível, inclinação ou ambas). Duas quebras, ou o tipo errado, e o teste não a enxerga.

    Verificar:Série no tempoPettitt

    Se falhar: Na dúvida, ambas. Testes com duas quebras ainda sem bloco no trama.

  • A quebra está longe das pontas (entre 15% e 85% da série), e sob H0 a série tem raiz unitária sem quebra.

    Verificar:Série no tempo

  • As defasagens bastam para deixar o erro da regressão sem autocorrelação. Com fixa (padrão) vale o número dado, e -1 é a regra l4 de Schwert (1989), trunc(4·(n/100)^(1/4)); com t_sig o número é escolhido do geral para o específico em cada corte, como no artigo, mas rejeita bem acima do nominal abaixo de 100 observações (medido: 29% a 5% com n = 30).

    Verificar:Autocorrelação parcial (PACF)

    Se falhar: Suba o número em Defasagens (o bloco diz o máximo que cabe).

  • Série de pelo menos 20 observações, e de preferência 40 ou mais: abaixo disso o teste rejeita mais que o nível nominal.

Configuração

  • O que quebra — nível, inclinação ou ambas; muda a regressão e a tabela de valores críticos junto.
  • Defasagens — com fixa, o número usado; com t_sig, o teto da busca. -1 (padrão) = regra de Schwert (l4 com fixa, l12 com t_sig); 0 = nenhuma.
  • Escolha das defasagens — fixa (padrão) ou t_sig.

Exemplo

Série de exemplo
Zivot-Andrews
ADF
library(trama)

reg <- tr_registry()
tr_use("trama.series", registry = reg)

tr_flow(reg) |>
  tr_add("nilo", "series/example", dataset = "Nile") |>
  tr_add("za", "series/zivot_andrews", from = "nilo") |>
  tr_add("adf", "series/adf", from = "nilo")

Como interpretar

Um teste (data/test), com a posição da quebra e o rótulo do período em colunas extras. Ligado numa entrada de tabela, ele vira UMA linha de relatório: um data/bind_rows põe este e o series/adf lado a lado, que é como a diferença entre os dois se lê.