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.
# Carregando a série temporal 'Nile'
data("Nile")
serie <- Nile
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
# A série já está no formato ts (time series)
class(serie)
## [1] "ts"
plot(serie, main = "Série Temporal - Vazão do Rio Nilo", ylab = "Vazão", xlab = "Ano")
library(TTR)
media_movel <- SMA(serie, n = 5) # 5 anos
plot(media_movel, main = "Média Móvel (5 anos)", col = "blue")
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)
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.
qqnorm(serie)
qqline(serie)
shapiro.test(as.numeric(serie))
##
## Shapiro-Wilk normality test
##
## data: as.numeric(serie)
## W = 0.97343, p-value = 0.04072
# 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
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")
acf(diff_serie, main = "Autocorrelação")
pacf(diff_serie, main = "Autocorrelação Parcial")
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)
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.