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;
-1usa a regra l12 de Schwert (1989), trunc(12·(n/100)^(1/4)). Anotadiz 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)); comt_sigo 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çãoouambas; muda a regressão e a tabela de valores críticos junto. - Defasagens — com
fixa, o número usado; comt_sig, o teto da busca.-1(padrão) = regra de Schwert (l4 comfixa, l12 comt_sig);0= nenhuma. - Escolha das defasagens —
fixa(padrão) out_sig.
Exemplo
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ê.