Meer dan twee verklarende variabelen

Gemiddelde regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Van vorige keer

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

2D-spreidingsdiagram, met massa als kleur om een derde numerieke variabele te tonen.

Gemiddelde regressie met statsmodels in Python

Facetting op soort

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

Spreidingsdiagram van vishoogte, -lengte en -massa, gefacet op soort. Feller = zwaarder.

Gemiddelde regressie met statsmodels in Python

Facetting op soort

  • Je kunt meer dan één categorische variabele gebruiken voor facetten
  • Pas op voor overmatig facetten
  • Plotten wordt lastiger naarmate het aantal variabelen toeneemt

Spreidingsdiagram van vishoogte, -lengte en -massa, gefacet op soort. Feller = zwaarder.

Gemiddelde regressie met statsmodels in Python

Verschillende interactieniveaus

Geen interacties

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

tweewegsinteracties tussen variabelenparen

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

driewegsinteractie tussen alle drie variabelen

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()
Gemiddelde regressie met statsmodels in Python

Alle interacties

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

hetzelfde als

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Gemiddelde regressie met statsmodels in Python

Alleen tweewegsinteracties

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

hetzelfde als

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Gemiddelde regressie met statsmodels in Python

De voorspelstroom

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]
Gemiddelde regressie met statsmodels in Python

Laten we oefenen!

Gemiddelde regressie met statsmodels in Python

Preparing Video For Download...