Introdução

O estudo de séries temporais é uma área fundamental da estatística e da ciência de dados, permitindo a análise de informações coletadas ao longo do tempo para identificar padrões, tendências e realizar previsões. Neste trabalho, foi utilizada a série temporal Nile, que representa a vazão anual do Rio Nilo entre os anos de 1871 e 1970.

A proposta deste projeto é aplicar as principais etapas da modelagem preditiva em séries temporais: desde o pré-processamento dos dados até a construção de modelos preditivos, com destaque para o modelo ARIMA e suas variações. As análises envolvem a decomposição da série, verificação de normalidade e estacionariedade, utilização de médias móveis, transformação logarítmica e aplicação dos testes estatísticos adequados. Ao final, busca-se realizar a previsão da série, proporcionando uma visão prática e aplicada do uso de técnicas estatísticas para dados temporais.

1. Escolha da Série Temporal

# Carregando a série temporal 'Nile'
data("Nile")
serie <- Nile

2. Pré-processamento dos dados

summary(serie)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   456.0   798.5   893.5   919.4  1032.5  1370.0
start(serie)
## [1] 1871    1
end(serie)
## [1] 1970    1
frequency(serie)
## [1] 1

3. Criar a série temporal (já está em ts)

# A série já está no formato ts (time series)
class(serie)
## [1] "ts"

4. Gráfico da Série Estudada

plot(serie, main = "Série Temporal - Vazão do Rio Nilo", ylab = "Vazão", xlab = "Ano")

5. Gráfico da Média Móvel

library(TTR)
media_movel <- SMA(serie, n = 5)  # 5 anos
plot(media_movel, main = "Média Móvel (5 anos)", col = "blue")

6. Série e Média Móvel no mesmo gráfico

plot(serie, main = "Série com Média Móvel", col = "black")
lines(media_movel, col = "red", lwd = 2)
legend("topright", legend = c("Original", "Média Móvel"), col = c("black", "red"), lty = 1)

7. Decomposição da Série

A série “Nile” possui frequência anual, o que inviabiliza sua decomposição tradicional com a função decompose(), que exige séries com periodicidade (como mensal ou trimestral). Portanto, essa etapa será omitida neste caso específico.

8. Verificar Normalidade (QQ Plot e Teste de Shapiro-Wilk)

qqnorm(serie)
qqline(serie)

shapiro.test(as.numeric(serie))
## 
##  Shapiro-Wilk normality test
## 
## data:  as.numeric(serie)
## W = 0.97343, p-value = 0.04072

9. Transformações da Série (log e Box-Cox)

# Log
log_serie <- log(serie)
plot(log_serie, main = "Transformação Log da Série")

# Verificação de normalidade pós-transformação
qqnorm(log_serie)
qqline(log_serie)

shapiro.test(as.numeric(log_serie))
## 
##  Shapiro-Wilk normality test
## 
## data:  as.numeric(log_serie)
## W = 0.9745, p-value = 0.04934

10. Verificar Estacionariedade com Teste KPSS

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
kpss.test(log_serie)
## Warning in kpss.test(log_serie): p-value smaller than printed p-value
## 
##  KPSS Test for Level Stationarity
## 
## data:  log_serie
## KPSS Level = 0.89653, Truncation lag parameter = 4, p-value = 0.01
# Se não for estacionária, diferenciar
diff_serie <- diff(log_serie)
plot(diff_serie, main = "Série Log Diferenciada")

11. ACF e PACF

acf(diff_serie, main = "Autocorrelação")

pacf(diff_serie, main = "Autocorrelação Parcial")

12. Previsão usando modelo ARIMA

library(forecast)
modelo <- auto.arima(log_serie)
summary(modelo)
## Series: log_serie 
## ARIMA(1,1,1) 
## 
## Coefficients:
##          ar1      ma1
##       0.2361  -0.8776
## s.e.  0.1182   0.0588
## 
## sigma^2 = 0.02577:  log likelihood = 41.09
## AIC=-76.19   AICc=-75.93   BIC=-68.4
## 
## Training set error measures:
##                      ME      RMSE       MAE        MPE    MAPE      MASE
## Training set -0.0176434 0.1581193 0.1217483 -0.3074677 1.80296 0.8153104
##                     ACF1
## Training set -0.03581262
# Previsão para 10 anos
previsao <- forecast(modelo, h = 10)
plot(previsao)

Conclusão

A análise da série temporal Nile, que representa a vazão anual do Rio Nilo ao longo de um século, permitiu explorar conceitos fundamentais da modelagem preditiva em dados temporais. Mesmo sendo uma série com frequência anual e, portanto, sem componente sazonal detectável, foi possível aplicar técnicas como suavização por média móvel, transformações logarítmicas, testes de normalidade e estacionariedade, além de análise dos gráficos de autocorrelação.

A partir dessas etapas, foi construído um modelo ARIMA adequado para a série, permitindo realizar previsões com base nas características identificadas nos dados históricos. Embora não tenha sido possível realizar a decomposição tradicional devido à ausência de periodicidade, a análise demonstrou que mesmo séries simples podem fornecer informações relevantes e servir como base para modelagens robustas.

O exercício reforça a importância de entender a estrutura da série antes de aplicar métodos estatísticos, além de mostrar como o R pode ser uma ferramenta poderosa na condução de análises temporais. Essa prática contribui para o desenvolvimento da capacidade analítica e da interpretação de fenômenos ao longo do tempo, competências essenciais em projetos de ciência de dados.