Previsão com modelos ARIMA

Feb 21 2023
em R com o pacote TSA ARIMA ARIMA -> Média móvel integrada autorregressiva O benefício de usar modelos ARIMA sobre regressão linear, suavização exponencial, holt-winters etc... é que os modelos ARIMA podem reduzir uma série não estacionária a uma série estacionária usando uma sequência de passos diferenciais. Para fazer inferências estatísticas ou previsões de processos aleatórios com base em registros observados, é muito importante que a suposição de estacionaridade seja atendida.

em R com o pacote TSA

Foto de Jordi Fernandez no Unsplash

ARIMA

ARIMA -> Média móvel integrada autorregressiva

O benefício de usar modelos ARIMA sobre regressão linear, suavização exponencial, holt-winters etc. é que os modelos ARIMA podem reduzir uma série não estacionária a uma série estacionária usando uma sequência de etapas de diferenciação .

Para fazer inferências estatísticas ou previsões de processos aleatórios com base em registros observados, é muito importante que a suposição de estacionaridade seja atendida.

O que é uma série estacionária ?

A ideia básica da estacionariedade é que a probabilidade de comportamentos do processo não muda com o tempo, e espera-se que o processo esteja em equilíbrio estatístico .

Um processo {Yt} é considerado estritamente estacionário se a distribuição conjunta de Yt1,Yt2,… Ytn é a mesma que a distribuição conjunta de Yt1 — k Yt2 — k,…, Ytn — k para todas as escolhas de pontos de tempo t1, t2,…, tn e todas as opções de intervalo de tempo k.

Algumas definições

  • {Yt} é um processo de séries temporais de observações ao longo do tempo, t =1, t =2, t…
  • Uma distribuição conjunta de Yt1,Yt2,… refere-se aos deslocamentos de tempo nos processos de séries temporais que se relacionarão com períodos de tempo de t(1-k), t(2-k), …
  • intervalo de tempo k refere-se ao intervalo de tempo e é conhecido como intervalo de tempo.
  • stationary — Qualquer série temporal sem uma média constante ao longo do tempo é não estacionária

Diferenciando?

Os valores da série temporal original são subtraídos dos valores da série temporal deslocados por um determinado número de períodos de tempo. Essa transformação remove a tendência e a sazonalidade dos dados, deixando apenas o componente estacionário aleatório.

Vejamos um exemplo:

library(tidyverse)
library(broom)
library(forecast)
library(scales)

data <- read.delim("C:/Data/oilspills.txt")

data %>% head()

      
                

data.ts <- ts(data$TotalSpills,freq=12,start=c(1970,1))
plot(data.ts, type='o',cex=0.5, main = "Time series plot", col = "steelblue")

      
                

Podemos verificar gráficos de autocorrelação e autocorrelação parcial

par(mfrow = c(1,2))
acf(data.ts,main = "Autocorrealtion plot")
pacf(data.ts,main = "")
title(main = "Partial autocorrelation plot")

      
                

As barras verticais no gráfico ACF mostram autocorrelação significativa porque estão acima da linha tracejada azul.

Aplicarei a diferenciação com a função diff()

diff=diff(data.ts)
plot(diff, ylab='Difference of internet users', type='b',cex=0.5, col = "darkcyan")
title(main = "Differenced time-series")

      
                

Precisamos encontrar a ordem do nosso modelo ARIMA?

O objetivo da seleção do modelo é encontrar o modelo ARIMA que melhor se ajusta aos dados da série temporal.

p,d,q -> ARIMA (p,d,q) -> ARIMA (AR,d,MA)

Existem alguns métodos diferentes para selecionar os valores pdq para um modelo ARIMA:

  • Inspeção dos gráficos ACF e PACF: Os gráficos ACF e PACF podem ser usados ​​para identificar a ordem dos componentes autorregressivos (AR) e de média móvel (MA) no modelo. O atraso no qual o gráfico ACF ou PACF “corta” pode sugerir a ordem dos respectivos componentes.
  • Seleção automatizada de modelos: auto.arima(). Esta função usa uma abordagem para estimar o melhor modelo com base no valor AIC.
  • Ferramentas de diagnóstico: gráfico EACF
  • O operador de retrocesso (1 — phi * B) * (1 — B)² = (1 + teta * B)

Existem vários métodos que podem obter esses valores, mas é importante observar que a seleção do modelo não é um processo único. A adequação do modelo selecionado deve ser avaliada por meio de testes de diagnóstico e visualizações.

Podemos usar um gráfico eacf (função de correlação automática estendida), que é uma ferramenta gráfica usada para ajudar a determinar a ordem de um modelo ARIMA.

eacf(diff)

      
                

Parece que este modelo pode ser um modelo AR = 1 e MA = 0.

O gráfico EACF é apenas uma ferramenta para determinar a ordem apropriada de um modelo ARIMA, e a inspeção visual, bem como testes estatísticos, também devem ser empregados para encontrar a ordem do modelo.

Vamos criar o primeiro modelo:

arima1 <- arima(data.ts, order=c(1,0,0))
arima1

  • parcela residual
  • Shapiro Wilks
  • Gráfico de QQ normal

parcela residual

plot(arima1$res,xlab='Time',ylab='Residuals',main='')
abline(h=0,col='red')

      
                

shapiro.test(arima1$res)

      
                

Neste caso os resíduos do modelo ARIMA não são normalmente distribuídos.

Gráfico de QQ normal

qqnorm(arima1$res)
qqline(arima1$res)

      
                

Vou tentar outro modelo:

Posso executar auto.arima , isso pode ajudar!

auto.arima(data.ts)

      
                
arima2 <-arima(x = diff, order = c(1, 1, 0))

shapiro.test(arima2$res)

      
                

qqnorm(arima2$res)
qqline(arima2$res)

      
                

resíduos

plot(arima2$res,xlab='Time',ylab='Residuals',main='Arima2 model')
abline(h=0,col='red')

      
                

Vamos prever com o modelo arima2:

pred <- predict(arima2,n.ahead=5)
pred

      
                

Conclusão

Uma grande parte da modelagem arima nos preocupa em encontrar a transformação correta que os dados precisam. Neste exemplo, tivemos que diferenciar os dados porque o gráfico ACF mostrou sinais claros do requisito. Há casos em que os dados podem precisar de uma transformação de log, mas o conceito importante a ser lembrado é que precisamos fazer alguns testes estatísticos. Precisamos olhar para as parcelas e determinar o que parece melhor.

O gráfico EACF não é de forma alguma um gráfico fácil de ler, auto.arima parece muito mais simples. Observar os gráficos de resíduos também é muito importante e, no caso da modelagem arima, ter uma série temporal estacionária em que leis de probabilidade semelhantes regem o processo ao longo do tempo é um princípio fundamental. Depois de criarmos a estacionariedade por diferenciação, registro ou ambos, podemos ajustar o modelo apropriado e criar algumas previsões!

Espero que você tenha gostado do artigo e tenha achado útil.

Siga-me para mais artigos sobre R, Julia, Python e estatística aplicada!