Previsão com Vetores Autoregressivos

Neste artigo verificamos como é possível realizar previsão de variáveis macroeconômicas utilizando os Vetores Autoregressivos.

Modelos multivariados estacionários

Processos autorregressivos de média móvel (ARMA) podem ser facilmente estendidos para o caso multivariado, onde o processo estocástico que gera um vetor de séries temporais é modelado

O mais comum dentre eles é o vetor autorregressivo (VAR), isto porque pode ser facilmente estimado via mínimos quadrados ordinários ou método bayesiano, as suas propriedades têm sido extensivamente estudadas na literatura e também porque são bastante similares às regressões lineares múltiplas.

Um VAR irá descrever a evolução dinâmica de um determinado número de variáveis de acordo com a história comum entre elas. Para ilustrar, considere um vetor autorregressivo de ordem 1, como

(1)   \begin{align*} &Y_{t} = \delta_{1} + \theta_{11} Y_{t-1} + \theta_{12} X_{t-1} + \epsilon_{1t} \\ &X_{t} = \delta_{2} + \theta_{21} Y_{t-1} + \theta_{22} X_{t-1} + \epsilon_{2t} \end{align*}

onde \epsilon_{1t} e \epsilon_{2t} são ruídos brancos independentes das **estórias** de Y e X, mas que podem estar correlacionados.

Se, por exemplo, \theta_{12} \neq 0, significa dizer que a **estória** de X ajuda a explicar Y. O sistema acima, a propósito, pode ser representando da seguinte forma, como faz @tsay:

(2)   \begin{equation*} z_{t} = \phi_{0} + \phi_{1} z_{t-1} + \alpha_{t} \end{equation*}

Ou, ainda, como

    \begin{align*} \begin{bmatrix} z_{1t} \\ z_{2t} \end{bmatrix} = \begin{bmatrix} \phi_{10} \\ \phi_{20} \end{bmatrix} + \begin{bmatrix} \phi_{1,11} & \phi_{1,12} \\ \phi_{1,21} & \phi_{1,22} \end{bmatrix} \begin{bmatrix} z_{1, t-1} \\ z_{2, t-1} \end{bmatrix} + \begin{bmatrix} \alpha_{1t} \\ \alpha_{2t} \end{bmatrix} \end{align*}

Esse sistema de ordem 1, a propósito, pode ser generalizado para qualquer ordem p como

    \[z_{t} = \phi_{0} + \sum_{i=1}^{p} \phi_{i} z_{t-i} + \alpha_{t}\]

{#eq-varp}

onde z_{t} para t = 1,...,T é uma vetor M x 1 contendo observações de M séries temporais, \phi_{0} é um vetor M x 1 de interceptos, \phi_{i} é uma matriz M x M de coeficientes e \alpha_{t} é um vetor M x 1 de erros, independentes e identicamente distribuídos, com média zero e covariância igual a \Sigma_{\alpha}.

É conveniente representar o VAR com a utilização do operador defasagem \phi (L) = I_{k} - \phi_{1} L - ... - \phi_{p} L^{p} como

(3)   \begin{equation*} \phi (L) z_{t} = \phi_{0} + \alpha_{t} \end{equation*}

Estimação de um VAR

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.

Para ilustrar, vamos considerar um exemplo envolvendo algumas variáveis bastante conhecidas:

  1. inflação mensal medida pelo IPCA;
  2. expectativas em t para t+1 para a taxa de inflação mensal;
  3. IC-br;
  4. taxa de câmbio R/US;
  5. taxa Selic anualizada;
  6. taxa de desemprego medida pela PNAD Contínua.
  7. IBC-br

Os dados são importados abaixo.

Código

Um ponto importante que devemos nos atentar, para garantir a estabilidade do modelo, é a estacionariedade das séries. O gráfico abaixo deixa isso mais claro.

Acaso o leitor aplique o Teste ADF Sequencial visto na seção anterior, verá que algumas de nossas séries não são estacionárias. Isso, como vimos, pode ser um problema para a estabilidade do nosso VAR.

Código
       ipca desocupacao       eipca      cambio       selic       ic_br 
          0           1           1           1           2           1 
  ibc_br_sa 
          1 

Assim, de modo a contornar o problema, vamos simplesmente diferenciar as séries que consideramos não estacionárias. Vejamos agora o resultado visual das séries diferenciadas.

Estimando o modelo VAR

Abaixo, são produzidos 3 modelos, cada um com determinado número de lags de acordo com diferentes critérios de informação (AIC, AICc e BIC).

Código
.model term .response estimate std.error statistic p.value
var_aicc lag(ipca,1) ipca 0.4022673 0.1082380 3.7165076 0.0003219
var_aicc lag(eipca_diff,1) ipca 0.4877298 0.2086646 2.3373860 0.0212623
var_aicc lag(selic_diff,1) ipca -0.0122650 0.1677115 -0.0731315 0.9418368
var_aicc lag(ic_br_diff,1) ipca 0.0071756 0.0036690 1.9557476 0.0530779
var_aicc lag(ibc_br_sa_diff,1) ipca 0.0185280 0.0160211 1.1564761 0.2500382
var_aicc lag(ipca,2) ipca 0.2386245 0.1347311 1.7711171 0.0793622

E geramos a previsão das variáveis conforme os gráficos abaixo:

___________________________________
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.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Análise exploratória para modelagem preditiva no Python

Antes de desenvolver bons modelos preditivos é necessário organizar e conhecer muito bem os dados. Neste artigo, damos algumas dicas de recursos, como gráficos, análises e estatísticas, que podem ser usados para melhorar o entendimento sobre os dados usando Python.

Como usar modelos do Sklearn para previsão? Uma introdução ao Skforecast

Prever séries temporais é uma tarefa frequente em diversas áreas, porém exige conhecimento e ferramentas específicas. Os modelos de machine learning do Sklearn são populadores, porém são difíceis de aplicar em estruturas temporais de dados. Neste sentido, introduzimos a biblioteca Skforecast, que integra os modelos do Sklearn e a previsão de séries temporais de forma simples.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.