Як розрахувати ковзну кореляцію в пандах: з прикладами


Кореляційні кореляції — це кореляції між двома часовими рядами в ковзному вікні. Одна з переваг цього типу кореляції полягає в тому, що ви можете візуалізувати кореляцію між двома часовими рядами з часом.

Цей підручник пояснює, як обчислити та візуалізувати ковзаючі кореляції для pandas DataFrame у Python.

Як розрахувати кореляцію обертання в пандах

Припустімо, що ми маємо наступний кадр даних, який відображає загальну кількість проданих продуктів для двох різних продуктів ( x і y ) за 15-місячний період:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd.DataFrame({'month': np. arange (1, 16),
                   'x': [13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20],
                   'y': [22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28]})

#view first six rows
df. head ()

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

Щоб обчислити змінну кореляцію в pandas, ми можемо використати функцію Rolling.corr() .

Ця функція використовує такий синтаксис:

df[‘x’].rolling(width).corr(df[‘y’])

золото:

  • df: ім’я кадру даних
  • ширина: ціле число, що визначає ширину вікна для ковзної кореляції
  • x, y: назви двох стовпців для обчислення ковзної кореляції між ними

Ось як використовувати цю функцію для обчислення 3-місячної ковзної кореляції продажів між продуктом x і продуктом y :

 #calculate 3-month rolling correlation between sales for x and y
df[' x ']. rolling (3). corr (df[' y '])

0 NaN
1 NaN
2 0.654654
3 -0.693375
4 -0.240192
5 -0.802955
6 0.802955
7 0.960769
8 0.981981
9 0.654654
10 0.882498
11 0.817057
12 -0.944911
13 -0.327327
14 -0.188982
dtype:float64

Ця функція повертає кореляцію між продажами двох продуктів за попередні 3 місяці. Наприклад:

  • Кореляція продажів у 1-3 місяці становила 0,654654 .
  • Кореляція продажів у місяці 2-4 становила -0,693375.
  • Кореляція продажів у місяці 3-5 становила -0,240192.

І так далі.

Ми можемо легко налаштувати цю формулу, щоб обчислити змінну кореляцію для іншого періоду часу. Наприклад, у наведеному нижче коді показано, як обчислити 6-місячну змінну кореляцію продажів між двома продуктами:

 #calculate 6-month rolling correlation between sales for x and y
df[' x ']. rolling (6). corr (df[' y ']) 
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 0.558742
6 0.485855
7 0.693103
8 0.756476
9 0.895929
10 0.906772
11 0.715542
12 0.717374
13 0.768447
14 0.454148
dtype:float64

Ця функція повертає кореляцію між двома продажами продукту за попередні 6 місяців. Наприклад:

  • Кореляція продажів у місяцях 1-6 становила 0,558742 .
  • Кореляція продажів у місяці 2-7 становила 0,485855.
  • Кореляція продажів у місяці 3-8 становила 0,693103.

І так далі.

Коментарі

Ось деякі примітки щодо функцій, які використовуються в цих прикладах:

  • Ширина (тобто розкривне вікно) має дорівнювати або перевищувати 3, щоб обчислити кореляції.
  • Ви можете знайти повну документацію для функції Rolling.corr() тут .

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

Як розрахувати ковзну кореляцію в R
Як обчислити змінну кореляцію в Excel

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

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