Plus de deux variables explicatives

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Rappel

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

Nuage de points 2D, avec la masse en couleur pour visualiser une 3e variable numérique.

Régression intermédiaire avec statsmodels en Python

Facetter par espèce

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

Nuage de points de la hauteur, longueur et masse des poissons, avec facettes par espèce. Couleur plus vive = poisson plus lourd.

Régression intermédiaire avec statsmodels en Python

Facetter par espèce

  • Il est possible d'utiliser plus d'une variable catégorielle pour les facettes
  • Attention à la surutilisation des facettes
  • Plus il y a de variables, plus le tracé devient difficile

Nuage de points de la hauteur, longueur et masse des poissons, avec facettes par espèce. Couleur plus vive = poisson plus lourd.

Régression intermédiaire avec statsmodels en Python

Niveaux d'interaction

Aucune interaction

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

interactions à deux facteurs entre paires de variables

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

interaction à trois facteurs entre les trois variables

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()
Régression intermédiaire avec statsmodels en Python

Toutes les interactions

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

équivaut à

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Régression intermédiaire avec statsmodels en Python

Interactions à deux facteurs seulement

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

équivaut à

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Régression intermédiaire avec statsmodels en Python

Le déroulement de la prédiction

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]
Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...