Séries temporais referem-se a conjuntos de dados observados em diferentes momentos ao longo do tempo. Ao lidar com séries temporais, é crucial reconhecer que as observações não são independentes entre si, ao contrário das premissas subjacentes a métodos estatísticos convencionais, como a regressão linear. Essas técnicas pressupõem a independência das observações, o que se torna inadequado ao lidar com dados temporais, uma vez que cada observação está correlacionada com aquelas mais próximas no tempo. Por exemplo, uma mudança no valor de uma ação ocorrida ontem pode influenciar o preço dessa ação hoje. Portanto, é essencial considerar a natureza interdependente das observações ao analisar séries temporais. Em resumo, a análise de séries temporais é uma ferramenta crucial em diversas disciplinas, proporcionando insights valiosos para compreender, interpretar e utilizar dados que evoluem ao longo do tempo.
O modelo ARIMA (AutoRegressive Integrated Moving Average) é uma abordagem estatística amplamente utilizada na análise de séries temporais para modelar e prever padrões temporais. Ele é composto por três componentes principais: AutoRegressivo (AR), Integrado (I) e Médias Móveis (MA).
Para a implementação efetiva do modelo ARIMA, é crucial compreender os termos “p”, “d” e “q”, pois o ajuste do modelo será influenciado por essas variáveis. As definições desses termos são as seguintes:
Conforme o objeto de estudo, ou seja, a natureza específica da série temporal, o modelo ARIMA pode ser designado como SARIMA. A inclusão da letra “S” ocorre quando há presença de sazonalidade na série.
As formulações são as seguintes:
\[ ARIMA(p,q,d) \]
\[ SARIMA(p,q,d)(P,Q,D)x \]
A diferenciação entre letras maiúsculas e minúsculas está relacionada exclusivamente à presença de sazonalidade no modelo. Enquanto as letras minúsculas referem-se às componentes não sazonais, as letras maiúsculas representam as componentes sazonais. O entendimento dessa terminologia é essencial para a condução de análises e, principalmente, para previsões temporais.
Para realizarmos ajustes do modelo ARIMA no ambiente R, utilizaremos
o pacote forecast. O pacote é uma ferramenta robusta para
análise e previsão de séries temporais, ele oferece uma variedade de
funções e métodos para explorar dados temporais, ajustar modelos e
realizar previsões
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
Os dados AirPassengers são um conjunto clássico de
séries temporais frequentemente utilizadas em análises e modelagens
estatísticas. Esses dados representam o número mensal de passageiros de
uma companhia aérea dos EUA, no período de janeiro de 1949 a dezembro de
1960. A série temporal mostra uma tendência crescente ao longo do tempo,
além de um padrão sazonal evidente.
data("AirPassengers")
plot.ts(AirPassengers)
A autocorrelação e a autocorrelação parcial são conceitos estatísticos utilizados para analisar a dependência serial em uma série temporal. Vamos entender cada um desses termos:
A autocorrelação mede a correlação entre os valores de uma série temporal e os seus próprios valores passados em diferentes defasagens (lags). Em outras palavras, a autocorrelação verifica se há uma relação linear entre os valores observados em diferentes momentos no tempo.
A função de autocorrelação (ACF) é frequentemente usada para visualizar essa correlação em diferentes defasagens. Se a autocorrelação for significativa em uma determinada defasagem, isso pode indicar padrões ou sazonalidades na série temporal.
forecast::Acf(AirPassengers)
A autocorrelação parcial é uma extensão da autocorrelação que tenta isolar as relações diretas entre os valores em diferentes defasagens, eliminando a influência das defasagens intermediárias. Em outras palavras, a PACF mede a correlação entre os valores em duas defasagens, controlando as correlações em todas as defasagens intermediárias.
A função de autocorrelação parcial (PACF) é útil para identificar os lags significativos que contribuem para a estrutura de dependência serial em uma série temporal. Ajuda a determinar o número de defasagens a serem incluídas em modelos de séries temporais, como modelos AR (autoregressivos).
forecast::Pacf(AirPassengers)
Na busca por uma modelagem adequada de séries temporais, a análise das funções de autocorrelação (ACF) e autocorrelação parcial (PACF) desempenha um papel crucial. Estes gráficos revelam padrões de dependência serial, indicando a necessidade de diferenciação (d), ordem de autoregressão (p), e componente de médias móveis (q) para estabelecer um modelo apropriado.
Observando os gráficos, linhas tracejadas azuis delimitam os intervalos de confiança, e ultrapassagens destes limites sinalizam lags significativos. Para facilitar a determinação do número de diferenciações, as funções ndiffs() e nsdiffs() são valiosas, revelando a quantidade necessária para estabilizar a estacionariedade e variância da série.
Entretanto, a precisão na determinação dos parâmetros pode ser
desafiadora, sujeita a erros e variações. A métrica de qualidade do
modelo, como AIC e BIC, torna-se
crucial. O pacote forecast() oferece a ferramenta
auto.arima(), que busca automatizar esse processo,
permitindo uma abordagem mais eficaz e objetiva na escolha dos
parâmetros do modelo de séries temporais.
Como mencionado anteriormente, a função auto.arima()
desempenha um papel fundamental na exploração de modelos para séries
temporais. Esta função realiza uma busca sistemática e automatizada
pelos modelos potenciais derivados da série temporal, com o objetivo de
identificar o ajuste ideal.
Com o intuito de facilitar a comparação entre diferentes modelos,
procedemos ao ajuste da série temporal AirPassengers
utilizando apenas uma parte dos dados. Essa abordagem permite uma
análise mais focada e a avaliação do desempenho do modelo em condições
específicas da série temporal, onde será dividida a série em um conjunto
de treino e outro de teste.
mod_treino <- ts(AirPassengers[1:120])
mod_teste <- ts(AirPassengers[121:144])
mod <- auto.arima(mod_treino, stepwise = FALSE)
Observando os atributos do modelo temos:
mod
## Series: mod_treino
## ARIMA(2,1,2) with drift
##
## Coefficients:
## ar1 ar2 ma1 ma2 drift
## 1.6431 -0.9066 -1.8743 0.9688 2.1761
## s.e. 0.0371 0.0361 0.0572 0.0595 0.7107
##
## sigma^2 = 488.2: log likelihood = -537.51
## AIC=1087.03 AICc=1087.78 BIC=1103.7
Podemos notar que foi ajustado um modelo ARIMA(2,1,2), devido à ausência de componentes sazonais na nossa série.
Podemos ver a acurácia do modelo:
accuracy(mod$fitted, mod_treino)
## ME RMSE MAE MPE MAPE ACF1 Theil's U
## Test set 0.3246097 21.53481 17.21691 -0.5203958 7.005998 0.08174572 0.8001771
Tendo estabelecido os termos fundamentais da acurácia, como o Erro Quadrático Médio (RMSE), o Erro Médio Absoluto (MAE) e o Erro Percentual Médio (MAPE), agora avançaremos para a fase de previsão. Nos próximos 24 períodos, o modelo será desafiado a antecipar os valores futuros da série temporal.
Esta etapa permitirá uma avaliação prática e visual da acurácia do modelo, fornecendo insights valiosos sobre sua capacidade de generalização e precisão em prever os próximos pontos na série temporal. A comparação entre as previsões e os valores reais destacará a eficácia do modelo para lidar com a dinâmica temporal subjacente aos dados.
library(DT)
previsao <- forecast(mod, h = 24,level = 95)
# Converter os resultados da previsão em um data frame
dados_previsao <- data.frame(
Tempo = seq(1, 24),
Previsao = round(as.numeric(previsao$mean),2),
Limite_Inferior = round(as.numeric(previsao$lower),2),
Limite_Superior = round(as.numeric(previsao$upper),2)
)
# Criar a tabela interativa usando DT
datatable(dados_previsao,
options = list(pageLength = 10),
rownames = FALSE,
colnames = c("Tempo", "Previsao", "Limite Inferior", "Limite Superior"))
Graficamente:
library(ggplot2)
autoplot(previsao) + labs(x = "Tempo", y = "Passageiros", title = "Previsao") +
theme_update() +
theme(panel.background = element_blank())+
geom_vline(xintercept = 120, lty = "dashed")
Verificação da acurácia da previsão com a amostra teste:
accuracy(mod_teste, as.numeric(previsao$mean))
## ME RMSE MAE MPE MAPE
## Test set -37.34932 67.58919 46.91646 -8.559127 10.94617
Com base na avaliação da acurácia, fica evidente que o modelo ARIMA não é isento de falhas. No entanto, é importante ressaltar que sua eficácia está intrinsecamente ligada à qualidade do ajuste aos dados disponíveis. Em cenários nos quais o modelo é adequadamente sintonizado e ajustado à complexidade subjacente da série temporal, o ARIMA se revela uma ferramenta poderosa para a análise e previsão de padrões temporais.