Funções de autocorrelação: o que são e como interpretar

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.

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.
Autocorrelação: a série original e a mesma série deslocada um mês, com o par de valores que entra no cálculo destacado
A série é comparada com uma cópia dela mesma, deslocada no tempo. Cada par de valores entra no cálculo do coeficiente.
Usualmente, utilizam-se duas medidas para o cálculo da autocorrelação: a Função de Autocorrelação (FAC/ACF) e a Função de Autocorrelação Parcial (FACP/PACF), que exploraremos melhor adiante. Também é importante notar que a autocorrelação aqui só mede a relação linear entre duas variáveis. Variáveis que se relacionam de forma não linear não podem ser captadas corretamente, sendo necessário utilizar medidas apropriadas para analisar essas relações.

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) é:
rk = TΣt=k+1(yt − ȳ)(yt−k − ȳ)TΣt=1(yt − ȳ)2
onde t representa o índice no tempo da observação da variável; T é o tamanho da série temporal; yt são os valores individuais das observações em cada ponto do tempo t da variável em questão; e ȳ é a média amostral de y. No caso, teremos diversos coeficientes de autocorrelação de tamanho k. Por exemplo, r1 mede a relação entre yt e yt−1, r2 mede a relação entre yt e yt−2, e assim por diante. A imagem abaixo ilustra bem o caso.
Gráficos de dispersão da autocorrelação nas defasagens de 1 e 6 meses, com os coeficientes r1 igual a 0,94 e r6 igual a 0,56
Cada defasagem produz um gráfico de dispersão, e a dispersão dos pontos em torno da reta é o que o coeficiente resume em um número.

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.
Para o caso do R, utilizaremos o framework do 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")
Correlograma da ACF do IPCA em R, com picos nas defasagens múltiplas de 12 meses
Correlograma do IPCA, em R. Fonte: BCB e IBGE.
Correlograma da ACF da Selic em R, com decaimento lento típico de série com tendência
Correlograma da Selic, em R. Fonte: BCB.

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()
Correlograma da ACF do IPCA em Python com statsmodels
Correlograma do IPCA, em Python. Fonte: BCB e IBGE.
Correlograma da ACF da Selic em Python com statsmodels
Correlograma da Selic, em Python. Fonte: BCB.
Vejam que, a partir do cálculo do ACF, é possível criar uma visualização dos coeficientes estimados, úteis para compreender a medida. Esse gráfico é conhecido como correlograma. Nos gráficos acima, além dos coeficientes para cada defasagem, encontramos uma linha traçada ou um sombreado, indicando a significância estatística de que a correlação é diferente de zero. Os dois primeiros coeficientes de cada série já resumem a diferença entre elas. No IPCA, r1 = 0,59 e r2 = 0,35: a memória cai rápido. Na Selic, r1 = 0,94 e r2 = 0,94: a série quase não esquece o passado recente.

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.
Três correlogramas comparados: série com tendência decaindo devagar, série com sazonalidade com picos a cada 12 meses e série sem memória dentro da faixa de significância
O formato do correlograma identifica o que a série tem dentro: tendência, sazonalidade ou ausência de memória.
Nos casos acima, vemos uma forte tendência para a Selic, em que há um decaimento lento dos valores. Para o IPCA fica claro o padrão sazonal, visto que as defasagens próximas de 6 meses possuem valores de correlação próximos de 0 (ou mesmo negativos), enquanto as defasagens próximas de 12 meses possuem uma correlação positiva. Essa leitura tem consequência prática: a Selic, com decaimento lento, é candidata a série não estacionária, e o padrão sazonal do IPCA costuma pedir ajuste sazonal antes da modelagem. Os correlogramas também orientam a escolha das defasagens em um modelo ARIMA.

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.

Conhecer o AM Black →

Referências

Hyndman, R. & Athanasopoulos, G. (2021). Forecasting: Principles and Practice, 3rd ed. OTexts.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp