Kategoriale erklärende Variablen

Einführung in die Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Fisch-Datensatz

  • Jede Zeile ist ein Fisch.
  • Der Datensatz hat 128 Zeilen.
  • Es gibt 4 Arten:
    • Brachse (Common Bream)
    • Flussbarsch (European Perch)
    • Hecht (Northern Pike)
    • Rotauge (Common Roach)
species mass_g
Bream 242.0
Perch 5.9
Pike 200.0
Roach 40.0
... ...
Einführung in die Regression mit statsmodels in Python

1 numerische und 1 kategoriale Variable visualisieren

import matplotlib.pyplot as plt
import seaborn as sns

sns.displot(data=fish,
            x="mass_g",
            col="species",
            col_wrap=2,
            bins=9)

plt.show()

Ein facettiertes Histogramm der Fischanzahl nach Gewicht. Jedes Panel zeigt eine Art: Bream, Perch, Pike oder Roach.

Einführung in die Regression mit statsmodels in Python

Kennzahlen: mittlere Masse je Art

summary_stats = fish.groupby("species")["mass_g"].mean()
print(summary_stats)
species
Bream    617.828571
Perch    382.239286
Pike     718.705882
Roach    152.050000
Name: mass_g, dtype: float64
Einführung in die Regression mit statsmodels in Python

Lineare Regression

from statsmodels.formula.api import ols 
mdl_mass_vs_species = ols("mass_g ~ species", data=fish).fit()

print(mdl_mass_vs_species.params)
Intercept           617.828571
species[T.Perch]   -235.589286
species[T.Pike]     100.877311
species[T.Roach]   -465.778571
Einführung in die Regression mit statsmodels in Python

Modell mit oder ohne Achsenabschnitt

Vom vorherigen Slide: Modell mit Achsenabschnitt

mdl_mass_vs_species = ols(
  "mass_g ~ species", data=fish).fit()

print(mdl_mass_vs_species.params)
Intercept           617.828571
species[T.Perch]   -235.589286
species[T.Pike]     100.877311
species[T.Roach]   -465.778571

Die Koeffizienten sind relativ zum Intercept: $617.83 - 235.59 = 382.24!$

Modell ohne Achsenabschnitt

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

Bei einer einzelnen kategorialen Variable sind die Koeffizienten die Mittelwerte.

Einführung in die Regression mit statsmodels in Python

Lass uns üben!

Einführung in die Regression mit statsmodels in Python

Preparing Video For Download...