Comment calculer la corrélation en Python
Une façon de quantifier la relation entre deux variables consiste à utiliser le coefficient de corrélation de Pearson , qui est une mesure de l’association linéaire entre deux variables . Il prend toujours une valeur comprise entre -1 et 1 où :
- -1 indique une corrélation linéaire parfaitement négative entre deux variables
- 0 indique aucune corrélation linéaire entre deux variables
- 1 indique une corrélation linéaire parfaitement positive entre deux variables
Plus le coefficient de corrélation s’éloigne de zéro, plus la relation entre les deux variables est forte.
Ce tutoriel explique comment calculer la corrélation entre les variables en Python.
Comment calculer la corrélation en Python
Pour calculer la corrélation entre deux variables en Python, on peut utiliser la fonction 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. ]]
On peut voir que le coefficient de corrélation entre ces deux variables est de 0,335 , ce qui est une corrélation positive.
Par défaut, cette fonction produit une matrice de coefficients de corrélation. Si l’on voulait uniquement renvoyer le coefficient de corrélation entre les deux variables, on pourrait utiliser la syntaxe suivante :
np.corrcoef(var1, var2)[0,1] 0.335
Pour tester si cette corrélation est statistiquement significative, nous pouvons calculer la valeur p associée au coefficient de corrélation de Pearson en utilisant la fonction Scipy pearsonr() , qui renvoie le coefficient de corrélation de Pearson ainsi que la valeur p bilatérale.
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
Le coefficient de corrélation est de 0,335 et la valeur p bilatérale est de 0,017 . Puisque cette valeur p est inférieure à 0,05, nous conclurions qu’il existe une corrélation statistiquement significative entre les deux variables.
Si vous souhaitez calculer la corrélation entre plusieurs variables dans un Pandas DataFrame, vous pouvez simplement utiliser la fonction .corr() .
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data A B C 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() A B C A 1.000000 -0.775567 -0.493769 B -0.775567 1.000000 0.000000 C -0.493769 0.000000 1.000000
Et si vous souhaitez uniquement calculer la corrélation entre deux variables spécifiques dans le DataFrame, vous pouvez spécifier les variables :
data['A'].corr(data['B']) -0.775567
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes en Python :
Comment créer une matrice de corrélation en Python
Comment calculer la corrélation de rang Spearman en Python
Comment calculer l’autocorrélation en Python