A análise de correlação desempenha um papel importante na análise de séries temporais, dado que pode ser útil como indicativo de relação entre os valores passados de uma variável.
Neste artigo, vamos apresentar o conceito de autocorrelação na estatística, avaliar sua aplicabilidade no mundo real, verificar como estimar e interpretar e, por fim, vamos ver como aplicar a análise de autocorrelação com dados macro-financeiros do Brasil, usando as linguagens de programação R e Python.O que é autocorrelação?
Na análise de séries temporais, a autocorrelação é qualquer relação estatística, causal ou não, entre os valores passados e os valores presentes de uma variável aleatória. Mas o que isso significa? Em termos técnicos, a autocorrelação mede a correlação entre os valores de uma série de dados e seus próprios valores defasados no tempo (valor da observação no índice t contra o índice t−1, t−2, t−3 …). Em outras palavras, a autocorrelação avalia a relação entre observações consecutivas em uma série temporal.
Quando usar a autocorrelação?
A autocorrelação possui uma especificidade maior que a correlação, visto que se pretende analisar a relação de uma série temporal com ela mesma. Entretanto, apesar de estar em um nicho mais estreito, o seu uso é de extrema importância, pois pode auxiliar a encontrar padrões importantes e auxiliar na montagem de modelos estatísticos. Alguns exemplos:- Finanças: a autocorrelação é frequentemente usada para analisar séries temporais financeiras. Ela ajuda a identificar padrões e tendências nos retornos dos ativos financeiros, permitindo a construção de modelos de previsão e de volatilidade.
- Economia: permite avaliar se existe alguma inércia em determinada variável, como por exemplo na identificação da inércia inflacionária. Além disso, auxilia a analisar modelos econométricos, permitindo encontrar tendências e sazonalidade em séries temporais.
- Meteorologia e Ciências Ambientais: auxilia a analisar dados climáticos e ambientais, como temperaturas, precipitação e níveis de poluentes ao longo do tempo. Isso ajuda a identificar padrões sazonais, tendências de longo prazo e fenômenos climáticos recorrentes, como El Niño e La Niña.
- Processamento de Sinais: a autocorrelação é amplamente utilizada no processamento de sinais para análise e detecção de padrões. Por exemplo, na área de telecomunicações, a autocorrelação é usada para estimar atrasos de propagação de sinais em um canal de comunicação e para a detecção de sinais periódicos.
Como calcular a correlação entre duas variáveis?
Existem dois métodos diferentes de medir a autocorrelação: o ACF e o PACF. Vamos verificar o primeiro caso. A FAC mede a relação linear e é comumente denotada com os símbolos ρk (rho) ou rk, para medir o grau de correlação de uma observação passada com o valor presente, em que o índice k representa o número da defasagem. A FAC pode ser calculada pela divisão da covariância dos valores presentes e dos valores da defasagem pelo desvio padrão. A fórmula matemática para calcular o ACF (rk) é:
Como interpretar o valor da autocorrelação?
O coeficiente de autocorrelação pode assumir valores na mesma medida que o coeficiente de correlação de Pearson. Portanto, implica que a correlação entre os valores passados pode ser negativa, positiva ou nula, além de indicar, informalmente, a força da relação linear. Podemos indicar o guia de mensuração do grau de autocorrelação:- ±0,9 a ±1 indica correlação muito forte
- ±0,7 a ±0,9 indica correlação forte
- ±0,5 a ±0,7 indica correlação moderada
- ±0,3 a ±0,5 indica correlação fraca
- ±0,3 a 0 indica correlação desprezível ou nula
Exemplo prático: correlação entre variáveis macro-financeiras
Para fixar o conhecimento de forma aplicada usando ferramentas práticas de linguagem de programação, abaixo calculamos o coeficiente de autocorrelação das variáveis "taxa de juros Selic" e "taxa de inflação IPCA", período 2005 a 2023. A fonte dos dados é o BCB e o IBGE.📩 O método por trás, todo dia
Este exercício é um recorte. No Boletim AM eu mostro estatística, econometria e IA aplicadas à economia, ao mercado financeiro e à análise de dados, com dado real e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.Tidyverts, uma família de pacotes que facilita a criação de análise e previsão de séries temporais. No Python, veremos como construir através do uso de funções da biblioteca statsmodels.
R
# Carregar pacotes
library(rbcb) # dados do Banco Central
library(dplyr) # manipulação de dados
library(tsibble) # séries temporais em formato tidy
library(feasts) # cálculo de ACF e PACF
library(fabletools) # gráficos das funções de autocorrelação
# Coleta da Selic (código 4390 no SGS do BCB)
selic <- rbcb::get_series(
code = c("selic" = 4390),
start_date = "2005-01-01",
end_date = "2023-01-01"
) |>
dplyr::mutate(date = tsibble::yearmonth(date)) |> # data vira mês/ano
tsibble::as_tsibble(index = date) # declara o índice de tempo
# Coleta do IPCA (código 433 no SGS do BCB)
ipca <- rbcb::get_series(
code = c("ipca" = 433),
start_date = "2005-01-01",
end_date = "2023-01-01"
) |>
dplyr::mutate(date = tsibble::yearmonth(date)) |> # data vira mês/ano
tsibble::as_tsibble(index = date) # declara o índice de tempo
# Coeficientes de autocorrelação do IPCA, até 24 defasagens
feasts::ACF(ipca, y = ipca, lag_max = 24)
# O correlograma do IPCA
feasts::ACF(ipca, y = ipca, lag_max = 24) |>
fabletools::autoplot() +
ggplot2::labs(title = "ACF IPCA")
# Coeficientes de autocorrelação da Selic, até 24 defasagens
feasts::ACF(selic, y = selic, lag_max = 24)
# O correlograma da Selic
feasts::ACF(selic, y = selic, lag_max = 24) |>
fabletools::autoplot() +
ggplot2::labs(title = "ACF Selic")
Python
# Importar bibliotecas
import numpy as np # operações numéricas
from bcb import sgs # dados do Banco Central
import statsmodels.api as sm # funções de autocorrelação
import matplotlib.pyplot as plt # gráficos
# Coleta das duas séries de uma vez (códigos do SGS)
tabela = sgs.get(
codes = {"selic": 4390, "ipca": 433},
start = "2005-01-01",
end = "2023-01-01"
)
# Coeficientes de autocorrelação do IPCA, até 24 defasagens
sm.tsa.stattools.acf(tabela.ipca.values, nlags = 24)
# O correlograma do IPCA
sm.graphics.tsa.plot_acf(tabela.ipca.values, lags = 24)
plt.xlabel("Defasagem")
plt.ylabel("Autocorrelação")
plt.title("Gráfico de Autocorrelação — IPCA")
plt.show()
# Coeficientes de autocorrelação da Selic, até 24 defasagens
sm.tsa.stattools.acf(tabela.selic.values, nlags = 24)
# O correlograma da Selic
sm.graphics.tsa.plot_acf(tabela.selic.values, lags = 24)
plt.xlabel("Defasagem")
plt.ylabel("Autocorrelação")
plt.title("Gráfico de Autocorrelação — Selic")
plt.show()
Tendência e Sazonalidade
Quando os dados têm uma tendência, as autocorrelações para pequenas defasagens tendem a ser grandes e positivas, porque as observações próximas no tempo também têm valores próximos. Portanto, o ACF de uma série temporal com tendência tende a ter valores positivos que diminuem lentamente à medida que as defasagens aumentam. Quando os dados são sazonais, as autocorrelações serão maiores para as defasagens sazonais (em múltiplos do período sazonal) do que para outras defasagens. Quando os dados são de tendência e sazonais, existe uma combinação desses efeitos.
Conclusão
Neste artigo, apresentamos o conceito de autocorrelação, avaliamos sua aplicabilidade no mundo real, verificamos como estimar e interpretar o coeficiente e, por fim, aplicamos a análise de autocorrelação com dados macro-financeiros do Brasil, usando as linguagens de programação R e Python.Da exploração ao modelo de previsão
Ler o correlograma é o primeiro passo; o seguinte é modelar. O AM Black é a assinatura anual que dá acesso a todos os cursos da Análise Macro, em R e em Python, da estatística descritiva à econometria de séries temporais.
Referências
Hyndman, R. & Athanasopoulos, G. (2021). Forecasting: Principles and Practice, 3rd ed. OTexts.