Seaborn - Relaciones lineales

La mayoría de las veces, utilizamos conjuntos de datos que contienen múltiples variables cuantitativas, y el objetivo de un análisis suele ser relacionar esas variables entre sí. Esto se puede hacer a través de las líneas de regresión.

Mientras construimos los modelos de regresión, a menudo buscamos multicollinearity,donde teníamos que ver la correlación entre todas las combinaciones de variables continuas y tomaremos las acciones necesarias para eliminar la multicolinealidad si existe. En tales casos, las siguientes técnicas ayudan.

Funciones para dibujar modelos de regresión lineal

Hay dos funciones principales en Seaborn para visualizar una relación lineal determinada mediante regresión. Estas funciones sonregplot() y lmplot().

regplot vs lmplot

tramar lmplot
acepta las variables xey en una variedad de formatos que incluyen matrices numpy simples, objetos de la serie pandas o como referencias a variables en un DataFrame de pandas tiene datos como parámetro obligatorio y las variables xey deben especificarse como cadenas. Este formato de datos se denomina datos de "formato largo".

Dibujemos ahora las gráficas.

Ejemplo

Graficar el gráfico de registro y luego empalmar con los mismos datos en este ejemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()

Salida

Puede ver la diferencia de tamaño entre dos parcelas.

También podemos ajustar una regresión lineal cuando una de las variables toma valores discretos

Ejemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()

Salida

Adaptación a diferentes tipos de modelos

El modelo de regresión lineal simple utilizado anteriormente es muy simple de ajustar, pero en la mayoría de los casos, los datos no son lineales y los métodos anteriores no pueden generalizar la línea de regresión.

Usemos el conjunto de datos de Anscombe con las gráficas de regresión:

Ejemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()

En este caso, los datos se ajustan bien al modelo de regresión lineal con menos varianza.

Veamos otro ejemplo donde los datos tienen una gran desviación, lo que muestra que la línea de mejor ajuste no es buena.

Ejemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()

Salida

El gráfico muestra la alta desviación de los puntos de datos de la línea de regresión. Dicho orden superior no lineal se puede visualizar utilizando ellmplot() y regplot()Estos pueden ajustarse a un modelo de regresión polinomial para explorar tipos simples de tendencias no lineales en el conjunto de datos:

Ejemplo

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()

Salida