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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *