Як обчислити автокореляцію в 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()
На осі абсцис відображається кількість затримок, а на осі у – автокореляція при цій кількості затримок. За замовчуванням графік починається з відставання = 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 на цій сторінці .