O ARIMA (AutoRegressive Integrated Moving Average), ou modelo autorregressivo integrado de médias móveis, é um modelo estatístico muito usado para analisar e prever séries temporais. Ele combina três componentes:AR (autorregressivo): dependência dos valores passados da própria série.I (integrado): diferenciação para tornar a série estacionária.MA (médias móveis): dependência dos erros passados.Com isso, o ARIMA cria uma estrutura muito mais adequada para séries temporais do que uma regressão linear simples contra o tempo. Vamos explicar o que é o ARIMA e depois compará-lo com essa regressão para entender por que ele costuma ser melhor quando lidamos com dados ao longo do tempo.Componentes do Modelo ARIMA1. AR(p) – Autorregressivo de Ordem pSéries autorregressivas são aquelas em que o valor de hoje depende dos próprios valores passados. Pense na inflação mensal: um mês de inflação alta tende a ser seguido por outro mês de inflação alta, porque contratos e preços são reajustados com base no passado. O mesmo vale para a demanda diária de energia ou para a temperatura média de um dia em relação ao dia anterior.O modelo AR(p) escreve \( Y_t \) como uma combinação linear dos 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 defasagens (lags) usadas. Para escolher p, olhamos a função de autocorrelação parcial (FACP): em um AR(p) ela corta depois do lag p.2. I(d) – Integração de Ordem dO d é o número de diferenciações necessárias para tornar a série estacionária, isto é, sem tendência de crescimento ou de queda.Uma série temporal é estacionária quando suas propriedades estatísticas (média, variância e autocorrelação) não mudam ao longo do tempo. Isso é essencial para o ARIMA, que supõe estacionariedade (depois das diferenciações) para fazer previsões confiáveis. O teste formal é o de Dickey-Fuller aumentado (ADF), que veremos mais adiante; por enquanto, vamos avaliar a estacionariedade olhando a série.Observe a série a seguir e repare que, trabalhando com a diferença entre valores consecutivos, a série passa a oscilar em torno de uma média constante:Mês (t)Vendas (Yₜ)1ª diferença (∇Yₜ)1100–2120120 − 100 = 203130130 − 120 = 104150150 − 130 = 205170170 − 150 = 206190190 − 170 = 20Assim, aplicamos I(d) quando percebemos uma tendência de crescimento ou de queda na série. Se a primeira diferença ainda tiver tendência (por exemplo, quando a série cresce de forma quadrática), usamos I(2), isto é, diferenciamos de novo até a média ficar constante.3. MA(q) – Médias Móveis de Ordem qUsamos o MA(q) quando a série sofre choques que afetam só alguns períodos seguintes e depois somem: a série tem "memória curta" dos erros. No MA(1), o valor de hoje é afetado pelo erro de ontem; no MA(2), pelos erros de ontem e de anteontem. Exemplos de dados com impactos temporários: preços de ações ou de produtos após um evento único, demanda após uma promoção relâmpago.O modelo MA(q) escreve \( Y_t \) como uma combinação linear dos 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 (função de autocorrelação): identifica a ordem q, porque em um MA(q) ela corta depois do lag q.Exemplo de um MA(2) com \( \mu = 50 \), \( \theta_1 = 0{,}8 \) e \( \theta_2 = 0{,}3 \), supondo erros iguais a zero antes do dia 1:Dia (t)Erro (εₜ)Cálculo do modelo MA(2)Preço (Yₜ)1+2,00Y₁ = 50 + 2,00 + 0,8×0 + 0,3×052,002−1,00Y₂ = 50 + (−1,00) + 0,8×2 + 0,3×050,603+1,50Y₃ = 50 + 1,50 + 0,8×(−1) + 0,3×251,304−0,80Y₄ = 50 + (−0,80) + 0,8×1,5 + 0,3×(−1)50,105+0,34Y₅ = 50 + 0,34 + 0,8×(−0,8) + 0,3×1,550,156−0,28Y₆ = 50 + (−0,28) + 0,8×0,34 + 0,3×(−0,8)49,75Repare que o preço sempre volta para perto de 50: cada choque só influencia os dois dias seguintes.Uma série vale 10, 14, 18, 22, 26 nos meses 1 a 5. Qual a ordem de integração d mais adequada?Gabarito: d = 1 — a primeira diferença dá 4, 4, 4, 4, uma série de média constante, então uma diferenciação basta. d = 2 seria necessário se a primeira diferença ainda crescesse, como numa série quadrática.Em um MA(1) com μ = 100 e θ1 = 0,5, o erro do último período foi +4. Qual a previsão para o próximo período (o erro futuro tem valor esperado zero)?Gabarito: 102 — a previsão é μ mais θ1 vezes o último erro: 100 + 0,5 × 4 = 102. A opção 104 soma o erro inteiro, esquecendo de multiplicar por θ1.Notação ARIMA(p, d, q)Por exemplo, no ARIMA(1, 1, 1):AR(1): a série diferenciada depende do seu valor anterior;I(1): aplica-se uma diferenciação;MA(1): depende também do erro anterior, \( \epsilon_{t-1} \).Equação do ARIMA(1,1,1):\[ \nabla Y_t = c + \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \]Exemplo Prático: Previsão de Vendas MensaisPasso 1: Carregar e Visualizar os DadosDados de vendas mensais (em milhares):MêsVendas110021203130415051706190Passo 2: Verificar a EstacionariedadeA série tem uma tendência clara de crescimento, então não é estacionária. O teste ADF confirma (rodando o adfuller do statsmodels nesses 6 pontos, o p-valor é cerca de 0,99, longe de 0,05). Aplicamos então a primeira diferenciação:\[ \nabla Y_t = Y_t - Y_{t-1} \]MêsVendas\( \nabla Y_t \)212020313010415020517020619020A série diferenciada oscila em torno de uma média constante. Atenção: com tão poucas observações, o teste ADF tem pouquíssimo poder, e na prática ele exige dezenas de pontos; aqui a decisão é visual.Passo 3: Definir o Modelo ARIMA(1,1,1)Para simplificar as contas, vamos usar o modelo sem constante:\[ \nabla Y_t = \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \]Onde:\( \nabla Y_t = Y_t - Y_{t-1} \) (série diferenciada);\( \phi_1 \) = coeficiente AR(1);\( \theta_1 \) = coeficiente MA(1);\( \epsilon_t \) = erro no tempo \( t \).Passo 4: Escolher os Coeficientes (AR e MA)Como estamos fazendo as contas à mão, usaremos valores típicos para ilustrar:\( \phi_1 = 0{,}6 \) (AR)\( \theta_1 = -0{,}3 \) (MA)Pacotes como o statsmodels, do Python, estimam esses coeficientes por máxima verossimilhança: escrevem o modelo em forma de espaço de estados e usam o filtro de Kalman para encontrar os valores que tornam os dados observados mais prováveis (o que, com erros normais, equivale aproximadamente a minimizar a soma dos quadrados dos erros).Passo 5: Montar as PrevisõesA previsão de cada mês usa a diferença real do mês anterior e o erro do mês anterior:Mês∇Yₜ (real)Previsão ARIMA(1,1,1)310\( \widehat{\nabla Y_3} = 0{,}6 \times 20 + (-0{,}3) \times \epsilon_2 \)420\( \widehat{\nabla Y_4} = 0{,}6 \times 10 + (-0{,}3) \times \epsilon_3 \)520\( \widehat{\nabla Y_5} = 0{,}6 \times 20 + (-0{,}3) \times \epsilon_4 \)620\( \widehat{\nabla Y_6} = 0{,}6 \times 20 + (-0{,}3) \times \epsilon_5 \)Passo 6: Calcular os Erros (\( \epsilon_t \))No mês 2 ainda não há diferença anterior para usar. Como o modelo não tem constante, a previsão sem informação é 0, e o erro inicial é a própria diferença: \( \epsilon_2 = 20 - 0 = 20 \).Mês∇Yₜ (real)Previsão (\( \widehat{\nabla Y_t} \))Erro (\( \epsilon_t = \nabla Y_t - \widehat{\nabla Y_t} \))2200 (sem histórico)\( \epsilon_2 = 20 - 0 = 20 \)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:\[ \widehat{\nabla Y_7} = 0{,}6 \times 20 + (-0{,}3) \times 11{,}77 = 8{,}47 \]\[ \hat{Y}_7 = Y_6 + \widehat{\nabla Y_7} = 190 + 8{,}47 = 198{,}47 \]Resumo do modelo ARIMA(1,1,1)Equação usada: \( \nabla Y_t = 0{,}6 \nabla Y_{t-1} - 0{,}3 \epsilon_{t-1} + \epsilon_t \)Previsão para o mês 7: cerca de 198,5Repare que todos os erros foram positivos: o modelo subestimou o crescimento em todos os meses. Isso acontece porque as vendas sobem, em média, 18 por mês, e o modelo sem constante supõe que a diferença oscila em torno de zero. Em uma série com tendência, o ARIMA(1,1,1) deve incluir a constante c (chamada de drift), que representa esse crescimento médio.Fazendo o Mesmo no PythonNo statsmodels atual, o ARIMA fica em statsmodels.tsa.arima.model. Com d = 1, a constante de crescimento é pedida com trend="t":import pandas as pdfrom statsmodels.tsa.arima.model import ARIMAvendas = pd.Series([100, 120, 130, 150, 170, 190], index=pd.period_range("2024-01", periods=6, freq="M"))modelo = ARIMA(vendas, order=(1, 1, 1), trend="t")resultado = modelo.fit()print(resultado.params)print(resultado.forecast(steps=1))O drift estimado fica perto de 17,8 por mês e a previsão para o mês 7 sai em torno de 206, acima dos 198,5 do modelo sem constante. Com só 6 observações, porém, os coeficientes AR e MA estimados são muito instáveis: use o código para aprender a sintaxe, não para confiar nesses números.Em um ARIMA(1,1,0) sem constante, com φ1 = 0,5, os dois últimos valores da série foram 190 e 200. Qual a previsão para o próximo período?Gabarito: 205 — a última diferença é 200 menos 190 = 10; a diferença prevista é 0,5 × 10 = 5; somando ao último valor, 200 + 5 = 205. A opção 210 repete a última diferença inteira, como num passeio aleatório com tendência, ignorando o φ1.No exemplo das vendas, todos os erros do ARIMA(1,1,1) sem constante foram positivos. O que isso indica?Gabarito: Que falta a constante (drift): a série cresce em média 18 por mês e o modelo supõe crescimento médio zero — erros sempre do mesmo sinal são sinal de viés. Mudar o sinal de θ1 não resolveria, porque o problema está no nível médio da série diferenciada.Diferença entre os ARIMAsModeloFórmulaQuando usar?Exemplo práticoARIMA(0,0,0)(ruído branco)\( Y_t = \mu + \epsilon_t \)Quando a série é puro ruído, sem padrõesTemperatura de um ambiente climatizadoARIMA(0,1,0)(passeio aleatório)\( Y_t = Y_{t-1} + \epsilon_t \)Séries com tendência estocásticaPreços de açõesARIMA(1,0,0)(AR(1))\( Y_t = c + \phi_1 Y_{t-1} + \epsilon_t \)Quando Yₜ depende apenas de Yₜ₋₁Demanda diária de energiaARIMA(0,0,1)(MA(1))\( Y_t = \mu + \epsilon_t + \theta_1 \epsilon_{t-1} \)Choques temporários que afetam só 1 períodoVendas após uma promoçãoARIMA(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 commoditiesARIMA(1,1,0)\( \nabla Y_t = \phi_1 \nabla Y_{t-1} + \epsilon_t \)Tendência + autocorrelação no 1º lagCrescimento do PIBARIMA(0,1,1)\( \nabla Y_t = \theta_1 \epsilon_{t-1} + \epsilon_t \)Tendência + choques temporáriosPreços do petróleoARIMA(1,1,1)\( \nabla Y_t = \phi_1 \nabla Y_{t-1} + \theta_1 \epsilon_{t-1} + \epsilon_t \)Combina tendência, memória do valor e memória do erroVendas com tendência e choquesNenhum desses modelos captura sazonalidade (picos que se repetem todo ano, como as vendas de Natal). Para isso existe a extensão SARIMA, que acrescenta termos AR, I e MA sazonais.As vendas mensais de uma loja crescem ano a ano e têm um pico todo mês de dezembro. Qual modelo é o mais indicado?Gabarito: SARIMA, com diferenciação e termos sazonais de período 12 — a tendência pede diferenciação e o pico anual pede a parte sazonal. Um ARIMA comum ou uma reta contra o tempo não reproduzem o pico de dezembro.Por que usar ARIMA em vez de Regressão Linear com o Tempo?A escolha entre o ARIMA e a 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) supõe que a série pode ser escrita como:\[ Y_t = \beta_0 + \beta_1 \cdot t + \epsilon_t \]Onde:\( t \) = variável de tempo (ex.: 1, 2, 3, ...);\( \epsilon_t \) = erro aleatório.A vantagem é ser simples de implementar e de interpretar, e ela funciona bem quando há uma tendência linear clara (crescimento constante). Mas ela tem limitações:Ignora a autocorrelação: em séries temporais, valores passados influenciam valores futuros (demanda de produtos, preços de ações), e a regressão trata cada observação como independente, o que raramente é verdade.Não lida com sazonalidade nem com ciclos se o único regressor for t: padrões repetitivos (como as vendas de Natal) ficam nos resíduos.Exige resíduos não correlacionados: em séries temporais, os resíduos costumam ter autocorrelação (se hoje a demanda foi alta, amanhã também pode ser), o que torna os testes t e os intervalos de confiança da regressão enganosos.Comparação Direta: Regressão Linear vs. ARIMACritérioRegressão linear com o tempoARIMATendênciaModela apenas tendência linearRemove a tendência por diferenciaçãoAutocorrelaçãoIgnoraCaptura (termos AR e MA)SazonalidadeNão lida (só com variáveis extras)Só na extensão SARIMAResíduosSupõe independênciaModela a dependência; os resíduos finais devem ser ruído brancoComplexidadeBaixaAlta (escolha de p, d, q)Por que uma regressão linear simples de Y contra t costuma dar testes t enganosos em séries temporais?Gabarito: Porque os resíduos costumam ser autocorrelacionados, violando a suposição de independência — com resíduos dependentes, os erros padrão ficam subestimados e os testes acusam significância demais. Ao contrário da última opção, regressões contra o tempo muitas vezes têm R² alto justamente por causa da tendência.ExercíciosNos exercícios com termo MA, quando não houver valor anterior para usar, a previsão é só a constante c (como no Passo 6 do exemplo, em que c = 0).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 mês 7 usando um ARIMA(0,1,0) (passeio aleatório, sem constante).MêsVendas1100212031304150517061903. Ajuste um ARIMA(1,0,0) à série abaixo e faça uma previsão para t = 5 com \( \phi_1 = 0{,}6 \), \( \theta_1 = -0{,}3 \) e \( c = 10 \). (Atenção: um dos coeficientes dados não é usado neste modelo.)tY1102153204254. Ajuste um ARIMA(1,0,1) à série abaixo e faça uma previsão para t = 5 com \( \phi_1 = 0{,}6 \), \( \theta_1 = -0{,}3 \) e \( c = 10 \).tY1102153204255. Ajuste um ARIMA(1,1,1) à série abaixo e faça uma previsão para t = 5 com \( \phi_1 = 0{,}6 \), \( \theta_1 = -0{,}3 \) e \( c = 10 \).tY1102153204256. Use um ARIMA(1,1,0) para calcular a previsão de todos os tempos possíveis, do 2 ao 6 (o 6 é a previsão do período seguinte aos dados). Use \( \phi_1 = 0{,}6 \) e \( c = 20 \) (o \( \theta_1 = 0{,}3 \) não entra neste modelo). Depois, calcule o SEE das previsões dos tempos 2 a 5.TempoY (vendas)180270390411051207. Use um ARIMA(1,1,1) para calcular a previsão de todos os tempos possíveis, do 2 ao 6. Use \( \phi_1 = 0{,}6 \), \( \theta_1 = 0{,}3 \) e \( c = 20 \).TempoY (vendas)18027039041105120Gabarito1. a)2. No passeio aleatório, a previsão é o último valor: \( \hat{Y}_7 = Y_6 = 190 \).3. \( \hat{Y}_5 = 10 + 0{,}6 \times 25 = 25 \). O \( \theta_1 \) não entra, porque o ARIMA(1,0,0) não tem termo MA.4. Previsões e erros: \( \hat{Y}_1 = 10 \) (só a constante), \( \epsilon_1 = 0 \); \( \hat{Y}_2 = 10 + 0{,}6 \times 10 = 16 \), \( \epsilon_2 = -1 \); \( \hat{Y}_3 = 10 + 0{,}6 \times 15 - 0{,}3 \times (-1) = 19{,}3 \), \( \epsilon_3 = 0{,}7 \); \( \hat{Y}_4 = 10 + 0{,}6 \times 20 - 0{,}3 \times 0{,}7 = 21{,}79 \), \( \epsilon_4 = 3{,}21 \). Previsão: \( \hat{Y}_5 = 10 + 0{,}6 \times 25 - 0{,}3 \times 3{,}21 \approx 24{,}04 \).5. Diferenças: 5, 5, 5 (t = 2, 3, 4). \( \widehat{\nabla Y_2} = 10 \), \( \epsilon_2 = -5 \); \( \widehat{\nabla Y_3} = 10 + 0{,}6 \times 5 - 0{,}3 \times (-5) = 14{,}5 \), \( \epsilon_3 = -9{,}5 \); \( \widehat{\nabla Y_4} = 10 + 3 - 0{,}3 \times (-9{,}5) = 15{,}85 \), \( \epsilon_4 = -10{,}85 \); \( \widehat{\nabla Y_5} = 10 + 3 - 0{,}3 \times (-10{,}85) = 16{,}26 \). Previsão: \( \hat{Y}_5 = 25 + 16{,}26 \approx 41{,}26 \). Os erros crescentes e sempre negativos mostram que c = 10 é grande demais para uma série que cresce 5 por período.6. Diferenças: −10, 20, 20, 10 (t = 2 a 5). Diferenças previstas: 20 (t = 2, só a constante), \( 20 + 0{,}6 \times (-10) = 14 \), \( 20 + 0{,}6 \times 20 = 32 \), 32 e \( 20 + 0{,}6 \times 10 = 26 \). Somando ao valor anterior, as previsões são \( \hat{Y}_2 = 100 \), \( \hat{Y}_3 = 84 \), \( \hat{Y}_4 = 122 \), \( \hat{Y}_5 = 142 \) e \( \hat{Y}_6 = 146 \). Erros nos tempos 2 a 5: −30, 6, −12 e −22; SSE = 1564. Com \( n - 2 \) no denominador, como na regressão, \( SEE = \sqrt{1564/2} \approx 27{,}96 \).7. \( \widehat{\nabla Y_2} = 20 \), \( \epsilon_2 = -30 \); \( \widehat{\nabla Y_3} = 20 + 0{,}6 \times (-10) + 0{,}3 \times (-30) = 5 \), \( \epsilon_3 = 15 \); \( \widehat{\nabla Y_4} = 20 + 12 + 4{,}5 = 36{,}5 \), \( \epsilon_4 = -16{,}5 \); \( \widehat{\nabla Y_5} = 20 + 12 - 4{,}95 = 27{,}05 \), \( \epsilon_5 = -17{,}05 \); \( \widehat{\nabla Y_6} = 20 + 6 - 5{,}115 = 20{,}885 \). Previsões: \( \hat{Y}_2 = 100 \), \( \hat{Y}_3 = 75 \), \( \hat{Y}_4 = 126{,}5 \), \( \hat{Y}_5 = 137{,}05 \) e \( \hat{Y}_6 \approx 140{,}89 \).
Reactions
0
0 Comments
Be the first to comment
Nothing here yet.