Автокорреляция измеряет степень сходства между временным рядом и его запаздывающей версией в течение последовательных интервалов времени.
Его также иногда называют «последовательной корреляцией» или «запаздывающей корреляцией», поскольку он измеряет взаимосвязь между текущими значениями переменной и ее историческими значениями.
Когда автокорреляция во временном ряду высока, становится легко предсказать будущие значения, просто ссылаясь на прошлые значения.
Как рассчитать автокорреляцию в Python
Предположим, у нас есть следующий временной ряд в Python, который показывает значение определенной переменной в течение 15 различных периодов времени:
#define data
x = [22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51]
Мы можем рассчитать автокорреляцию для каждого лага во временном ряду, используя функцию acf() из библиотеки 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])
Способ интерпретации вывода следующий:
- Автокорреляция при задержке 0 равна 1 .
- Автокорреляция при задержке 1 составляет 0,8317 .
- Автокорреляция при задержке 2 составляет 0,6563 .
- Автокорреляция при задержке 3 составляет 0,4910 .
И так далее.
Мы также можем указать количество лагов для использования с аргументом nlags :
sm.tsa.acf(x, nlags= 5 )
array([1.0, 0.83174224, 0.65632458, 0.49105012, 0.27863962, 0.03102625])
Как построить функцию автокорреляции в Python
Мы можем построить функцию автокорреляции для временного ряда в Python, используя функцию tsaplots.plot_acf() из библиотеки statsmodels:
from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt
#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags=10)
plt.show()

По оси X отображается количество задержек, а по оси Y — автокорреляция при этом количестве задержек. По умолчанию график начинается с запаздывания = 0, а автокорреляция всегда будет равна 1 при запаздывании = 0.
Мы также можем увеличить первые несколько задержек, выбрав использование меньшего количества задержек с помощью аргумента lags :
from statsmodels.graphics import tsaplots
import matplotlib.pyplot as plt
#plot autocorrelation function
fig = tsaplots.plot_acf(x, lags= 5 )
plt.show()

Мы также можем изменить заголовок и цвет кругов, используемых на графике, с аргументами заголовка и цвета :
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()

Вы можете найти больше руководств по Python на этой странице .