UIVS - Unidade de Inteligência em Vigilância em Saúde
Caio Sain Vallio
Published
11/01/2026
1. Introdução
1.1 Objetivo
Este relatório analisa o desempenho do modelo SARIMA (Seasonal AutoRegressive Integrated Moving Average), que serve como uma alternativa de baseline para o sistema de previsão. O SARIMA modela tanto a autocorrelação serial quanto a sazonalidade da série temporal.
1.2 Metodologia
Modelo: SARIMA
Estratégia: Rolling Replication (Janela deslizante)
Horizontes de Previsão: 4, 6 e 8 semanas
Comparativo: Comparação direta com o modelo Seasonal Naive
Métricas: RMSE, MAE, MAPE, RMSLE, MASE
2. Dados e Preparação
Code
# 1. Carregar dados brutosdf_raw <-load_raw_data()
#> [2026-01-11 14:46:57] INFO: Carregando dados de: /Users/caiosainvallio/ses-sp/forecast_dengue/data/raw/dengue.RData
#> [2026-01-11 14:46:57] INFO: Dados carregados: 248865 linhas, 23 colunas
Code
# 2. Agregar por estadodf_state <-aggregate_state(df_raw)
#> [2026-01-11 14:46:57] INFO: Agregando dados por estado...
#> [2026-01-11 14:46:57] INFO: Dados agregados: 626 semanas
#> [2026-01-11 14:46:57] INFO: ========== INICIO: Preprocessamento ==========
#> [2026-01-11 14:46:57] INFO: Removidas 3 linhas da semana 53
#> [2026-01-11 14:46:57] WARN: Semanas faltantes detectadas: 2
#> [2026-01-11 14:46:57] WARN: ATENCAO: Alvo nao sera imputado (sera mantido como NA)
#> [2026-01-11 14:46:57] INFO: Imputados 8 NAs em mean_temp (fill)
#> [2026-01-11 14:46:57] INFO: Imputados 8 NAs em mean_max_temp (fill)
#> [2026-01-11 14:46:57] INFO: Imputados 8 NAs em mean_min_temp (fill)
#> [2026-01-11 14:46:57] INFO: Imputados 8 NAs em mean_precip (fill)
#> [2026-01-11 14:46:57] INFO: Dados preprocessados: 625 linhas
#> [2026-01-11 14:46:57] INFO: ========== FIM: Preprocessamento ==========
Code
# NOTA: SARIMA puro NÃO precisa de features externas# Modela apenas a própria série temporal (AR + MA + Sazonalidade)# Por isso, NÃO chamamos make_features() aquidf_features <- df # Usar dados preprocessados diretamente# Verificar coluna semanaif (!"semana"%in%names(df_features)) {stop("Erro: Coluna 'semana' não encontrada no dataframe.")}# Visualizar estruturaglimpse(df_features |>select(data_iniSE, est_inc100k, semana, ano))
cat(sprintf("Treinando modelo com dados até: %s\n", last_reliable_date))
#> Treinando modelo com dados até: 2025-12-07
Code
# Treinar com dados confiáveismodel_fit <- model$fit(df_final, list(week_col ="semana"))# Exibir parametros do modelo selecionadoparams <- model$get_params(model_fit)cat("### Especificação do Modelo Final\n")
Leaderboard de Modelos (Melhores Métricas Recentes)
Modelo
RMSE_4w
MAPE_4w
RMSLE_4w
sarima
36.32899
25.12562
0.2929710
seasonal_mean
91.28455
65.00128
1.0641488
seasonal_naive
96.31014
66.14327
0.9683374
8. Conclusão
A comparação com o SNaive ajuda a entender se a complexidade do SARIMA traz benefícios reais.
Note
Modelos SARIMA são poderosos para capturar dinâmicas temporais, mas podem ser computacionalmente custosos para ajustar em backtest extensivo e sensíveis a mudanças estruturais na série que violem a estacionariedade assumida.