Mehr als zwei erklärende Variablen

Fortgeschrittene Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Vom letzten Mal

sns.scatterplot(x="length_cm", 
                y="height_cm",
                data=fish,
                hue="mass_g")

2D-Streudiagramm, Masse eingefärbt als dritte numerische Variable.

Fortgeschrittene Regression mit statsmodels in Python

Facettierung nach Art

grid = sns.FacetGrid(data=fish,

col="species",
hue="mass_g", col_wrap=2,
palette="plasma")
grid.map(sns.scatterplot,
         "length_cm",
         "height_cm")
plt.show()

Streudiagramm von Fischhöhe, -länge und -masse, nach Art facettiert. Hellere Farbe bedeutet schwererer Fisch.

Fortgeschrittene Regression mit statsmodels in Python

Facettierung nach Art

  • Du kannst mehr als eine kategoriale Variable zum Facettieren verwenden
  • Vorsicht vor zu viel Facettierung
  • Mit mehr Variablen wird das Plotten schwieriger

Streudiagramm von Fischhöhe, -länge und -masse, nach Art facettiert. Hellere Farbe bedeutet schwererer Fisch.

Fortgeschrittene Regression mit statsmodels in Python

Verschiedene Interaktionsstufen

Keine Interaktionen

ols("mass_g ~ length_cm + height_cm + species + 0", data=fish).fit()

Zwei-Wege-Interaktionen zwischen Variablenpaaren

ols(
  "mass_g ~ length_cm + height_cm + species +
  length_cm:height_cm + length_cm:species + height_cm:species + 0", data=fish).fit()

Drei-Wege-Interaktion zwischen allen drei Variablen

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", data=fish).fit()
Fortgeschrittene Regression mit statsmodels in Python

Alle Interaktionen

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", 
  data=fish).fit()

entspricht

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Fortgeschrittene Regression mit statsmodels in Python

Nur Zwei-Wege-Interaktionen

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + 0", 
  data=fish).fit()

entspricht

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Fortgeschrittene Regression mit statsmodels in Python

Der Vorhersage-Flow

mdl_mass_vs_all = ols(
  "mass_g ~ length_cm * height_cm * species + 0",
  data=fish).fit()

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)
species = fish["species"].unique()

p = product(length_cm, height_cm, species)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm",
                                         "species"])

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_all.predict(explanatory_data))

print(prediction_data)
     length_cm  height_cm species       mass_g
0            5          2   Bream  -570.656437
1            5          2   Roach    31.449145
2            5          2   Perch    43.789984
3            5          2    Pike   271.270093
4            5          4   Bream  -451.127405
..         ...        ...     ...          ...
475         60         18    Pike  2690.346384
476         60         20   Bream  1531.618475
477         60         20   Roach  2621.797668
478         60         20   Perch  3041.931709
479         60         20    Pike  2926.352397

[480 rows x 4 columns]
Fortgeschrittene Regression mit statsmodels in Python

Lass uns üben!

Fortgeschrittene Regression mit statsmodels in Python

Preparing Video For Download...