Como calcular a correlação rolante em pandas: com exemplos


Correlações rolantes são correlações entre duas séries temporais em uma janela deslizante. Um dos benefícios desse tipo de correlação é que você pode visualizar a correlação entre duas séries temporais ao longo do tempo.

Este tutorial explica como calcular e visualizar correlações contínuas para um DataFrame do pandas em Python.

Como calcular correlações rolantes em pandas

Suponha que temos o seguinte quadro de dados que exibe o número total de produtos vendidos para dois produtos diferentes ( x e y ) durante um período de 15 meses:

 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

Para calcular uma correlação contínua em pandas, podemos usar a função Rolling.corr() .

Esta função usa a seguinte sintaxe:

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

Ouro:

  • df: nome do quadro de dados
  • largura: número inteiro que especifica a largura da janela para correlação deslizante
  • x, y: os dois nomes de colunas para calcular a correlação móvel entre

Veja como usar esta função para calcular a correlação contínua de vendas de 3 meses entre o produto x e o produto 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

Esta função retorna a correlação entre as vendas de dois produtos nos 3 meses anteriores. Por exemplo:

  • A correlação das vendas nos meses 1-3 foi de 0,654654 .
  • A correlação de vendas nos meses 2 a 4 foi de -0,693375.
  • A correlação de vendas nos meses 3 a 5 foi de -0,240192.

E assim por diante.

Podemos ajustar facilmente esta fórmula para calcular a correlação contínua para um período de tempo diferente. Por exemplo, o código a seguir mostra como calcular a correlação contínua de vendas de 6 meses entre os dois produtos:

 #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

Esta função retorna a correlação entre as vendas dos dois produtos nos 6 meses anteriores. Por exemplo:

  • A correlação das vendas nos meses 1 a 6 foi de 0,558742 .
  • A correlação de vendas nos meses 2 a 7 foi de 0,485855.
  • A correlação de vendas nos meses 3 a 8 foi de 0,693103.

E assim por diante.

Comentários

Aqui estão algumas notas sobre as funções usadas nestes exemplos:

  • A largura (ou seja, janela suspensa) deve ser igual ou superior a 3 para calcular correlações.
  • Você pode encontrar a documentação completa da função Rolling.corr() aqui .

Recursos adicionais

Como calcular a correlação deslizante em R
Como calcular a correlação rolante no Excel

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *