Aula 3: Previsão e Validação

Como avaliar modelos e evitar armadilhas

Objetivos de Aprendizagem

  • Calcular métricas de erro de previsão (RMSE, MAE, MAPE, MASE)
  • Implementar validação cruzada temporal corretamente
  • Comparar modelos usando métricas apropriadas
  • Avaliar cenários de falha e quebra estrutural

Por que Avaliar Previsões?

Um modelo pode ter resíduos “bonitos” no período de treino e ser péssimo no teste. Isso acontece porque o modelo pode ter memorizado padrões do passado (overfitting) em vez de capturar a estrutura genuína da série. Métricas de erro calculadas em dados fora da amostra (out-of-sample) são a única forma confiável de medir capacidade preditiva.

DicaPrincípio Fundamental

A qualidade de um modelo de previsão é medida pela sua performance em dados que ele nunca viu, não pela qualidade do ajuste nos dados de treino.

Métricas de Erro de Previsão

Suponha que temos \(h\) previsões \(\hat{y}_{T+1}, \hat{y}_{T+2}, \ldots, \hat{y}_{T+h}\) e os valores realizados correspondentes \(y_{T+1}, \ldots, y_{T+h}\). O erro de previsão é \(e_{T+i} = y_{T+i} - \hat{y}_{T+i}\).

MAE — Mean Absolute Error \[\text{MAE} = \frac{1}{h} \sum_{i=1}^{h} |e_{T+i}|\]

RMSE — Root Mean Squared Error \[\text{RMSE} = \sqrt{\frac{1}{h} \sum_{i=1}^{h} e_{T+i}^2}\]

MAPE — Mean Absolute Percentage Error \[\text{MAPE} = \frac{100}{h} \sum_{i=1}^{h} \left|\frac{e_{T+i}}{y_{T+i}}\right|\]

MASE — Mean Absolute Scaled Error \[\text{MASE} = \frac{\text{MAE}}{\frac{1}{T-1}\sum_{t=2}^{T}|y_t - y_{t-1}|}\]

Quando usar cada métrica?

Métrica Escala Ponto forte Cuidado
MAE Mesma da série Interpretação direta, robusta a outliers Não penaliza erros grandes
RMSE Mesma da série Penaliza erros grandes (importante em risco!) Sensível a outliers
MAPE Percentual Fácil de comunicar (“erro de 5%”) Explode quando \(y_t \approx 0\)
MASE Adimensional Comparável entre séries diferentes Requer definição do benchmark naïve

Conectando métricas a decisões de negócio

A escolha da métrica não é técnica — é uma decisão de negócio que reflete o custo dos erros:

Cenários corporativos e suas métricas

Cenário Métrica recomendada Por quê
Planejamento de estoque (varejo) MAE Erros simétricos; cada unidade a mais ou a menos tem custo similar
Gestão de risco financeiro RMSE Erros grandes (caudas) têm custo desproporcional — uma perda de 10x é muito pior que 10 perdas de 1x
Relatório para diretoria MAPE Executivos entendem “erramos 5% na previsão de receita”
Comparação entre filiais (escalas diferentes) MASE Filial A fatura R$ 10M e filial B fatura R$ 100M — o MASE permite comparar modelos sem viés de escala
Demanda de energia (pode ser zero à noite) MAE ou RMSE MAPE é inviável quando demanda real pode ser zero (divisão por zero)

Regra prática: pergunte “qual o custo de errar para cima vs. para baixo?”. Se o custo é simétrico, use MAE. Se erros grandes são catastróficos, use RMSE. Se precisa comunicar a não-técnicos, use MAPE (com cuidado).

AvisoCuidado com o MAPE

O MAPE divide pelo valor observado. Se sua série tem valores próximos de zero (como retornos financeiros, que flutuam em torno de zero), o MAPE será extremamente instável ou infinito. Para séries financeiras, prefira MAE, RMSE ou MASE.

Simulador interativo: impacto de outliers nas métricas

Veja como um único erro grande afeta cada métrica de forma diferente:

DicaExperimente!
  • Com outlier = 0, RMSE e MAE são próximos (razão ≈ 1.1–1.3 para erros normais)
  • Aumente o outlier para 30 ou 50: o RMSE cresce muito mais que o MAE
  • Isso mostra que o RMSE é mais sensível a erros extremos — importante quando erros grandes têm consequências graves (ex: gestão de risco)

Validação Cruzada Temporal

Por que não podemos fazer k-fold convencional?

Em séries temporais, a ordem importa. Se embaralharmos os dados como no k-fold tradicional, o modelo pode ser treinado com dados de 2024 e testado com dados de 2022 — ele estaria literalmente “vendo o futuro”. Isso é chamado de data leakage e produz métricas otimistas que não se sustentam na prática.

A solução é a validação cruzada temporal (time series cross-validation), onde o conjunto de treino sempre precede o conjunto de teste:

Expanding Window vs. Sliding Window

Método Treino Vantagem Desvantagem
Expanding Cresce a cada split Usa todos os dados disponíveis Pesos iguais para dados antigos e recentes
Sliding Janela fixa que desliza Mais adaptado a mudanças recentes Descarta dados antigos que podem ser úteis
DicaQuando usar cada método?
  • Expanding: quando o processo gerador é relativamente estável ao longo do tempo (ex: séries macroeconômicas)
  • Sliding: quando há suspeita de quebra estrutural ou mudança de regime (ex: séries financeiras pós-COVID)

Previsão com Intervalos de Confiança

Uma boa previsão não é apenas um número — é uma distribuição. O intervalo de confiança quantifica a incerteza da previsão.

Intervalo de previsão (caso gaussiano) \[\hat{y}_{T+h} \pm z_{\alpha/2} \cdot \hat{\sigma}_h\]

onde \(\hat{\sigma}_h\) é o erro padrão da previsão \(h\) passos à frente. Note que:

  • O intervalo se abre conforme \(h\) cresce (previsões mais distantes são mais incertas)
  • Para modelos ARIMA, \(\hat{\sigma}_h\) pode ser calculado analiticamente
  • Para modelos mais complexos, usamos bootstrap ou simulação

Prophet: Uma Abordagem Diferente

O que é o Prophet?

Desenvolvido pelo Meta (Facebook) em 2017, o Prophet é um modelo aditivo que decompõe a série em componentes interpretáveis. Não é baseado em ARIMA — é uma abordagem de engenharia pragmática que funciona bem para séries com:

  • Sazonalidade múltipla (diária + semanal + anual)
  • Feriados e eventos especiais
  • Tendência com possíveis pontos de mudança (changepoints)

Modelo Prophet \[y(t) = g(t) + s(t) + h(t) + \varepsilon_t\]

Componente Descrição Como é modelado
\(g(t)\) Tendência Linear ou logística com changepoints
\(s(t)\) Sazonalidade Séries de Fourier
\(h(t)\) Feriados/eventos Indicadores binários com janela
\(\varepsilon_t\) Erro Distribuição normal

Changepoints: detectando mudanças de tendência

Uma das features mais poderosas do Prophet é a detecção automática de changepoints — momentos em que a tendência muda de direção ou velocidade. Isso é especialmente útil para séries que passaram por eventos disruptivos (COVID, crises, lançamento de produtos).

ARIMA vs. Prophet: Quando usar cada um?

Critério ARIMA Prophet
Fundamentação Teoria estatística sólida (Box-Jenkins) Engenharia pragmática (decomposição)
Sazonalidade múltipla Difícil (SARIMA cobre apenas uma) Nativo (diária + semanal + anual)
Feriados Não nativo (requer dummies manuais) Nativo (calendário configurável)
Interpretabilidade Parâmetros \(\phi\), \(\theta\), \(d\) Componentes visuais intuitivos
Amostras pequenas Melhor (menos parâmetros) Pior (precisa de mais dados)
Automatização auto_arima / AutoARIMA Poucos hiperparâmetros
Séries financeiras Preferível (fundamentação teórica) Menos adequado (sem volatilidade condicional)
ImportanteProphet não é bala de prata

O Prophet foi desenhado para previsão de métricas de negócio (vendas, tráfego web, demanda) com forte sazonalidade e feriados. Para séries financeiras, modelos ARIMA + GARCH geralmente são mais adequados, pois capturam a dinâmica de volatilidade que o Prophet ignora.

Quebra Estrutural: Quando o Mundo Muda

Uma quebra estrutural ocorre quando o processo gerador dos dados muda fundamentalmente. Exemplos:

  • Pandemia COVID-19 (março 2020)
  • Mudança de política monetária
  • Fusão/aquisição de empresas
  • Mudança regulatória

Quando há quebra estrutural, modelos treinados no período “antigo” podem ser inúteis para o período “novo”. Estratégias:

  1. Usar apenas dados pós-quebra (se houver observações suficientes)
  2. Incluir variáveis dummy para o período de transição
  3. Modelos com changepoints (Prophet faz isso nativamente)
  4. Monitorar performance continuamente e retreinar quando necessário

Caso: Previsão de Receita Trimestral

Uma empresa de varejo precisa prever receita para os próximos 4 trimestres para planejamento orçamentário. A série tem:

  • Tendência de crescimento
  • Sazonalidade forte (Natal, Dia das Mães)
  • Efeito COVID em 2020 (queda brusca seguida de recuperação)

Qual modelo você usaria? Discuta com seu grupo considerando:

  1. O efeito COVID é uma quebra estrutural — deve-se incluir ou excluir esse período?
  2. A sazonalidade é forte e previsível — isso favorece Prophet ou ARIMA?
  3. Qual o custo de uma previsão muito otimista vs. muito pessimista para o planejamento?

Quizzes: Teste seu Entendimento

sobreposição entre treino e teste: os dados de 2020–2021 estão dentro do período de treino (2015–2023). O modelo foi avaliado com dados que ele já “viu”, o que é data leakage. A métrica de teste será otimista e não refletirá a capacidade preditiva real. O correto seria treinar até 2019 e testar em 2020–2021, ou usar validação cruzada temporal com splits que respeitem a ordem cronológica.

O MAPE divide cada erro pelo valor observado: \(|e_t / y_t|\). Se o modelo A erra pouco em valores grandes mas erra em valores pequenos (próximos de zero), esses erros “pequenos em absoluto” geram MAPE alto. Já o MAE olha apenas \(|e_t|\). Exemplo: modelo B erra R$ 10 quando \(y = 200\) (MAPE = 5%) e R$ 5 quando \(y = 50\) (MAPE = 10%). O MAE de B é menor (R$ 7.5), mas o MAPE é inflado pela observação de valor pequeno. Conclusão: nunca confie em uma única métrica — analise MAE, RMSE e MAPE conjuntamente.

Overfitting: o modelo se ajustou demais aos dados de treino, capturando ruído em vez de sinal. Possíveis causas: (a) ordens \(p\) e \(q\) muito altas; (b) amostra de treino muito pequena; (c) quebra estrutural entre treino e teste. Ações: (1) use critérios de informação (AICc, BIC) para selecionar ordens mais parcimoniosas; (2) verifique se há mudança de regime no período de teste; (3) use validação cruzada temporal em vez de um único split treino/teste.

Prophet. O SARIMA padrão captura apenas uma sazonalidade (o parâmetro \(m\)). Para ter sazonalidade semanal (\(m=7\)) e mensal (\(m \approx 30\)), seria necessário um modelo SARIMA com dupla sazonalidade, que é computacionalmente custoso e instável. O Prophet modela sazonalidade usando séries de Fourier, permitindo múltiplos períodos sazonais simultaneamente de forma natural. Alternativa: usar statsforecast com modelos que suportam múltiplas sazonalidades (ex: MSTL + ARIMA).

MASE > 1 significa que seu modelo é pior que o naïve de referência (random walk: \(\hat{y}_{t+1} = y_t\)). Isso é preocupante — sugere que o modelo está adicionando complexidade sem melhorar a previsão. Possíveis causas: overfitting, especificação errada, ou a série é genuinamente difícil de prever além do naïve. MASE < 1 indica que o modelo supera o naïve; MASE = 0.5 significa que o erro é metade do naïve.

Para Saber Mais

  • Hyndman, R.J. & Athanasopoulos, G. (2021). Forecasting: Principles and Practice, 3rd ed. Cap. 5: The Forecaster’s Toolbox
  • Taylor, S.J. & Letham, B. (2018). Forecasting at Scale. The American Statistician.
  • Tashman, L.J. (2000). Out-of-Sample Tests of Forecasting Accuracy: An Analysis and Review. International Journal of Forecasting.
De volta ao topo