Como calcular a correlação em python


Uma forma de quantificar a relação entre duas variáveis é utilizar o coeficiente de correlação de Pearson , que é uma medida da associação linear entre duas variáveis . Sempre assume um valor entre -1 e 1 onde:

  • -1 indica uma correlação linear perfeitamente negativa entre duas variáveis
  • 0 indica nenhuma correlação linear entre duas variáveis
  • 1 indica uma correlação linear perfeitamente positiva entre duas variáveis

Quanto mais longe o coeficiente de correlação estiver de zero, mais forte será a relação entre as duas variáveis.

Este tutorial explica como calcular a correlação entre variáveis em Python.

Como calcular a correlação em Python

Para calcular a correlação entre duas variáveis em Python, podemos usar a função Numpy corrcoef() .

 import numpy as np

np.random.seed(100)

#create array of 50 random integers between 0 and 10
var1 = np.random.randint(0, 10, 50)

#create a positively correlated array with some random noise
var2 = var1 + np.random.normal(0, 10, 50)

#calculate the correlation between the two arrays
np.corrcoef(var1, var2)

[[ 1. 0.335]
[ 0.335 1. ]]

Percebe-se que o coeficiente de correlação entre essas duas variáveis é 0,335 , o que é uma correlação positiva.

Por padrão, esta função produz uma matriz de coeficientes de correlação. Se quiséssemos apenas retornar o coeficiente de correlação entre as duas variáveis, poderíamos usar a seguinte sintaxe:

 np.corrcoef(var1, var2)[0,1]

0.335

Para testar se essa correlação é estatisticamente significativa, podemos calcular o valor p associado ao coeficiente de correlação de Pearson usando a função Scipy pearsonr() , que retorna o coeficiente de correlação de Pearson, bem como o valor p bicaudal.

 from scipy.stats.stats import pearsonr

pearsonr(var1, var2)

(0.335, 0.017398)

O coeficiente de correlação é 0,335 e o valor p bicaudal é 0,017 . Como este valor de p é inferior a 0,05, concluiríamos que existe uma correlação estatisticamente significativa entre as duas variáveis.

Se você deseja calcular a correlação entre múltiplas variáveis em um DataFrame do Pandas, você pode simplesmente usar a função .corr() .

 import pandas as pd

data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C'])
data

  ABC
0 8 0 9
1 4 0 7
2 9 6 8
3 1 8 1
4 8 0 8

#calculate correlation coefficients for all pairwise combinations
data.corr()

          ABC
A 1.000000 -0.775567 -0.493769
B -0.775567 1.000000 0.000000
C -0.493769 0.000000 1.000000

E se quiser apenas calcular a correlação entre duas variáveis específicas no DataFrame, você pode especificar as variáveis:

 data['A'].corr(data['B'])

-0.775567

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em Python:

Como criar uma matriz de correlação em Python
Como calcular a correlação de classificação de Spearman em Python
Como calcular a autocorrelação em Python

Add a Comment

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