Estatística

Aula

Modelos de Regressão com o Tempo: ARIMA e Séries Temporais

, editado , Comment regular icon0 comments

Nesta aula, exploraremos como modelar e prever séries temporais usando ARIMA, incluindo conceitos fundamentais, seleção de parâmetros e avaliação de desempenho. Veremos também exercícios práticos com dados temporais para aplicar os conceitos aprendidos.

Writer image

revisado por Leon

Edit Article

O ARIMA (AutoRegressive Integrated Moving Average) é um modelo estatístico amplamente utilizado para análise e previsão de séries temporais. Ele combina três componentes principais:

- AR (AutoRegressivo): Dependência dos valores passados.

- I (Integrado): Diferenciação para tornar a série estacionária.

- MA (Média Móvel): Dependência dos erros passados.

Assim, ARIMA acaba criar um arcabouço para lidar com séries temporais muito melhor que uma regressão linear simples. Vamos explicar o que é ARIMA e depois comparar com uma regressão linear simples para entender por que ela é melhor quando lidamos com o tempo.

Componentes do Modelo ARIMA

1. AR(p) – AutoRegressivo de Ordem p

Ad

Séries AutoRegressivas são aquelas que dependem dos próprios valores passados, geralmente estamos falando de número populacional ou preço de produtos, inflação no geral. Em uma população o número de indivíduos cresce no tempo, e conforme mais indivíduos, mais é possível crescer. Preço de produto depende do valor do ano passado mais a inflação no ano e repare que a inflação é uma percentagem do valor antigo do produto.

Modela \( Y_t \) como uma combinação linear de seus valores passados:

\[ Y_t = c + \phi_1 Y_{t-1} + \phi_2 Y_{t-2} + \dots + \phi_p Y_{t-p} + \epsilon_t \]

Sendo p o número de lags usados.

2. I(d) – Integração de Ordem d

Número de diferenciações necessárias para tornar a série estacionária, isto é, sem tendência de crescimento ou queda.

Uma série temporal é considerada estacionária quando suas propriedades estatísticas (como média, variância e autocorrelação) não mudam ao longo do tempo. Isso é crucial para modelos como ARIMA, que assumem estacionariedade para fazer previsões confiáveis. Utilize do Teste de Dickey-Fuller Aumentado para verificar estacionariedade. Esse teste será visto mais na frente, aqui farão no olho.

Olhe para a série a seguir e repare que trabalhar com a diferença entre os valores no tempo mantém a série com média constante:

Ad

Mês (t)Vendas (Yₜ)1ª Diferença (∇Yₜ)
1100
2120120 - 100 = 20
3130130 - 120 = 10
4150150 - 130 = 20
5170170 - 150 = 20
6190190 - 170 = 20

Assim, aplicamos I(d) quando percebemos uma tendência de crescimento ou queda na sua série. Caso o crescimento não seja linear, podemos usar I(2) ao invés de I(1), isto é, aplicar novamente a diferença até termos média constante.

3. MA(q) – Média Móvel de Ordem q

Usamos o MA(q) quando sua série tem picos repentinos e você precisa corrigir para os erros só daquele momento. Usamos MA(1) ou MA(2) quando a série tem "memória curta". O valor é afetado pelo erro anterior. Exemplos de dados que sofrem impactos temporários: preços de ações ou produtos após um evento único, demanda após uma promoção relâmpago.

Modela \( Y_t \) como uma combinação linear de erros passados:

\[ Y_t = \mu + \epsilon_t + \theta_1 \epsilon_{t-1} + \theta_2 \epsilon_{t-2} + \dots + \theta_q \epsilon_{t-q} \]

- q: Número de termos de erro usados.

- FAC: Identifica a ordem \( q \) (corte no lag significativo).

Ad

Dia (t)Preço (Yₜ)Erro (εₜ)Cálculo do Modelo MA(2)
150.00+2.00-
252.00-1.00-
351.50+1.50Y₃ = 50 + 1.50 + 0.8×(-1) + 0.3×2 = 51.50
452.80-0.80Y₄ = 50 + (-0.80) + 0.8×1.5 + 0.3×(-1) = 52.80
553.34+0.34Y₅ = 50 + 0.34 + 0.8×(-0.8) + 0.3×1.5 = 53.34
652.72-0.28Y₆ = 50 + (-0.28) + 0.8×0.34 + 0.3×(-0.8) = 52.72

Notação ARIMA(p, d, q)

- ARIMA(1, 1, 1):

- AR(1): \( Y_t \) depende de \( Y_{t-1} \).

- I(1): 1ª diferenciação aplicada.

- MA(1): \( Y_t \) depende de \( \epsilon_{t-1} \).

Exemplo de Equação ARIMA(1,1,1):

\[ \nabla Y_t = c + \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \]

Ad

Exemplo Prático: Previsão de Vendas Mensais

Passo 1: Carregar e Visualizar os Dados

Dados de vendas mensais (em milhares):

MêsVendas
1100
2120
3130
4150
5170
6190

Passo 2: Verificar Estacionariedade

- Teste ADF: p-valor = 0,12 (não estacionária).

- Aplicar 1ª diferenciação:

\[ \nabla Y_t = Y_t - Y_{t-1} \]

Ad

Podemos observar isso pela tabela abaixo:

MêsVendas\( \nabla Y_t \)
212020
313020
415010
517020
619020

- Novo teste ADF: p-valor = 0,01 (estacionária).

Passo 3: Definir o Modelo ARIMA(1,1,1)

A fórmula do modelo é:

\[ \nabla Y_t = \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \]

Onde:

- \(\nabla Y_t\) = Yₜ - Yₜ₋₁ (série diferenciada)

- \(\phi_1\) = coeficiente AR(1)

- \(\theta_1\) = coeficiente MA(1)

Ad

- \(\epsilon_t\) = erro no tempo \(t\)

Passo 4: Estimar os Coeficientes (AR e MA)

Como estamos fazendo manualmente, usaremos valores típicos para ilustração:

- \(\phi_1 = 0.6\) (AR)

- \(\theta_1 = -0.3\) (MA)

Pacotes como statsmodels do python utilizam de Markov Chain para chegar nas constantes ótimas minimizando o SSE da função.

Passo 5: Calcular as Previsões

Vamos prever \(\nabla Y_t\) a partir do mês 3:

Mês∇Yₜ (Real)Previsão ARIMA(1,1,1)
310\(\hat{\nabla Y_3} = 0.6 \times 20 + (-0.3) \times \epsilon_2\)
420\(\hat{\nabla Y_4} = 0.6 \times 10 + (-0.3) \times \epsilon_3\)
520\(\hat{\nabla Y_5} = 0.6 \times 20 + (-0.3) \times \epsilon_4\)
620\(\hat{\nabla Y_6} = 0.6 \times 20 + (-0.3) \times \epsilon_5\)

Ad

Passo 6: Calcular os Erros (\(\epsilon_t\))

Assumindo \(\epsilon_1 = 0\) (erro inicial):

Mês∇Yₜ (Real)Previsão (\(\hat{\nabla Y_t}\))Erro (\(\epsilon_t = \nabla Y_t - \hat{\nabla Y_t}\))
220-\(\epsilon_2 = 20 - 0 = 20\) (valor inicial)
310\(0.6 \times 20 + (-0.3) \times 20 = 6\)\(\epsilon_3 = 10 - 6 = 4\)
420\(0.6 \times 10 + (-0.3) \times 4 = 4.8\)\(\epsilon_4 = 20 - 4.8 = 15.2\)
520\(0.6 \times 20 + (-0.3) \times 15.2 = 7.44\)\(\epsilon_5 = 20 - 7.44 = 12.56\)
620\(0.6 \times 20 + (-0.3) \times 12.56 = 8.23\)\(\epsilon_6 = 20 - 8.23 = 11.77\)

Passo 7: Prever o Próximo Mês (Mês 7)

Usando os últimos valores:

\[\hat{\nabla Y_7} = 0.6 \times 20 + (-0.3) \times 11.77 = 8.47\]

\[ \hat{Y_7} = Y_6 + \hat{\nabla Y_7} = 190 + 8.47 = 198.47\]

Resumo do Modelo ARIMA(1,1,1)

Ad

- Equação estimada:

\[ \nabla Y_t = 0.6 \nabla Y_{t-1} - 0.3 \epsilon_{t-1} + \epsilon_t \]

- Previsão para o mês 7: ~198.5 (arredondado)

Diferença entre os ARIMAS

ModeloFórmulaQuando Usar?Exemplo Prático
ARIMA(0,0,0)
(White Noise)
\( Y_t = \mu + \epsilon_t \)Quando a série é puro ruído sem padrõesTemperatura ambiente controlada
ARIMA(0,1,0)
(Random Walk)
\( Y_t = Y_{t-1} + \epsilon_t \)Séries com tendência estocásticaPreços de ações
ARIMA(1,0,0)
(AR(1))
\( Y_t = c + \phi_1 Y_{t-1} + \epsilon_t \)Quando Yₜ depende apenas de Yₜ₋₁Demanda energética diária
ARIMA(0,0,1)
(MA(1))
\( Y_t = \mu + \epsilon_t + \theta_1 \epsilon_{t-1} \)Choques temporários afetam apenas 1 períodoVendas pós-promoção
ARIMA(1,0,1)
(ARMA(1,1))
\( Y_t = c + \phi_1 Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \)Quando há memória do valor passado E do erro passadoPreços de commodities
ARIMA(1,1,0)\( \nabla Y_t = \phi_1 \nabla Y_{t-1} + \epsilon_t \)Tendência + autocorrelação no 1º lagCrescimento do PIB
ARIMA(0,1,1)\( \nabla Y_t = \theta_1 \epsilon_{t-1} + \epsilon_t \)Tendência + choques temporáriosPreços de petróleo
ARIMA(1,1,1)\( \nabla Y_t = \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \)Combina todos os efeitosVendas com sazonalidade

Por que usar ARIMA em vez de Regressão Linear com o Tempo?

A escolha entre ARIMA e regressão linear com o tempo depende da estrutura dos dados e das suposições estatísticas. A Regressão Linear com o Tempo (Modelo Simples) assume que a série temporal pode ser modelada como:

Ad

\[ Y_t = \beta_0 + \beta_1 \cdot t + \epsilon_t \]

Onde:

- \( t \) = variável temporal (ex: 1, 2, 3, ...).

- \( \epsilon_t \) = erro aleatório.

A Vantagem é por ser simples de implementar e interpretar. Também é util quando há uma tendência linear clara (ex: crescimento constante). Mas Ignora autocorrelação: Em séries temporais, valores passados influenciam valores futuros (ex: demanda de produtos, preços de ações); A regressão linear trata cada observação como independente, o que raramente é verdade em dados temporais. Também não lida com sazonalidade ou ciclos; se os dados têm padrões repetitivos (ex: vendas no Natal), a regressão linear não os captura. E exige resíduos não correlacionados: em séries temporais, os resíduos muitas vezes têm autocorrelação (ex: se hoje foi um dia de alta demanda, amanhã também pode ser).

Comparação Direta: Regressão Linear vs. ARIMA

CritérioRegressão Linear com TempoARIMA
TendênciaModela apenas linearRemove tendência via diferenciação
AutocorrelaçãoIgnoraCaptura (AR e MA)
SazonalidadeNão lidaModela (SARIMA)
ResíduosExige independênciaPermite autocorrelação controlada
ComplexidadeBaixaAlta (escolha de p, d, q)

Exercícios

Ad

1. Qual é a diferença entre os componentes AR e MA em um ARIMA?

a) AR usa valores passados, MA usa erros passados.

b) AR é para tendência, MA é para sazonalidade.

c) Ambos são iguais.

2. Faça uma previsão para o tempo 6 usando ARIMA(0,1,0).

MêsVendas
1100
2120
3130
4150
5170
6190

3. Ajuste um ARIMA(1,0,0) para a série abaixo e faça uma previsão para t=5 com \(\phi_1 = 0.6\) e \(\theta_1 = -0.3\) e \(c=10\).

tY
110
215
320
425

Ad

4. Ajuste um ARIMA(1,0,1) para a série abaixo e faça uma previsão para t=5 com \(\phi_1 = 0.6\) e \(\theta_1 = -0.3\) e \(c=10\).

tY
110
215
320
425

5. Ajuste um ARIMA(1,1,1) para a série abaixo e faça uma previsão para t=5 com \(\phi_1 = 0.6\) e \(\theta_1 = -0.3\) e \(c=10\).

tY
110
215
320
425

6. Use ARIMA(1,1,0) para calcular a previsão para todos os tempos do 1 ao 6 (faça 1 tempo a mais). Use \(\phi_1 = 0.6\), \(\theta_1 = 0.3\) e \(c=20\). Após isso, calcule o SEE da previsão usando o tempo 2 a 5 como referência.

TempoY (Vendas)
180
270
390
4110
5120

7. Use ARIMA(1,1,1) para calcular a previsão para todos os tempos do 1 ao 6 (faça 1 tempo a mais). Use \(\phi_1 = 0.6\), \(\theta_1 = 0.3\) e \(c=20\).

TempoY (Vendas)
180
270
390
4110
5120

Ad

Gabarito

1. a)