Seaborn - Relazioni lineari

Il più delle volte, utilizziamo set di dati che contengono più variabili quantitative e l'obiettivo di un'analisi è spesso mettere in relazione tali variabili tra loro. Questo può essere fatto tramite le linee di regressione.

Durante la creazione dei modelli di regressione, spesso controlliamo multicollinearity,dove abbiamo dovuto vedere la correlazione tra tutte le combinazioni di variabili continue e intraprenderemo le azioni necessarie per rimuovere la multicollinearità se esiste. In questi casi, le seguenti tecniche aiutano.

Funzioni per disegnare modelli di regressione lineare

Ci sono due funzioni principali in Seaborn per visualizzare una relazione lineare determinata attraverso la regressione. Queste funzioni sonoregplot() e lmplot().

regplot vs lmplot

regplot lmplot
accetta le variabili x e y in una varietà di formati inclusi semplici array numpy, oggetti della serie panda o come riferimenti a variabili in un DataFrame panda ha i dati come parametro obbligatorio e le variabili x e y devono essere specificate come stringhe. Questo formato di dati è chiamato dati di "forma lunga"

Disegniamo ora le trame.

Esempio

Tracciare il regplot e quindi lmplot con gli stessi dati in questo esempio

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

Produzione

Puoi vedere la differenza nella dimensione tra due grafici.

Possiamo anche adattare una regressione lineare quando una delle variabili assume valori discreti

Esempio

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

Produzione

Adatto a diversi tipi di modelli

Il modello di regressione lineare semplice utilizzato sopra è molto semplice da adattare, ma nella maggior parte dei casi i dati non sono lineari e i metodi di cui sopra non possono generalizzare la retta di regressione.

Usiamo il set di dati di Anscombe con i grafici di regressione -

Esempio

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

In questo caso, i dati si adattano bene al modello di regressione lineare con minore varianza.

Vediamo un altro esempio in cui i dati hanno una deviazione elevata che mostra che la linea di adattamento migliore non è buona.

Esempio

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

Produzione

Il grafico mostra l'elevata deviazione dei punti dati dalla linea di regressione. Tale ordine superiore non lineare può essere visualizzato utilizzando illmplot() e regplot()Questi possono adattarsi a un modello di regressione polinomiale per esplorare tipi semplici di tendenze non lineari nel set di dati -

Esempio

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

Produzione