Comment calculer le coefficient de corrélation de Pearson en python ?

21 septembre 2021    /    Viewed: 245    /    Comments: 0    /    Edit


Exemples de comment calculer le coefficient de corrélation de Pearson en python:

Créer des données

Créons d'abord quelques données :

import numpy as np

def f(a,b,c,X):
        eps = c * np.random.randn(X.shape[0])
        return a * X + b + eps

a = 1 # slope
b = 0 # intercept
c = 1.0 # noise

X = np.random.randint(100, size=250)

Y = f(a,b,c,X)

et utilisez matplotlib pour les visualiser :

import matplotlib.pyplot as plt

plt.scatter(X,Y)

plt.xlim(-10,110)

plt.title("How to calculate the Pearson’s Correlation coefficient \n between two datasets in python ?")

plt.xlabel('X')
plt.ylabel('Y')

plt.savefig("Pearson_Correlation_coefficient_01.png", bbox_inches='tight')

plt.show()

Comment calculer le coefficient de corrélation de Pearson en python ?

Calculer le coefficient de corrélation de Pearson à l'aide de scipy

Pour calculer le coefficient de corrélation de Pearson entre les variables X et Y, une solution consiste à utiliser scipy.stats.pearsonr

from scipy.stats import pearsonr

corr, _ = pearsonr(X, Y)

donne

0.9434925682236153

qui peut être arrondi :

round(corr,2)

donne alors

0.94

Exemples de calcul des coefficients de corrélation de Pearson

Reproduisons maintenant l'exemple de wikipedia:

import matplotlib.pyplot as plt
import numpy as np

from scipy.stats import pearsonr

def f(a,b,c,X):
    eps = c * np.random.randn(X.shape[0])
    return a * X + b + eps

A = [1.0,1.0,1.0,0.0,-1.0,-1.0,-1.0]
B = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]
C = [1.0, 10, 20, 20, 20 ,10, 1.0]

n = 1
for a,b,c in zip(A,B,C):
    print(a,b,c)

    X = np.random.randint(100, size=250)

    Y = f(a,b,c,X)

    corr, _ = pearsonr(X, Y)

    plt.scatter(X,Y)

    plt.xlim(-10,110)

    plt.title("""
    How to calculate the Pearson’s Correlation coefficient \n 
    between two datasets in python ? \n corrcoef = {} \n a = {} b = {} c = {}""".format( str(round(corr,2)), a, b, c) )

    plt.xlabel('X')
    plt.ylabel('Y')

    plt.savefig("Pearson_Correlation_coefficient_{}.png".format(n), bbox_inches='tight')

    plt.show()

    n += 1

donne




Comment calculer le coefficient de corrélation de Pearson en python ?

Calculer le coefficient de corrélation de Pearson à l'aide de numpy

Une autre solution consiste à utiliser numpy avec numpy.corrcoef:

import numpy as np

np.corrcoef(X,Y)

donne

[[1.         0.94349257]
 [0.94349257 1.        ]]

Références


Card image cap
profile-image
Bazinga

Salut, je suis Ben.

J'ai développé ce site web à partir de zéro avec Django pour partager avec tout le monde mes notes. Si vous avez des idées ou des suggestions pour améliorer le site, faites le moi savoir ! (vous pouvez me contacter via le formulaire de la page d'accueil). Merci!