Regresia liniară cu pante paralele

Regresie intermediară cu statsmodels în Python

Maarten Van den Broeck

Content Developer at DataCamp

Cursul anterior

Acest curs presupune cunoștințe din Introduction to Regression with statsmodels in Python

Regresie intermediară cu statsmodels în Python

De la regresia simplă la regresia multiplă

Regresia multiplă este un model de regresie cu mai multe variabile explicative.

Mai multe variabile explicative pot oferi mai multe informații și predicții mai bune.

Regresie intermediară cu statsmodels în Python

Conținutul cursului

Capitolul 1

  • Regresia cu „pante paralele"

Capitolul 2

  • Interacțiuni
  • Paradoxul lui Simpson

Capitolul 3

  • Mai multe variabile explicative
  • Cum funcționează regresia liniară

Capitolul 4

  • Regresia logistică multiplă
  • Distribuția logistică
  • Cum funcționează regresia logistică
Regresie intermediară cu statsmodels în Python

Setul de date despre pești

mass_g length_cm species
242.0 23.2 Bream
5.9 7.5 Perch
200.0 30.0 Pike
40.0 12.9 Roach
  • Fiecare rând reprezintă un pește
  • mass_g este variabila răspuns
  • 1 variabilă explicativă numerică, 1 categorială
Regresie intermediară cu statsmodels în Python

O variabilă explicativă pe rând

from statsmodels.formula.api import ols

mdl_mass_vs_length = ols("mass_g ~ length_cm",
                         data=fish).fit()
print(mdl_mass_vs_length.params)
Intercept   -536.223947
length_cm     34.899245
dtype: float64
  • 1 coeficient de intercept
  • 1 coeficient de pantă
mdl_mass_vs_species = ols("mass_g ~ species + 0",
                          data=fish).fit()

print(mdl_mass_vs_species.params)
species[Bream]    617.828571
species[Perch]    382.239286
species[Pike]     718.705882
species[Roach]    152.050000
dtype: float64
  • 1 coeficient de intercept pentru fiecare categorie
Regresie intermediară cu statsmodels în Python

Ambele variabile simultan

mdl_mass_vs_both = ols("mass_g ~ length_cm + species + 0",
                       data=fish).fit()
print(mdl_mass_vs_both.params)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
dtype: float64
  • 1 coeficient de pantă
  • 1 coeficient de intercept pentru fiecare categorie
Regresie intermediară cu statsmodels în Python

Compararea coeficienților

print(mdl_mass_vs_length.params)
Intercept   -536.223947
length_cm     34.899245
print(mdl_mass_vs_both.params)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
print(mdl_mass_vs_species.params)
species[Bream]    617.828571
species[Perch]    382.239286
species[Pike]     718.705882
species[Roach]    152.050000
Regresie intermediară cu statsmodels în Python

Vizualizare: 1 variabilă explicativă numerică

import matplotlib.pyplot as plt
import seaborn as sns

sns.regplot(x="length_cm",
            y="mass_g",
            data=fish,
            ci=None)

plt.show()

Grafic de dispersie al masei față de lungimea peștilor, cu o linie de tendință liniară

Regresie intermediară cu statsmodels în Python

Vizualizare: 1 variabilă explicativă categorială

sns.boxplot(x="species",
            y="mass_g",
            data=fish,
            showmeans=True)

Boxplot al masei peștilor pentru fiecare specie

Regresie intermediară cu statsmodels în Python

Vizualizare: ambele variabile explicative

coeffs = mdl_mass_vs_both.params
print(coeffs)
species[Bream]    -672.241866
species[Perch]    -713.292859
species[Pike]    -1089.456053
species[Roach]    -726.777799
length_cm           42.568554
ic_bream, ic_perch, ic_pike, ic_roach, sl = coeffs
sns.scatterplot(x="length_cm",
                y="mass_g",
                hue="species",
                data=fish)
plt.axline(xy1=(0, ic_bream), slope=sl, color="blue")
plt.axline(xy1=(0, ic_perch), slope=sl, color="green")
plt.axline(xy1=(0, ic_pike), slope=sl, color="red")
plt.axline(xy1=(0, ic_roach), slope=sl, color="orange")

Model cu pante paralele al masei față de lungimea peștilor, categorizat după specie

Regresie intermediară cu statsmodels în Python

Să exersăm!

Regresie intermediară cu statsmodels în Python

Preparing Video For Download...