Fler än två förklaringsvariabler

Intermediär regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Från förra gången

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

2D-spridningsdiagram med massa färgkodad för att visualisera en tredje numerisk variabel.

Intermediär regression med statsmodels i Python

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

Spridningsdiagram över fiskars höjd, längd och massa, facetterat efter art. Ljusare färg betyder tyngre fisk.

Intermediär regression med statsmodels i Python

Facettering efter art

  • Det går att använda fler än en kategorisk variabel för facettering
  • Undvik överdriven facettering
  • Visualisering blir svårare ju fler variabler som ingår

Spridningsdiagram över fiskars höjd, längd och massa, facetterat efter art. Ljusare färg betyder tyngre fisk.

Intermediär regression med statsmodels i Python

Olika nivåer av interaktion

Inga interaktioner

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

Tvåvägsinteraktioner mellan variabelpar

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

Trevägsinteraktion mellan alla tre variabler

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()
Intermediär regression med statsmodels i Python

Alla interaktioner

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

motsvarar

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Intermediär regression med statsmodels i Python

Endast tvåvägsinteraktioner

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

motsvarar

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Intermediär regression med statsmodels i Python

Prediktionsflödet

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]
Intermediär regression med statsmodels i Python

Nu kör vi en övning!

Intermediär regression med statsmodels i Python

Preparing Video For Download...