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ₜ) |
---|---|---|
1 | 100 | – |
2 | 120 | 120 - 100 = 20 |
3 | 130 | 130 - 120 = 10 |
4 | 150 | 150 - 130 = 20 |
5 | 170 | 170 - 150 = 20 |
6 | 190 | 190 - 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) |
---|---|---|---|
1 | 50.00 | +2.00 | - |
2 | 52.00 | -1.00 | - |
3 | 51.50 | +1.50 | Y₃ = 50 + 1.50 + 0.8×(-1) + 0.3×2 = 51.50 |
4 | 52.80 | -0.80 | Y₄ = 50 + (-0.80) + 0.8×1.5 + 0.3×(-1) = 52.80 |
5 | 53.34 | +0.34 | Y₅ = 50 + 0.34 + 0.8×(-0.8) + 0.3×1.5 = 53.34 |
6 | 52.72 | -0.28 | Y₆ = 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ês | Vendas |
---|---|
1 | 100 |
2 | 120 |
3 | 130 |
4 | 150 |
5 | 170 |
6 | 190 |
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ês | Vendas | \( \nabla Y_t \) |
---|---|---|
2 | 120 | 20 |
3 | 130 | 20 |
4 | 150 | 10 |
5 | 170 | 20 |
6 | 190 | 20 |
- 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) |
---|---|---|
3 | 10 | \(\hat{\nabla Y_3} = 0.6 \times 20 + (-0.3) \times \epsilon_2\) |
4 | 20 | \(\hat{\nabla Y_4} = 0.6 \times 10 + (-0.3) \times \epsilon_3\) |
5 | 20 | \(\hat{\nabla Y_5} = 0.6 \times 20 + (-0.3) \times \epsilon_4\) |
6 | 20 | \(\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}\)) |
---|---|---|---|
2 | 20 | - | \(\epsilon_2 = 20 - 0 = 20\) (valor inicial) |
3 | 10 | \(0.6 \times 20 + (-0.3) \times 20 = 6\) | \(\epsilon_3 = 10 - 6 = 4\) |
4 | 20 | \(0.6 \times 10 + (-0.3) \times 4 = 4.8\) | \(\epsilon_4 = 20 - 4.8 = 15.2\) |
5 | 20 | \(0.6 \times 20 + (-0.3) \times 15.2 = 7.44\) | \(\epsilon_5 = 20 - 7.44 = 12.56\) |
6 | 20 | \(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
Modelo | Fórmula | Quando Usar? | Exemplo Prático |
---|---|---|---|
ARIMA(0,0,0) (White Noise) | \( Y_t = \mu + \epsilon_t \) | Quando a série é puro ruído sem padrões | Temperatura ambiente controlada |
ARIMA(0,1,0) (Random Walk) | \( Y_t = Y_{t-1} + \epsilon_t \) | Séries com tendência estocástica | Preç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íodo | Vendas 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 passado | Preços de commodities |
ARIMA(1,1,0) | \( \nabla Y_t = \phi_1 \nabla Y_{t-1} + \epsilon_t \) | Tendência + autocorrelação no 1º lag | Crescimento do PIB |
ARIMA(0,1,1) | \( \nabla Y_t = \theta_1 \epsilon_{t-1} + \epsilon_t \) | Tendência + choques temporários | Preç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 efeitos | Vendas 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ério | Regressão Linear com Tempo | ARIMA |
---|---|---|
Tendência | Modela apenas linear | Remove tendência via diferenciação |
Autocorrelação | Ignora | Captura (AR e MA) |
Sazonalidade | Não lida | Modela (SARIMA) |
Resíduos | Exige independência | Permite autocorrelação controlada |
Complexidade | Baixa | Alta (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ês | Vendas |
---|---|
1 | 100 |
2 | 120 |
3 | 130 |
4 | 150 |
5 | 170 |
6 | 190 |
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\).
t | Y |
---|---|
1 | 10 |
2 | 15 |
3 | 20 |
4 | 25 |
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\).
t | Y |
---|---|
1 | 10 |
2 | 15 |
3 | 20 |
4 | 25 |
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\).
t | Y |
---|---|
1 | 10 |
2 | 15 |
3 | 20 |
4 | 25 |
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.
Tempo | Y (Vendas) |
---|---|
1 | 80 |
2 | 70 |
3 | 90 |
4 | 110 |
5 | 120 |
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\).
Tempo | Y (Vendas) |
---|---|
1 | 80 |
2 | 70 |
3 | 90 |
4 | 110 |
5 | 120 |
Ad
Gabarito
1. a)
— Comentários
0Seja o primeiro a comentar