Як обчислити перехресну кореляцію в python


Перехресна кореляція — це спосіб вимірювання ступеня подібності між часовим рядом і лагованою версією іншого часового ряду.

Цей тип кореляції корисний для обчислення, оскільки він може сказати нам, чи є значення в одному часовому ряді прогнозними для майбутніх значень в іншому часовому ряді. Іншими словами, це може сказати нам, чи є один часовий ряд провідним показником для іншого часового ряду.

Цей тип кореляції використовується в багатьох різних областях, зокрема:

Підприємства. Витрати на маркетинг часто вважаються провідним індикатором майбутніх доходів бізнесу. Наприклад, якщо компанія витрачає надзвичайно високу суму грошей на маркетинг протягом одного кварталу, то загальний дохід має бути високим х кварталів пізніше.

Економіка: Індекс споживчих настроїв (CCI) вважається провідним показником валового внутрішнього продукту (ВВП) країни. Наприклад, якщо CCI високий у певному місяці, ВВП, швидше за все, буде вищим через x місяців.

У наступному прикладі показано, як обчислити взаємну кореляцію між двома часовими рядами в Python.

Приклад: як обчислити перехресну кореляцію в Python

Скажімо, ми маємо такий часовий ряд у Python, який показує загальні витрати на маркетинг (у тисячах) для певної компанії, а також загальний дохід (у тисячах) за 12 місяців поспіль:

 import numpy as np

#define data 
marketing = n.p. array ([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8])
income = np. array ([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])

Ми можемо обчислити взаємну кореляцію для кожного лага між двома часовими рядами за допомогою функції ccf() із пакета statsmodels таким чином:

 import statsmodels. api as sm

#calculate cross correlation
sm. tsa . stattools . ccf (marketing, revenue, adjusted= False )

array([ 0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
       -0.44531104, -0.49159463, -0.35783655, -0.15697476, -0.03430078,
        0.01587722, 0.0070399 ])

Ось як інтерпретувати цей результат:

  • Перехресна кореляція на лагі 0 становить 0,771 .
  • Взаємна кореляція на лаг 1 становить 0,462 .
  • Взаємна кореляція на лаг 2 становить 0,194 .
  • Перехресна кореляція на лагі 3 становить -0,061 .

І так далі.

Зверніть увагу, що кореляція між двома часовими рядами стає все менш позитивною зі збільшенням кількості лагів. Це говорить нам про те, що маркетингові витрати в певному місяці цілком прогнозують доходи через один або два місяці, але не прогнозують доходи після двох місяців.

Це має інтуїтивний сенс: ми очікуємо, що високі маркетингові витрати в певному місяці будуть прогнозом збільшення доходу протягом наступних двох місяців, але не обов’язково збільшення доходу через кілька місяців.

Додаткові ресурси

Як обчислити автокореляцію в Python
Як розрахувати часткову кореляцію в Python
Як розрахувати точково-бісеріальну кореляцію в Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *