O que são os modelos ARIMA e como aplicar a Metodologia Box-Jenkins? Vamos demonstrar neste post como construir um modelo linear univariado, expondo o modelo do tipo ARIMA, bem como vamos descrever a metodologia Box-Jenkins para prever séries temporais. Mostraremos os resultados de um exemplo da previsão do IPCA mensal construído no R e no Python.
Para obter todo o código em R e Python para os exemplos abaixo, faça parte do Clube AM, o repositório de códigos da Análise Macro, contendo exercícios semanais.
Introdução a modelos lineares univariados
Em termos simples, o objetivo da econometria de séries temporais univariada é encontrar a dependência dinâmica de uma série , isto é, a dependência de
em relação aos seus valores passados (
).
Aqui focaremos nos modelos univariados lineares, onde depende linearmente dos seus valores passados.
Como veremos, modelos univariados podem ser uma boa forma de gerar previsões simples e rápidas para séries que, a priori, nós não temos maiores informações sobre variáveis exógenas que podem influenciar o seu comportamento.
Ademais, com processos que possuem alguma memória, esse tipo de modelagem pode ser de grande ajuda nos seus exercícios econométricos.
Nesse contexto, para termos condições de modelar e gerar previsões nessa abordagem, vamos ver alguns conceitos básicos e importantes para prosseguirmos. Em seguida, aprenderemos a analisar as famosas funções de autocorrelação, reconheceremos os termos AR e MA de um processo ARMA, aprenderemos a identificar o problema da não estacionariedade e apresentaremos, por fim, a metodologia proposta por Box et al. (2016) para construir previsões a partir de modelos univariados.
ARIMA
Estaremos interessados em modelos que possam ser representados da forma
(1)
Onde é um ruído branco. Para o caso em que
, teremos modelos como
(2)
Onde quem irá dizer se o processo é ou não estacionário será o valor de
:
(i) se , o processo é estacionário;
(ii) se , o processo será não estacionário.
Processo Autoregressivo
Suponha que tenhamos um processo como
{#eq-ar1b} Onde . Como vimos, a trajetória desse processo depende de
. Se
, os choques se acumulam ao longo do tempo, formando assim um processo não estacionário.
Por enquanto, entretanto, vamos considerar o caso em que , de modo que tenhamos um processo estacionário. Assim, aplicando o operador defasagem à equação acima, temos que:
Obs. O operador defasagem é definido como .
O processo descrito pela equação @eq-ar1l é conhecido na literatura como **processo autoregressivo de primeira ordem**, bastante útil na modelagem e previsão de séries onde a primeira defasagem possui significância estatística.
Processo de Média Móvel
Assumindo estacionariedade fraca, como posto em @tsay2, nós temos que ,
e
, onde
,
são constantes e
é uma função de
, independente do tempo.
Dito isso, podemos obter a média e a variância da série como segue. Tomando o valor esperado sobre a equação @{eq-ar1b} nós obtemos
(3)
Sob as condições de estacionariedade, e, consequentemente,
(4)
Esse resultado tem duas implicações para .
Primeiro, a média de existe se
.
Segundo, a média de será zero se (e apenas se)
.
Agora, considerando o processo AR(1) pode ser reescrito como
{#eq-eq21}
Fazendo repetidas substituições, a equação anterior implica que
(5)
Ou seja, transformamos um **processo autoregressivo** em um processo de **média móvel**.
Um processo MA(1) é representado como abaixo:
(6)
onde é um ruído branco e
e
podem ser quaisquer constantes.
Processos ARMA(p, q)
Agora que temos uma noção do que são processos autoregressivos e de média móveis, podemos juntar os dois. Desta forma podemos analisar processos mistos, ou processos **ARMA**. Este processo, **ARMA(p,q)**, mais geral pode ser formulado como a seguir
(7)
ARIMA (p, d, q)
Quando temos um processo que não necessita de diferenciação a chamamos de **processo integrado de ordem 0** ou alternativamente um **processo I(0)**.
Um segundo caso vem à tona quando é preciso **diferenciar** a série em questão para torná-la estacionária. Isto é, devemos aplicar o operador diferença sobre
.
Nesse caso, se precisamos diferenciar a série uma vez para torná-la estacionária, refere-se à mesma como sendo um **processo integrado de ordem 1** ou alternativamente um **processo I(1)**.
[^3]: Em termos de operador defasagem, ou genericamente,
, onde
será o número de vezes que a série foi diferenciada.
No contexto da modelagem discutida anteriormente, significa dizer que teremos agora um processo **autorregressivo integrado de médias móveis**
, onde
refere-se à ordem de integração, isto é, ao número de vezes que a série
precisou ser diferenciada para que a mesma se tornasse estacionária.
SARIMA (p, d, q)(P, D, Q)m
Os modelos ARIMA também são capazes de modelar uma ampla gama de dados sazonais.
Um modelo ARIMA sazonal é formado pela inclusão de termos sazonais adicionais, na forma , onde o segundo componente faz referência à parte sazonal e
significa o número de períodos por estação.
Estimação e Seleção de ordem
Estimação
Uma vez que a ordem do modelo tenha sido identificada (ou seja, os valores de p, d e q), precisamos estimar os parâmetros .
O processo usual é a Estimação de Máxima Verossimilhança (MLE, na sigla em inglês).
Essa técnica encontra os valores dos parâmetros que maximizam a probabilidade de obter os dados que observamos.
Na prática, pacotes e funções (que contém o algoritmo de estimação) reportarão o valor do logaritmo da verossimilhança dos dados; ou seja, o logaritmo da probabilidade dos dados observados serem provenientes do modelo estimado.
Para valores dados de p, d e q, o algoritmo tentará maximizar o logaritmo da verossimilhança ao encontrar as estimativas dos parâmetros.
Critérios de Informação
Os Critérios de Informação são úteis para avaliar e comparar modelos da mesma classe, porém, com escolhas diferentes. São bastante utilizados em modelos ARIMA, como forma de comparar as estimavativas com base em diferentes ordens dos processos.
A ideia é que os critérios sejam os menores possíveis, e com essa possibilidade, há algoritmos que possibilitam escolher o número de ordens de uma modelo tal que minimize os critérios, como é o caso do Auto ARIMA.
Critério de Informação de Akaike (AIC)
onde é a verossimilhança dos dados,
se
e
se
.
Observe que o último termo entre parênteses é o número de parâmetros no modelo (incluindo , a variância dos resíduos).
Critério de Informação de Akaike corrigido (AICc)
Para modelos ARIMA, o AICc é descrito como:
Para valores pequenos de T, o AIC tende a selecionar um número excessivo de preditores, e, portanto, uma versão corrigida do AIC foi desenvolvida.
Critério de Informação Bayesiano de Schwarz
O Critério de Informação Bayesiano de Schwarz (geralmente abreviado como BIC, SBIC ou SC):
O BIC penaliza o número de parâmetros com mais rigor do que o AIC
Bons modelos são obtidos minimizando o AIC, AICc ou BIC. Nossa preferência é usar o AICc.
É importante observar que esses critérios de informação geralmente não são bons guias para selecionar a ordem adequada de diferenciação (d) de um modelo, mas apenas para selecionar os valores de p e q.
Isso ocorre porque a diferenciação altera os dados nos quais a verossimilhança é calculada, tornando os valores de AIC entre modelos com diferentes ordens de diferenciação não comparáveis. Portanto, precisamos usar outra abordagem para escolher d e, em seguida, podemos usar o AICc para selecionar p e q.
Metodologia Box-Jenkins
Uma vez que tenhamos chegado a modelos representados por um ARIMA ou SARIMA, podemos agora assim apresentar a metodologia proposta por Box et al. (2016) de modo a consolidar nossa análise univariada de séries temporais.
A metodologia Box-Jenkins é composta por quatro etapas principais:
1. Identificação do Modelo: Nesta etapa, a série temporal é analisada para identificar seus padrões, como tendência, sazonalidade e componentes de erro. Os gráficos de autocorrelação e autocorrelação parcial são utilizados para identificar os termos autorregressivos (AR) e de média móvel (MA) que podem estar presentes no modelo. Além disso, o uso de diferenciação pode ser necessário para tornar a série temporal estacionária.
2. Estimação do Modelo: Após a identificação do modelo, os parâmetros são estimados usando técnicas de estimativa, como o método dos mínimos quadrados ou a máxima verossimilhança. A seleção do modelo adequado pode ser baseada em critérios de informação, como o Critério de Informação de Akaike (AIC) ou o Critério de Informação Bayesiano (BIC). Também é útil avaliar o número de coeficientes significativos.
3. Diagnóstico do Modelo: Nesta etapa, o modelo estimado é avaliado por meio da análise dos resíduos. Os resíduos devem ser independentes, não apresentar autocorrelação significativa e ter distribuição normal. Os testes de diagnóstico, como o teste de Ljung-Box, podem ser usados para verificar a presença de autocorrelação nos resíduos.
4. Previsão: Uma vez escolhido o melhor modelo, passa-se à etapa de previsão.
Exemplo: Modelagem e Previsão do IPCA
Abaixo, temos um processo que segue o exposto por Box-Jenkins. Iremos realizar a previsão do IPCA a.m% por meio de um modelo ARIMA.
1. Identificação do Modelo
1.1 Verificando a distribuição, tendência e sazonalidade
Código
1.2 Verificando a estacionariedade
Código
Augmented Dickey-Fuller Test
alternative: stationary
Type 1: no drift no trend
lag ADF p.value
[1,] 0 -4.18 0.01
[2,] 1 -3.48 0.01
[3,] 2 -3.06 0.01
[4,] 3 -3.07 0.01
[5,] 4 -2.71 0.01
Type 2: with drift no trend
lag ADF p.value
[1,] 0 -7.46 0.01
[2,] 1 -6.55 0.01
[3,] 2 -6.05 0.01
[4,] 3 -6.35 0.01
[5,] 4 -6.06 0.01
Type 3: with drift and trend
lag ADF p.value
[1,] 0 -7.47 0.01
[2,] 1 -6.57 0.01
[3,] 2 -6.07 0.01
[4,] 3 -6.41 0.01
[5,] 4 -6.11 0.01
----
Note: in fact, p.value = 0.01 means p.value <= 0.01
Código
KPSS Unit Root Test
alternative: nonstationary
Type 1: no drift no trend
lag stat p.value
3 4.45 0.01
-----
Type 2: with drift no trend
lag stat p.value
3 0.0893 0.1
-----
Type 1: with drift and trend
lag stat p.value
3 0.0638 0.1
-----------
Note: p.value = 0.01 means p.value <= 0.01
: p.value = 0.10 means p.value >= 0.10
Código
ndiffs
0
Código
nsdiffs
0
2. Estimação do Modelo
Código
Código
.model | term | estimate | std.error | statistic | p.value |
---|---|---|---|---|---|
arima_auto | ar1 | 0.5775190 | 0.0552453 | 10.4537248 | 0.0000000 |
arima_auto | sma1 | 0.1393787 | 0.0714066 | 1.9519032 | 0.0522072 |
arima_auto | constant | 0.1929235 | 0.0203892 | 9.4620286 | 0.0000000 |
arima100 | ar1 | 0.5775190 | 0.0552453 | 10.4537248 | 0.0000000 |
arima100 | sma1 | 0.1393787 | 0.0714066 | 1.9519032 | 0.0522072 |
arima100 | constant | 0.1929235 | 0.0203892 | 9.4620286 | 0.0000000 |
arima001 | ma1 | 0.4752090 | 0.0498495 | 9.5328778 | 0.0000000 |
arima001 | sma1 | 0.1537124 | 0.0739462 | 2.0787061 | 0.0387934 |
arima001 | constant | 0.4586221 | 0.0321676 | 14.2572589 | 0.0000000 |
arima002 | ma1 | 0.5440458 | 0.0657682 | 8.2721680 | 0.0000000 |
arima002 | ma2 | 0.2228784 | 0.0568446 | 3.9208362 | 0.0001176 |
arima002 | sma1 | 0.1659500 | 0.0722557 | 2.2967055 | 0.0225679 |
arima002 | constant | 0.4578569 | 0.0376409 | 12.1637992 | 0.0000000 |
arima003 | ma1 | 0.5398217 | 0.0659356 | 8.1871065 | 0.0000000 |
arima003 | ma2 | 0.3185256 | 0.0655897 | 4.8563345 | 0.0000023 |
arima003 | ma3 | 0.1961174 | 0.0683263 | 2.8703082 | 0.0044971 |
arima003 | sma1 | 0.1284788 | 0.0720572 | 1.7830102 | 0.0759510 |
arima003 | constant | 0.4573402 | 0.0416444 | 10.9820219 | 0.0000000 |
arima101 | ar1 | 0.5901232 | 0.0913666 | 6.4588484 | 0.0000000 |
arima101 | ma1 | -0.0189901 | 0.1114335 | -0.1704160 | 0.8648382 |
arima101 | sma1 | 0.1397312 | 0.0714514 | 1.9556120 | 0.0517655 |
arima101 | constant | 0.1871272 | 0.0200028 | 9.3550492 | 0.0000000 |
arima102 | ar1 | 0.5639163 | 0.1279138 | 4.4085642 | 0.0000162 |
arima102 | ma1 | 0.0036002 | 0.1368155 | 0.0263145 | 0.9790301 |
arima102 | ma2 | 0.0297141 | 0.0936972 | 0.3171287 | 0.7514440 |
arima102 | sma1 | 0.1406951 | 0.0714781 | 1.9683650 | 0.0502706 |
arima102 | constant | 0.1991270 | 0.0210872 | 9.4430090 | 0.0000000 |
arima103 | ar1 | 0.3773364 | 0.2040486 | 1.8492474 | 0.0657515 |
arima103 | ma1 | 0.1848540 | 0.2021046 | 0.9146452 | 0.3613703 |
arima103 | ma2 | 0.1465525 | 0.1211616 | 1.2095619 | 0.2277335 |
arima103 | ma3 | 0.1289802 | 0.0873118 | 1.4772374 | 0.1410292 |
arima103 | sma1 | 0.1243380 | 0.0722531 | 1.7208665 | 0.0866683 |
arima103 | constant | 0.2841689 | 0.0292971 | 9.6995434 | 0.0000000 |
Código
.model | n_coeficientes | n_significativos | perc_significativos |
---|---|---|---|
arima103 | 6 | 1 | 16.66667 |
arima102 | 5 | 2 | 40.00000 |
arima101 | 4 | 2 | 50.00000 |
arima100 | 3 | 2 | 66.66667 |
arima_auto | 3 | 2 | 66.66667 |
arima003 | 5 | 4 | 80.00000 |
arima001 | 3 | 3 | 100.00000 |
arima002 | 4 | 4 | 100.00000 |
Código
.model | sigma2 | log_lik | AIC | AICc | BIC |
---|---|---|---|---|---|
arima_auto | 0.0738393 | -24.56393 | 57.12785 | 57.31218 | 70.73856 |
arima100 | 0.0738393 | -24.56393 | 57.12785 | 57.31218 | 70.73856 |
arima101 | 0.0741679 | -24.54951 | 59.09903 | 59.37681 | 76.11242 |
arima102 | 0.0744748 | -24.49990 | 60.99980 | 61.39050 | 81.41587 |
arima103 | 0.0742154 | -23.59176 | 61.18351 | 61.70688 | 85.00225 |
arima003 | 0.0746812 | -24.78193 | 61.56386 | 61.95456 | 81.97992 |
arima002 | 0.0769260 | -28.60979 | 67.21957 | 67.49735 | 84.23296 |
arima001 | 0.0816666 | -35.69829 | 79.39659 | 79.58092 | 93.00730 |
3. Diagnóstico do Modelo
4. Previsões
4.1 Restrição da amostra (teste e treino)
4.2 Acurácia
Código
.model | .type | ME | RMSE | MAE | MPE | MAPE | MASE | RMSSE | ACF1 |
---|---|---|---|---|---|---|---|---|---|
arima100 | Test | -0.3171952 | 0.5891764 | 0.3952224 | 120.8467 | 144.9853 | NaN | NaN | 0.5801309 |
4.3 Previsão Fora da Amostra
___________________________________
Quer aprender mais?
Seja um aluno da nossa trilha de Macroeconomia Aplicada e aprenda a criar projetos voltados para a Macroeconomia.
Referências
Hyndman, R. J., e G. Athanasopoulos. 2013. Forecasting: Principles and Practice. OTexts.