Lineare Regression mit parallelen Steigungen

Fortgeschrittene Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Der vorherige Kurs

Fortgeschrittene Regression mit statsmodels in Python

Von einfacher zu multipler Regression

Multiple Regression ist ein Regressionsmodell mit mehr als einer erklärenden Variable.

Mehr erklärende Variablen liefern mehr Einblick und bessere Vorhersagen.

Fortgeschrittene Regression mit statsmodels in Python

Kursinhalte

Kapitel 1

  • Regression mit „parallelen Steigungen"

Kapitel 2

  • Interaktionen
  • Simpson-Paradoxon

Kapitel 3

  • Mehr erklärende Variablen
  • So funktioniert lineare Regression

Kapitel 4

  • Multiple logistische Regression
  • Die logistische Verteilung
  • So funktioniert logistische Regression
Fortgeschrittene Regression mit statsmodels in Python

Der Fisch-Datensatz

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
  • Jede Zeile steht für einen Fisch
  • mass_g ist die Zielvariable
  • 1 numerische, 1 kategoriale erklärende Variable
Fortgeschrittene Regression mit statsmodels in Python

Eine erklärende Variable nach der anderen

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 Achsenabschnitt-Koeffizient
  • 1 Steigungskoeffizient
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
  • je Kategorie 1 Achsenabschnitt-Koeffizient
Fortgeschrittene Regression mit statsmodels in Python

Beide Variablen gleichzeitig

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 Steigungskoeffizient
  • je Kategorie 1 Achsenabschnitt-Koeffizient
Fortgeschrittene Regression mit statsmodels in Python

Koeffizienten vergleichen

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
Fortgeschrittene Regression mit statsmodels in Python

Visualisierung: 1 numerische erklärende Variable

import matplotlib.pyplot as plt
import seaborn as sns

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

plt.show()

Streudiagramm der Fischmasse vs. Länge mit linearer Trendlinie

Fortgeschrittene Regression mit statsmodels in Python

Visualisierung: 1 kategoriale erklärende Variable

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

Boxplot der Fischmasse nach Art

Fortgeschrittene Regression mit statsmodels in Python

Visualisierung: beide erklärenden Variablen

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

Paralleles-Steigungen-Modell: Fischmasse vs. Länge, nach Art kategorisiert

Fortgeschrittene Regression mit statsmodels in Python

Lass uns üben!

Fortgeschrittene Regression mit statsmodels in Python

Preparing Video For Download...