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 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, vou mostrar 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 um modelo preditivo funcionar bem (especialmente da família ARIMA), 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. Isso 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 Nula ( ): A série tem uma raiz unitária (NÃO é estacionária).
- Hipótese Alternativa ( ): A série é estacionária.
- Regra de Decisão: Se o p-valor < 0.05, rejeitamos (a série é estacionária). Caso contrário, ela tem tendência e precisa de tratamento.
Exemplo Prático em Python
Em um estudo recente, rodamos o ADF em diversas métricas usando a biblioteca statsmodels. Veja o código e os resultados reais:
from statsmodels.tsa.stattools import adfuller
def teste_estacionariedade(serie, nome):
resultado = adfuller(serie.dropna())
print(f"Métrica: {nome}")
print(f"Estatística ADF: {resultado}")
print(f"p-valor: {resultado}")
if resultado < 0.05:
print("Resultado: Estacionária (d=0)")
else:
print("Resultado: NÃO Estacionária (Requer d=1)")
print("-" * 30)
# Exemplo de uso com dados reais do nosso dataset
# df_main é o dataframe contendo as séries temporais
teste_estacionariedade(df_main['ticket_medio'], 'Ticket Médio')
teste_estacionariedade(df_main['sessoes'], 'Sessões')
Resultados Obtidos
Ao analisar os resultados e gráficos, encontramos dois cenários que invalidariam qualquer modelo baseado em média simples:
- Ticket Médio (Preço):
- p-valor: 0.76
- Diagnóstico: Extremamente não estacionário. A série tem uma tendência de alta clara e forte. O modelo não pode aprender o valor absoluto (ex.: R$ 1.500), pois amanhã ele será maior.
Estatística ADF: -0.9714409080154276
p-valor: 0.7635375639207811
A série parece ser NÃO-ESTACIONÁRIA (p-valor >= 0.05). Falha ao rejeitar H0.
Indício de presença de Tendência.
- Sessões (Tráfego):
- p-valor: 0.10
- Diagnóstico: Não estacionário (0.10 > 0.05). Há uma tendência de queda no tráfego. Uma média histórica superestimaria o tráfego futuro.
Estatística ADF: -2.552426454254865
p-valor: 0.10323368222873064
A série parece ser NÃO-ESTACIONÁRIA (p-valor >= 0.05). Falha ao rejeitar H0.
Indício de presença de Tendência.
A Solução: Diferenciação no SARIMAX
Uma vez identificado que , a correção técnica obrigatória é a Diferenciação (Integration).
Em vez de modelar o valor absoluto
, modelamos a diferença entre o valor atual e o anterior:
Isso transforma uma série com tendência em uma série estacionária de "variações".
Implementação no SARIMAX
No Python, você não precisa 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.
Baseados nos testes ADF acima, definimos a estratégia de modelagem:
from statsmodels.tsa.statespace.sarimax import SARIMAX
# Para Ticket Médio (Não-Estacionário, p-valor=0.76)
# Usamos d=1. O modelo aprende a taxa de crescimento, não o valor fixo.
model_ticket = SARIMAX(
df_main['ticket_medio'],
order=(1, 1, 1), # (AR, Integração, MA)
seasonal_order=(1, 1, 1, 52) # Sazonalidade anual
)
# Para Transações (Estacionário mas com queda estrutural)
# Mesmo que o ADF indique estacionariedade (p < 0.05),
# forçamos d=1 para capturar a 'inércia' da queda recente,
# evitando reversão à média antiga.
model_transacoes = SARIMAX(
df_main['transacoes'],
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 52)
)
model_fit = model_ticket.fit()
forecast = model_fit.get_forecast(steps=52)
O impacto no negócio:
Ao usar d=1, o modelo entendeu que o Ticket Médio estava subindo cerca de R$ 10,00 por semana e projetou essa continuidade para 2026. Se tivéssemos usado d=0 (ou uma média simples), a projeção teria achatado a curva, subestimando a receita futura e ignorando a inflação de preços interna da loja.
Conclusão
Não confie cegamente na média histórica. Séries temporais de negócios raramente ficam paradas.
- 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 , sua série não é estacionária.
- Use Diferenciação ( ): 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) - Para fundamentos matemáticos de estacionariedade.
- Documentação Statsmodels (Augmented Dickey-Fuller).
- Practical Statistics for Data Scientists (Bruce & Bruce) - Para aplicação prática de conceitos estatísticos em DS.


Top comments (0)