Kategoriale erklärende Variablen

Einführung in Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Fisch-Datensatz

  • Jede Zeile steht für einen Fisch.
  • Der Datensatz hat 128 Zeilen.
  • Es gibt 4 Fischarten:
    • Brassen
    • Europäischer Barsch
    • Hecht
    • Gemeines Rotauge
species (Art) mass_g
Brassen 242.0
Barsche 5.9
Pike (Hecht) 200.0
Roach (Rotauge) 40.0
... ...
Einführung in Regression mit statsmodels in Python

Eine numerische & eine kategoriale Variable

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 im Vergleich zu ihrem Gewicht. Jedes Feld hat eine Fischart: Brassen, Barsche, Hechte oder Rotaugen.

Einführung in Regression mit statsmodels in Python

Deskriptive Statistik: Durchschnittsgewicht nach 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 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 Regression mit statsmodels in Python

Modell mit oder ohne Achsenabschnitt

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 werden relativ zum Achsenabschnitt berechnet: $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 Variablen sind die Koeffizienten die Mittelwerte.

Einführung in Regression mit statsmodels in Python

Lass uns üben!

Einführung in Regression mit statsmodels in Python

Preparing Video For Download...