Как рассчитать автокорреляцию в python
Автокорреляция измеряет степень сходства между временным рядом и его запаздывающей версией на протяжении последовательных временных интервалов.
Ее также иногда называют «серийной корреляцией» или «корреляцией с запаздыванием», поскольку она измеряет взаимосвязь между текущими значениями переменной и ее историческими значениями.
Когда автокорреляция во временном ряду высока, становится легко предсказать будущие значения, просто ссылаясь на прошлые значения.
Как рассчитать автокорреляцию в 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()
Вы также можете изменить заголовок и цвет кругов, используемых на графике, с помощью аргументов title и color :
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 вы можете найти на этой странице .