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()
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()
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()
Você pode encontrar mais tutoriais de Python nesta página .