Jak obliczyć kroczącą korelację w pandach: z przykładami


Korelacje kroczące to korelacje pomiędzy dwoma szeregami czasowymi w przesuwającym się oknie. Jedną z zalet tego typu korelacji jest możliwość wizualizacji korelacji między dwoma szeregami czasowymi w czasie.

W tym samouczku wyjaśniono, jak obliczyć i wizualizować kroczące korelacje dla ramki DataFrame pandy w języku Python.

Jak obliczyć kroczące korelacje w pandach

Załóżmy, że mamy następującą ramkę danych, która wyświetla całkowitą liczbę produktów sprzedanych dla dwóch różnych produktów ( x i y ) w okresie 15 miesięcy:

 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

Aby obliczyć kroczącą korelację w pandach, możemy użyć funkcji Rolling.corr() .

Ta funkcja używa następującej składni:

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

Złoto:

  • df: nazwa ramki danych
  • szerokość: Liczba całkowita określająca szerokość okna dla korelacji przesuwnej
  • x, y: nazwy dwóch kolumn, pomiędzy którymi ma zostać obliczona korelacja ruchoma

Oto jak użyć tej funkcji do obliczenia 3-miesięcznej kroczącej korelacji sprzedaży pomiędzy produktem x i produktem 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

Funkcja ta zwraca korelację pomiędzy sprzedażą dwóch produktów w ciągu ostatnich 3 miesięcy. Na przykład:

  • Korelacja sprzedaży w miesiącach 1-3 wyniosła 0,654654 .
  • Korelacja sprzedaży w miesiącach 2-4 wyniosła -0,693375.
  • Korelacja sprzedaży w miesiącach 3-5 wyniosła -0,240192.

I tak dalej.

Możemy łatwo dostosować tę formułę, aby obliczyć korelację kroczącą dla innego okresu. Na przykład poniższy kod pokazuje, jak obliczyć sześciomiesięczną kroczącą korelację sprzedaży między dwoma produktami:

 #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

Funkcja ta zwraca korelację pomiędzy sprzedażą dwóch produktów w ciągu ostatnich 6 miesięcy. Na przykład:

  • Korelacja sprzedaży w miesiącach 1-6 wyniosła 0,558742 .
  • Korelacja sprzedaży w miesiącach 2-7 wyniosła 0,485855.
  • Korelacja sprzedaży w miesiącach 3-8 wyniosła 0,693103.

I tak dalej.

Uwagi

Oto kilka uwag na temat funkcji użytych w tych przykładach:

  • Aby można było obliczyć korelacje, szerokość (tj. rozwijanego okna) musi być równa lub większa niż 3.
  • Pełną dokumentację funkcji Rolling.corr() można znaleźć tutaj .

Dodatkowe zasoby

Jak obliczyć korelację przesuwną w R
Jak obliczyć korelację kroczącą w programie Excel

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *