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