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