Y a-t-il une corrélation entre mes variables ?

 

L’une des étapes les plus importantes dans un projet de data science est celle qui vient juste avant l’élaboration du modèle. Si on devait se rapporter au modèle CRISP-DM énoncé dans l’article Qu’est-ce que la data science, cette étape correspondrait au « Data understanding ». Il s’agit ici de regarder comment se comportent les différentes variables du jeu de données, à travers des graphes et quelques statistiques par exemple, afin de trouver des patterns ou identifier une corrélation entre différentes variables.

Corrélation

Une corrélation est une relation qu’il y a entre différentes variables. Ce lien peut venir du fait qu’une variable dépende d’une autre variable ou que les deux variables dépendent toutes les deux d’une variable non prise en compte dans vos études, …

Dans tous les cas il est important d’identifier les interdépendances entre variables avant l’élaboration du modèle. Car cela peut vous guider dans le choix du modèle (Certains modèles se voient biaisés quand ils s’appliquent à des variables interdépendantes par exemple).

Dans cet article nous intéresseront au cas particulier de la corrélation linéaire. Nous introduirons indicateur très intéressant appelé Coefficient de Pearson.

Coefficient de Pearson

Le coefficient de Pearson ou Pearson r est une mesure qui exprime à quel point deux variables sont linéairement corrélées. Il est égale au quotient de la covariance des deux variables et du produit des deux écarts-types. Soit :

 

ρX,Y=covX,YσXσY

Il s’agit donc d’un nombre réel compris entre -1 et 1. Et il interprète comme suit :

  • ρX,Y=0  Il n’y a PAS du tout de corrélation entre X et Y
  • ρX,Y=1  Il y a corrélation totale positive entre X et Y (X et Y sont liées et évoluent dans le même sens)
  • ρX,Y=1  Il y a corrélation totale négative entre X et Y (X et Y sont liées mais évoluent en sens opposés)

X et Y sont d’autant plus corrélées positivement (resp. négativement) que

ρX,Y

est proche de 1 (resp. -1).

On considère, en général, que X et Y sont corrélées lorsque la valeur de leur Pearson r est supérieur à 0.5 ou inférieur à -0.5.

Calculer le coefficient de Pearson avec Python

On peut calculer le coefficient de Pearson en appliquant la formule avec Numpy ou en pur Python mais il existe une fonction pearsonr(x,y) de Scipy.stats.

Faisons un exemple rapide. Commençons par générer deux distributions, l’une à partir de l’autre.

import matplotlib.pyplot as plt
from numpy.random import randn

# On génère deux variables linéairement liées
x = 20*randn(1000)+10
y = x + (10*randn(1000)+5)
# On fait un plot de x en fonction de y
plt.scatter(x,y)

Courbe de y en fonction de x

Sur le graphe on voit clairement que x et y sont liés linéairement. Maintenant regardons de combien est le coefficient de Pearson pour notre couple de variables.

 

from scipy.stats import pearsonr
coeff_pearson,_ = pearsonr(x,y)
print("coefficient de Pearson = {}".format(coeff_pearson)

coefficient de Pearson : 0.9036690415080123

Le résultat obtenu est ce à quoi on s’attendait. Les deux variables ont une très forte corrélation.

Ceci est juste une présentation de la fonction. Vous pouvez utiliser un vrai dataset avec plusieurs variables et calculer le Pearson r pour tous les couples de variable afin de former une matrice de corrélation qu’il peut être très intéressant de regarder.

Conclusion

Rechercher des éventuelles corrélations entres les différentes distributions du  jeu de données et très important. Vu qu’il peut être un indicateur pertinent dans le choix du modèle. Une corrélation peut se voir à travers de simples graphes, mais peut aussi être peu évidente à remarquer. Il existe plusieurs indicateurs permettant de les détecter par le calcul. Le coefficient de Pearson permet de détecter une corrélation linéaire. Mais il existe d’autres indicateurs comme le coefficient de Spearman, par exemple, pour les corrélations non-linéaires. La bibliothèque Scipy offre des fonctions simples et très utiles pour calculer ce genre d’indicateurs.

 

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.