Como exibir a equação de regressão no seaborn regplot


Você pode usar a função regplot seaborn para traçar um modelo de regressão linear ajustado a um conjunto de dados.

Infelizmente, Seaborn não possui um recurso integrado para extrair a equação de regressão da linha, mas você pode usar a função scipy.stats.linregress para encontrar rapidamente os coeficientes de regressão:

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

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Mostrar equação de regressão no Seaborn Regplot

Suponha que temos o seguinte DataFrame do pandas que contém informações sobre as horas estudadas e as notas dos exames finais de vários alunos:

 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

Digamos que queremos traçar os pontos de dados e adicionar uma linha de regressão ajustada aos dados.

Podemos usar a seguinte sintaxe para fazer isso:

 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

Pelo resultado, podemos ver que a reta de regressão possui a seguinte equação:

y = 77,4 + 1,327

Se quisermos exibir esta equação no Seaborn regplot , podemos usar a função 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 ') 

Equação de regplot de Seaborn

Observe que a equação de regressão agora é exibida no canto superior esquerdo do gráfico.

Observe que na função text() especificamos que a equação de regressão deve ser exibida a partir das coordenadas (x, y) de (2, 95).

Sinta-se à vontade para modificar essas coordenadas para exibir a equação de regressão onde quiser em seu próprio gráfico.

Nota : Você pode encontrar a documentação completa para a função regplot do Seaborn aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns no Seaborn:

Como ajustar o tamanho da figura de um gráfico Seaborn
Como mudar a posição de uma lenda em Seaborn
Como alterar os rótulos dos eixos em um gráfico Seaborn

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *