Як обчислити перехресну кореляцію в 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