Jak wyświetlić równanie regresji w seaborn regplot


Za pomocą funkcji seaborn regplot można wykreślić model regresji liniowej pasujący do zbioru danych.

Niestety Seaborn nie ma wbudowanej funkcji wyodrębniania równania regresji z linii, ale możesz użyć funkcji scipy.stats.linregress , aby szybko znaleźć współczynniki regresji:

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

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Pokaż równanie regresji w Seaborn Regplot

Załóżmy, że mamy następującą ramkę danych pandy, która zawiera informacje o godzinach przestudiowanych i wynikach egzaminów końcowych różnych uczniów:

 import pandas as pd

#createDataFrame
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

Załóżmy, że chcemy wykreślić punkty danych i dodać do danych dopasowaną linię regresji.

W tym celu możemy użyć następującej składni:

 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

Z wyniku widzimy, że linia regresji ma następujące równanie:

y = 77,4 + 1,327

Jeśli chcemy wyświetlić to równanie na Seaborn regplot , możemy użyć funkcji matplotlib text() :

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

Równanie regplotu Seaborna

Należy zauważyć, że równanie regresji jest teraz wyświetlane w lewym górnym rogu wykresu.

Zauważ, że w funkcji tekst() określiliśmy, że równanie regresji powinno być wyświetlane ze współrzędnych (x, y) (2, 95).

Możesz dowolnie modyfikować te współrzędne, aby wyświetlić równanie regresji w dowolnym miejscu na własnym wykresie.

Uwaga : Pełną dokumentację funkcji seaborn regplot znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Seaborn:

Jak dostosować rozmiar figury na wykresie Seaborn
Jak zmienić pozycję legendy w Seaborn
Jak zmienić etykiety osi na wykresie Seaborn

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *