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')
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