Comment afficher l’équation de régression dans Seaborn Regplot



Vous pouvez utiliser la fonction seaborn regplot pour tracer un modèle de régression linéaire adapté à un ensemble de données.

Malheureusement, Seaborn n’a pas de fonctionnalité intégrée pour extraire l’équation de régression de la droite, mais vous pouvez utiliser la fonction scipy.stats.linregress pour trouver rapidement les coefficients de régression :

import scipy
import seaborn as sns

#create regplot
p = sns.regplot(data=df, x=df.x, y=df.y)

#calculate slope and intercept of regression equation
slope, intercept, r, p, sterr = scipy.stats.linregress(x=p.get_lines()[0].get_xdata(),
                                                       y=p.get_lines()[0].get_ydata())

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : Afficher l’équation de régression dans Seaborn Regplot

Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les heures étudiées et les résultats de l’examen final de divers étudiants :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'hours': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   'score': [77, 79, 84, 80, 81, 89, 95, 90, 83, 89]})

#view DataFrame
print(df)

   hours  score
0      1     77
1      2     79
2      3     84
3      4     80
4      5     81
5      6     89
6      7     95
7      8     90
8      9     83
9     10     89

Supposons que nous souhaitions tracer les points de données et ajouter une ligne de régression ajustée aux données.

Nous pouvons utiliser la syntaxe suivante pour ce faire :

import scipy
import seaborn as sns

#create regplot
p = sns.regplot(data=df, x=df.hours, y=df.score)

#calculate slope and intercept of regression equation
slope, intercept, r, p, sterr = scipy.stats.linregress(x=p.get_lines()[0].get_xdata(),
                                                       y=p.get_lines()[0].get_ydata())

#display slope and intercept of regression equation
print(intercept, slope)

77.39999999999995 1.3272727272727356

À partir du résultat, nous pouvons voir que la droite de régression a l’équation suivante :

y = 77,4 + 1,327

Si nous souhaitons afficher cette équation sur le regplot seaborn, nous pouvons utiliser la fonction text() de matplotlib :

import matplotlib.pyplot as plt
import scipy
import seaborn as sns

#create regplot
p = sns.regplot(data=df, x=df.hours, y=df.score)

#calculate slope and intercept of regression equation
slope, intercept, r, p, sterr = scipy.stats.linregress(x=p.get_lines()[0].get_xdata(),
                                                       y=p.get_lines()[0].get_ydata())

#add regression equation to plot
plt.text(2, 95, 'y = ' + str(round(intercept,3)) + ' + ' + str(round(slope,3)) + 'x')

équation de regplot Seaborn

Notez que l’équation de régression est désormais affichée dans le coin supérieur gauche du tracé.

Notez que dans la fonction text() , nous avons spécifié que l’équation de régression doit être affichée à partir des coordonnées (x, y) de (2, 95).

N’hésitez pas à modifier ces coordonnées pour afficher l’équation de régression là où vous le souhaitez dans votre propre tracé.

Remarque : Vous pouvez trouver la documentation complète de la fonction seaborn regplot ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans Seaborn :

Comment ajuster la taille de la figure d’un tracé Seaborn
Comment changer la position d’une légende dans Seaborn
Comment modifier les étiquettes des axes sur un tracé Seaborn

Ajouter un commentaire

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