Estacionariedade em séries temporais

Uma série temporal estacionária tem média constante, variância constante e autocorrelações que dependem apenas da defasagem, não do tempo. A maioria dos modelos de séries temporais assume estacionariedade. Detectar e corrigir a não estacionariedade é o primeiro passo essencial antes de ajustar modelos AR, MA, ARIMA ou qualquer outro.

Definição formal

Uma série temporal \(\{y_t\}\) é fracamente estacionária (ou estacionária em covariância) se:

\[E[y_t] = \mu \quad \forall t \qquad \text{(média constante)}\] \[\text{Var}(y_t) = \sigma^2 < \infty \quad \forall t \qquad \text{(variância constante)}\] \[\text{Cov}(y_t, y_{t+k}) = \gamma(k) \quad \forall t \qquad \text{(autocovariância que depende apenas da defasagem } k \text{)}\]

A estacionariedade estrita exige que toda a distribuição conjunta de \((y_t, y_{t+1}, \ldots, y_{t+k})\) seja invariante a deslocamentos no tempo. Para fins práticos, a estacionariedade fraca é suficiente.

Uma série que não é estacionária é chamada de não estacionária ou integrada. A forma mais comum de não estacionariedade em dados econômicos e financeiros é a raiz unitária: uma tendência estocástica que faz a série vagar sem reverter à média.

Quatro painéis mostrando exemplos de séries temporais estacionárias e não estacionárias

A série estacionária (verde) flutua em torno de uma média constante. O passeio aleatório (vermelho) deriva sem limite. A série com tendência (laranja) tem uma média crescente. A série heterocedástica (azul) tem variância que muda na metade da amostra.

Raízes unitárias e passeios aleatórios

A fonte mais importante de não estacionariedade na prática é a raiz unitária. Um processo AR(1):

\[y_t = \phi y_{t-1} + \varepsilon_t\]

é estacionário quando \(|\phi| < 1\) (a série reverte à sua média). Quando \(\phi = 1\), ele se torna um passeio aleatório:

\[y_t = y_{t-1} + \varepsilon_t \implies y_t = y_0 + \sum_{s=1}^t \varepsilon_s\]

A variância de um passeio aleatório cresce sem limite: \(\text{Var}(y_t) = t\sigma^2\). Os choques são permanentes: eles nunca se dissipam. É por isso que testar se \(\phi = 1\) (uma raiz unitária) é central na análise de séries temporais.

Testando a estacionariedade

Teste de Dickey-Fuller Aumentado (ADF)

Para a regressão completa, um exemplo resolvido e como ele difere da função rápida adf.test(), veja o post dedicado ao teste de Dickey-Fuller.

Testa \(H_0\): a série tem uma raiz unitária (não estacionária) contra \(H_1\): a série é estacionária. O teste ajusta a regressão:

\[\Delta y_t = \alpha + \beta t + \gamma y_{t-1} + \sum_{j=1}^p \delta_j \Delta y_{t-j} + \varepsilon_t\]

e testa \(H_0: \gamma = 0\) (presença de raiz unitária). Rejeita-se \(H_0\) se a estatística \(t\) para \(\gamma\) for suficientemente negativa (os valores críticos não são padrão, não vêm da distribuição normal).

O número de defasagens \(p\) é escolhido para remover a autocorrelação dos resíduos (normalmente por AIC ou BIC).

Teste KPSS (Kwiatkowski-Phillips-Schmidt-Shin)

Testa o oposto: \(H_0\): a série é estacionária contra \(H_1\): a série tem uma raiz unitária. Valores grandes da estatística KPSS rejeitam a estacionariedade.

⚠️ ADF e KPSS têm hipóteses nulas opostas, não os confunda

O erro mais comum: tratar os dois testes como se testassem a mesma coisa.

  • ADF: \(H_0\) = raiz unitária (não estacionária). Um p-valor alto significa que você não rejeita a não estacionariedade. Um p-valor baixo significa que você rejeita a raiz unitária, apoiando a estacionariedade.
  • KPSS: \(H_0\) = estacionariedade. Um p-valor alto significa que você não rejeita a estacionariedade. Um p-valor baixo significa que você rejeita a estacionariedade.

Interpretar “p-valor do ADF = 0,60, portanto a série é estacionária” está errado. Um p-valor de 0,60 significa que você não rejeitou a raiz unitária, ou seja, não há evidência contra a não estacionariedade.

Use os dois testes juntos. Se o ADF rejeita a raiz unitária E o KPSS não rejeita a estacionariedade: evidência forte de estacionariedade. Se eles não concordam: investigue mais.

Teste de Phillips-Perron (PP)

Uma alternativa não paramétrica ao ADF. Mesma \(H_0\) (raiz unitária), mas usa uma correção diferente para a autocorrelação dos resíduos em vez de adicionar diferenças defasadas. Tende a ser mais robusto à heterocedasticidade.

Gráfico de barras comparando os p-valores dos testes ADF e KPSS para uma série estacionária e uma não estacionária

Para o AR(1) estacionário: o ADF rejeita a raiz unitária (vermelho, \(p < 0,05\)) e o KPSS não rejeita a estacionariedade (azul, \(p > 0,05\)). Os dois concordam: estacionária. Para o passeio aleatório: o ADF não rejeita a raiz unitária (azul) e o KPSS rejeita a estacionariedade (vermelho). Os dois concordam: não estacionária.

Transformações para alcançar estacionariedade

Diferenciação

O remédio padrão para uma raiz unitária. A primeira diferença remove uma tendência estocástica linear:

\[\Delta y_t = y_t - y_{t-1}\]

Uma série que se torna estacionária após \(d\) diferenciações é chamada de integrada de ordem \(d\), denotada \(I(d)\). A maioria das séries econômicas é \(I(1)\): uma diferenciação é suficiente.

Transformação logarítmica

Estabiliza a variância que cresce proporcionalmente ao nível (comum em preços, PIB, vendas). \(\log(y_t)\) converte a sazonalidade multiplicativa em aditiva e torna a série mais simétrica.

Transformação Box-Cox

Uma família de transformações de potência parametrizada por \(\lambda\):

\[y_t^{(\lambda)} = \begin{cases} (y_t^\lambda - 1)/\lambda & \lambda \neq 0 \\ \log(y_t) & \lambda = 0 \end{cases}\]

O \(\lambda\) ótimo é estimado a partir dos dados. \(\lambda = 1\) significa nenhuma transformação; \(\lambda = 0\) é o log; \(\lambda = 0{,}5\) é a raiz quadrada.

Três painéis mostrando a série do PIB em níveis, em log, e na primeira diferença do log para alcançar estacionariedade

O PIB em níveis (vermelho) é não estacionário com variância crescente. Após o log (laranja), a variância se estabiliza, mas a tendência permanece. Após diferenciar o log(PIB) uma vez (verde), a série se torna estacionária: ela representa a taxa de crescimento do PIB, flutuando em torno de uma média constante.

Quantas diferenças são necessárias?

Aplique o teste ADF após cada etapa de diferenciação até que a estacionariedade seja alcançada. Para a maioria das séries econômicas, \(d=1\) é suficiente. A diferenciação excessiva (aplicar mais diferenças do que o necessário) torna a série mais difícil de modelar e deve ser evitada.

Uma regra prática: se o teste ADF na série original não rejeita a raiz unitária, diferencie uma vez e teste novamente. Se o ADF em \(\Delta y_t\) rejeita a raiz unitária, \(d=1\) é adequado.

💡 Testes de estacionariedade em R

library(tseries)

# ADF test (H0: unit root)
adf.test(y)
adf.test(diff(y))   # after first differencing

# KPSS test (H0: stationary)
kpss.test(y)

# Phillips-Perron test (H0: unit root)
pp.test(y)

# Automatic differencing order selection
library(forecast)
ndiffs(y)     # number of regular differences needed
nsdiffs(y)    # number of seasonal differences needed