Как рассчитать автокорреляцию в 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() 

Функция автокорреляции в Python

По оси 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() 

Построение функции автокорреляции в Python

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *