Como calcular a autocorrelação em python


A autocorrelação mede o grau de similaridade entre uma série temporal e uma versão defasada dela mesma em intervalos de tempo sucessivos.

Às vezes também é chamada de “correlação serial” ou “correlação defasada” porque mede a relação entre os valores atuais de uma variável e seus valores históricos.

Quando a autocorrelação em uma série temporal é alta, torna-se fácil prever valores futuros simplesmente referindo-se a valores passados.

Como calcular a autocorrelação em Python

Suponha que temos a seguinte série temporal em Python que mostra o valor de uma determinada variável para 15 períodos diferentes:

 #define data
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]

Podemos calcular a autocorrelação para cada atraso na série temporal usando a função acf() da biblioteca statsmodels:

 import statsmodels.api as sm

#calculate autocorrelations
sm.tsa.acf(x)

array([ 1. , 0.83174224, 0.65632458, 0.49105012, 0.27863962,
        0.03102625, -0.16527446, -0.30369928, -0.40095465, -0.45823389,
       -0.45047733])

A forma de interpretar o resultado é a seguinte:

  • A autocorrelação no atraso 0 é 1 .
  • A autocorrelação no atraso 1 é 0,8317 .
  • A autocorrelação no atraso 2 é 0,6563 .
  • A autocorrelação no atraso 3 é 0,4910 .

E assim por diante.

Também podemos especificar o número de defasagens a serem usadas com o argumento nlags :

 sm.tsa.acf(x, nlags= 5 )

array([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])

Como traçar a função de autocorrelação em Python

Podemos traçar a função de autocorrelação para uma série temporal em Python usando a função tsaplots.plot_acf() da biblioteca statsmodels:

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags=10)
plt.show() 

Função de autocorrelação em Python

O eixo x exibe o número de defasagens e o eixo y exibe a autocorrelação nesse número de defasagens. Por padrão, o gráfico começa em lag = 0 e a autocorrelação sempre será 1 em lag = 0.

Também podemos ampliar os primeiros atrasos escolhendo usar menos atrasos com o argumento lags :

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5 )
plt.show() 

Plotando função de autocorrelação em Python

Você também pode alterar o título e a cor dos círculos usados no gráfico com os argumentos título e cor :

 from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt

#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5, color='g', title='Autocorrelation function' )
plt.show() 

Função de autocorrelação em Python com título personalizado

Você pode encontrar mais tutoriais de Python nesta página .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *