Как рассчитать автокорреляцию в Python

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

Мы также можем изменить заголовок и цвет кругов, используемых на графике, с аргументами заголовка и цвета :

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 на этой странице .

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.