Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment trouver la valeur P du coefficient de corrélation chez les pandas



Le coefficient de corrélation de Pearson peut être utilisé pour mesurer l’association linéaire entre deux variables.

Ce coefficient de corrélation prend toujours une valeur comprise entre -1 et 1 où :

  • -1 : Corrélation linéaire parfaitement négative entre deux variables.
  • 0 : Aucune corrélation linéaire entre deux variables.
  • 1 : Corrélation linéaire parfaitement positive entre deux variables.

Pour déterminer si un coefficient de corrélation est statistiquement significatif, vous pouvez calculer le score t et la valeur p correspondants.

La formule pour calculer le t-score d’un coefficient de corrélation (r) est :

t = r√ n-2 / √ 1-r 2

La valeur p est calculée comme la valeur p bilatérale correspondante pour la distribution t avec n-2 degrés de liberté.

Pour calculer la valeur p d’un coefficient de corrélation de Pearson chez les pandas, vous pouvez utiliser la fonction pearsonr() de la bibliothèque SciPy :

from scipy.stats import pearsonr

pearsonr(df['column1'], df['column2'])

Cette fonction renverra le coefficient de corrélation de Pearson entre les colonnes colonne1 et colonne2 ainsi que la valeur p correspondante qui nous indique si le coefficient de corrélation est statistiquement significatif ou non.

Si vous souhaitez calculer la valeur p pour le coefficient de corrélation de Pearson de chaque combinaison possible de colonnes par paire dans un DataFrame, vous pouvez utiliser la fonction personnalisée suivante pour ce faire :

def r_pvalues(df):
    cols = pd.DataFrame(columns=df.columns)
    p = cols.transpose().join(cols, how='outer')
    for r in df.columns:
        for c in df.columns:
            tmp = df[df[r].notnull() & df[c].notnull()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

Les exemples suivants montrent comment calculer les valeurs p pour les coefficients de corrélation en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'x': [4, 5, 5, 7, 8, 10, 12, 13, 14, 15],
                   'y': [10, 12, 14, 18, np.nan, 19, 13, 20, 14, np.nan],
                   'z': [20, 24, 24, 23, 19, 15, 18, 14, 10, 12]})

#view DataFrame
print(df)

    x     y   z
0   4  10.0  20
1   5  12.0  24
2   5  14.0  24
3   7  18.0  23
4   8   NaN  19
5  10  19.0  15
6  12  13.0  18
7  13  20.0  14
8  14  14.0  10
9  15   NaN  12

Exemple 1 : Calculer la valeur P pour le coefficient de corrélation entre deux colonnes dans Pandas

Le code suivant montre comment calculer le coefficient de corrélation de Pearson et la valeur p correspondante pour les colonnes x et y du DataFrame :

from scipy.stats import pearsonr

#drop all rows with NaN values
df_new = df.dropna()

#calculation correlation coefficient and p-value between x and y
pearsonr(df_new['x'], df_new['y'])

PearsonRResult(statistic=0.4791621985883838, pvalue=0.22961622926360523)

À partir du résultat, nous pouvons voir :

  • Le coefficient de corrélation de Pearson est de 0,4792 .
  • La valeur p correspondante est de 0,2296 .

Puisque le coefficient de corrélation est positif, cela indique qu’il existe une relation linéaire positive entre les deux variables.

Cependant, puisque la valeur p du coefficient de corrélation n’est pas inférieure à 0,05, la corrélation n’est pas statistiquement significative.

Notez que nous pouvons également utiliser la syntaxe suivante pour extraire la valeur p du coefficient de corrélation :

#extract p-value of correlation coefficient
pearsonr(df_new['x'], df_new['y'])[1]

0.22961622926360523

La valeur p pour le coefficient de corrélation est de 0,2296 .

Cela correspond à la valeur p de la sortie précédente.

Exemple 2 : Calculer la valeur P pour le coefficient de corrélation entre toutes les colonnes de Pandas

Le code suivant montre comment calculer le coefficient de corrélation de Pearson et la valeur p correspondante pour chaque combinaison par paire de colonnes dans le DataFrame pandas :

#create function to calculate p-values for each pairwise correlation coefficient
def r_pvalues(df):
    cols = pd.DataFrame(columns=df.columns)
    p = cols.transpose().join(cols, how='outer')
    for r in df.columns:
        for c in df.columns:
            tmp = df[df[r].notnull() & df[c].notnull()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

#use custom function to calculate p-values
r_pvalues(df)

             x	     y	     z
x	   0.0	0.2296	0.0005
y	0.2296	   0.0	0.4238
z	0.0005	0.4238	   0.0

À partir du résultat, nous pouvons voir :

  • La valeur p pour le coefficient de corrélation entre x et y est 0,2296 .
  • La valeur p pour le coefficient de corrélation entre x et z est 0,0005 .
  • La valeur p pour le coefficient de corrélation entre y et z est 0,4238 .

Notez que nous avons arrondi les valeurs p à quatre décimales dans notre fonction personnalisée.

N’hésitez pas à remplacer le 4 de la dernière ligne de la fonction par un nombre différent pour arrondir à un nombre différent de décimales.

Remarque : Vous pouvez trouver la documentation complète de la fonction SciPy pearsonr() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes chez les pandas :

Comment calculer la corrélation par groupe chez Pandas
Comment calculer la corrélation glissante chez les pandas
Comment calculer la corrélation de rang Spearman chez les pandas

Ajouter un commentaire

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