Comment calculer une corrélation partielle en Python



En statistique, on utilise souvent le coefficient de corrélation de Pearson pour mesurer la relation linéaire entre deux variables. Cependant, nous souhaitons parfois comprendre la relation entre deux variables tout en contrôlant une troisième variable .

Par exemple, supposons que nous souhaitions mesurer l’association entre le nombre d’heures d’études d’un étudiant et la note obtenue à l’examen final, tout en contrôlant la note actuelle de l’étudiant dans la classe. Dans ce cas, nous pourrions utiliser une corrélation partielle pour mesurer la relation entre les heures étudiées et la note à l’examen final.

Ce tutoriel explique comment calculer une corrélation partielle en Python.

Exemple : corrélation partielle en Python

Supposons que nous ayons le Pandas DataFrame suivant qui affiche la note actuelle, le nombre total d’heures étudiées et la note de l’examen final pour 10 étudiants :

import numpy as np
import panda as pd

data = {'currentGrade':  [82, 88, 75, 74, 93, 97, 83, 90, 90, 80],
        'hours': [4, 3, 6, 5, 4, 5, 8, 7, 4, 6],
        'examScore': [88, 85, 76, 70, 92, 94, 89, 85, 90, 93],
        }

df = pd.DataFrame(data, columns = ['currentGrade','hours', 'examScore'])
df

   currentGrade  hours  examScore
0            82      4         88
1            88      3         85
2            75      6         76
3            74      5         70
4            93      4         92
5            97      5         94
6            83      8         89
7            90      7         85
8            90      4         90
9            80      6         93

Pour calculer la corrélation partielle entre les heures et examScore tout en contrôlant currentGrade , nous pouvons utiliser la fonction partial_corr() du package pingouin , qui utilise la syntaxe suivante :

partial_corr (données, x, y, covar)

où:

  • data : nom de la trame de données
  • x, y : noms des colonnes dans le dataframe
  • covar : le nom de la colonne de covariable dans le dataframe (par exemple la variable que vous contrôlez)

Voici comment utiliser cette fonction dans cet exemple particulier :

#install and import pingouin package 
pip install pingouin
import pingouin as pg

#find partial correlation between hours and exam score while controlling for grade
pg.partial_corr(data=df, x='hours', y='examScore', covar='currentGrade')


         n	    r	       CI95%	   r2	adj_r2	p-val	 BF10	power
pearson	10	0.191	[-0.5, 0.73]	0.036	-0.238	0.598	0.438	0.082

Nous pouvons voir que la corrélation partielle entre les heures étudiées et la note à l’examen final est de 0,191 , ce qui est une petite corrélation positive. À mesure que le nombre d’heures d’étude augmente, les résultats à l’examen ont également tendance à augmenter, en supposant que la note actuelle reste constante.

Pour calculer la corrélation partielle entre plusieurs variables à la fois, nous pouvons utiliser la fonction .pcorr() :

#calculate all pairwise partial correlations, rounded to three decimal places
df.pcorr().round(3)

	     currentGrade	hours	examScore
currentGrade	    1.000      -0.311	    0.736
hours	           -0.311	1.000	    0.191
examScore	    0.736	0.191	    1.000

La façon d’interpréter le résultat est la suivante :

  • La corrélation partielle entre la note actuelle et les heures étudiées est de -0,311 .
  • La corrélation partielle entre la note actuelle et la note à l’examen 0,736 .
  • La corrélation partielle entre les heures étudiées et la note à l’examen 0,191 .

Ajouter un commentaire

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