Estacionariedade: Por que a Média Histórica é Perigosa para suas Projeções
Source: Dev.to
Resumo
Neste artigo, exploramos o conceito de estacionariedade em séries temporais, como utilizar o teste Augmented Dickey‑Fuller (ADF) para diagnosticar tendências estocásticas e como configurar o parâmetro de integração (d) no SARIMAX para evitar o viés da média global.
Introdução
No mundo dos negócios, existe uma forte atração pela “média”. Quando um time de stakeholders pede uma projeção para 2026, o instinto inicial de muitos analistas é calcular a média de 2024/2025 e projetá‑la à frente.
Se você trabalha com séries temporais financeiras ou de e‑commerce, essa abordagem geralmente está errada.
O motivo é a estacionariedade. Se uma métrica possui uma tendência forte (seja de alta ou queda), sua média e variância não são constantes ao longo do tempo. Projetar uma média global em uma série com tendência resulta em erros grosseiros de previsão.
Neste post, mostro como diagnosticamos esse problema em dados de e‑commerce usando o teste Augmented Dickey‑Fuller (ADF) e como corrigimos isso matematicamente no modelo SARIMAX.
O Conceito: Raiz Unitária e Estacionariedade
Para que um modelo preditivo da família ARIMA funcione bem, a série precisa ser, idealmente, estacionária.
O que é estacionariedade?
Uma série é estacionária quando suas propriedades estatísticas — média, variância e autocorrelação — são constantes ao longo do tempo. Ela oscila em torno de um valor fixo.
O problema da raiz unitária
Muitas métricas de negócio (como Receita ou Preço) possuem o que chamamos de raiz unitária. Simplificando, isso significa que a série tem uma memória forte: o valor de hoje depende fortemente do valor de ontem, mais um choque aleatório. Essa dependência cria uma tendência estocástica que faz a série “driftar” (derivar) para longe da média histórica.
Se você tentar forçar uma média fixa em uma série com raiz unitária, seu modelo estará sempre “correndo atrás” da tendência, errando sistematicamente.
O Diagnóstico: Teste Augmented Dickey‑Fuller (ADF)
Não confiamos apenas no “olhômetro”. Para validar se uma série é estacionária, usamos o teste ADF.
Como interpretar o teste
| Hipótese | Descrição |
|---|---|
| (H_0) | A série tem uma raiz unitária (NÃO é estacionária). |
| (H_1) | A série é estacionária. |
Regra de decisão: se o p‑valor > 0.05, não rejeitamos (H_0) (a série não é estacionária). Se o p‑valor ≤ 0.05, rejeitamos (H_0) (a série é estacionária).
Exemplo de saída do teste:
Estatística ADF: -2.552426
p‑valor: 0.103234
[Image: Sessões – gráfico da série]
A Solução: Diferenciação no SARIMAX
Uma vez identificado que p‑valor > 0.05, a correção técnica obrigatória é a diferenciação (integração).
Em vez de modelar o valor absoluto (Y_t), modelamos a diferença entre o valor atual e o anterior:
[ \Delta Y_t = Y_t - Y_{t-1} ]
Isso transforma uma série com tendência em uma série estacionária de “variações”.
Implementação no SARIMAX
No Python, não é necessário criar a coluna de diferença manualmente. O algoritmo SARIMAX possui o parâmetro order=(p, d, q), onde d é a ordem de integração.
Com base nos testes ADF acima, definimos a estratégia de modelagem:
from statsmodels.tsa.statespace.sarimax import SARIMAX
# Ticket Médio (não estacionário, p‑valor = 0.76) → d = 1
model_ticket = SARIMAX(
df_main['ticket_medio'],
order=(1, 1, 1), # (p, d, q) – aqui d=1
seasonal_order=(0, 0, 0, 0),
enforce_stationarity=False,
enforce_invertibility=False
)
result_ticket = model_ticket.fit(disp=False)
print(result_ticket.summary())
Obs.: Ajuste os valores de
peq(e, se necessário,seasonal_order) de acordo com a análise de autocorrelação e autocorrelação parcial (ACF/PACF).
Conclusão
- Estacionariedade é um pré‑requisito essencial para modelos da família ARIMA.
- O teste ADF permite diagnosticar rapidamente se a série possui raiz unitária.
- Quando a série não é estacionária, a diferenciação (definindo
d > 0no SARIMAX) converte a série em algo que o modelo pode aprender de forma robusta.
Aplicando esse fluxo em métricas de e‑commerce, evitamos o viés da média global e construímos previsões mais confiáveis para o futuro.
model_ticket = SARIMAX(
df_main['ticket_medio'],
order=(1, 1, 1), # (AR, Integração, MA)
seasonal_order=(1, 1, 1, 52) # Sazonalidade anual
)
- Rode o teste ADF: é a maneira estatisticamente robusta de verificar se sua métrica está “presa” a uma média ou se está derivando.
- Olhe o p‑valor: se p > 0.05, sua série não é estacionária.
- Use diferenciação (
d=1): configure seu modelo ARIMA/SARIMAX para projetar a variação, capturando a tendência real.
Fazer ciência de dados aplicada é garantir que a matemática do modelo reflita a realidade econômica do negócio. Ignorar a não‑estacionariedade é planejar o futuro olhando para uma foto estática do passado.
Referências e Bibliografia
- Introduction to Time Series and Forecasting (Brockwell & Davis) – fundamentos matemáticos de estacionariedade.
- Documentação Statsmodels – Augmented Dickey‑Fuller.
- Practical Statistics for Data Scientists (Bruce & Bruce) – aplicação prática de conceitos estatísticos em DS.