Как рассчитать скользящую корреляцию в пандах: с примерами


Скользящие корреляции — это корреляции между двумя временными рядами в скользящем окне. Одним из преимуществ этого типа корреляции является то, что вы можете визуализировать корреляцию между двумя временными рядами с течением времени.

В этом руководстве объясняется, как рассчитать и визуализировать скользящие корреляции для DataFrame pandas в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *