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