Deux variables explicatives numériques

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Visualiser trois variables numériques

  • Nuage de points 3D
  • Nuage de points 2D, réponse en couleur
Régression intermédiaire avec statsmodels en Python

Une autre colonne pour l'ensemble de données sur les poissons

species mass_g length_cm height_cm
Bream 1000 33.5 18.96
Bream 925 36.2 18.75
Roach 290 24.0 8.88
Roach 390 29.5 9.48
Perch 1100 39.0 12.80
Perch 1000 40.2 12.60
Pike 1250 52.0 10.69
Pike 1650 59.0 10.81
Régression intermédiaire avec statsmodels en Python

Nuage de points 3D

Nuage de points 3D de toutes les espèces, avec longueur, masse et hauteur sur les axes. Difficile à interpréter en 2D.

Régression intermédiaire avec statsmodels en Python

Nuage 2D, couleur pour la réponse

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

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

Régression intermédiaire avec statsmodels en Python

Modéliser avec deux variables explicatives numériques

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

print(mdl_mass_vs_both.params)
Intercept   -622.150234
length_cm     28.968405
height_cm     26.334804
Régression intermédiaire avec statsmodels en Python

Flux de prédiction

from itertools import product

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm"])
prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both.predict(explanatory_data))
print(prediction_data)
     length_cm  height_cm       mass_g
0            5          2  -424.638603
1            5          4  -371.968995
2            5          6  -319.299387
3            5          8  -266.629780
4            5         10  -213.960172
..         ...        ...          ...
115         60         12  1431.971694
116         60         14  1484.641302
117         60         16  1537.310909
118         60         18  1589.980517
119         60         20  1642.650125

[120 rows x 3 columns]
Régression intermédiaire avec statsmodels en Python

Tracer les prédictions

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=fish,
                hue="mass_g")
sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

Nuage de points de la longueur, de la hauteur et de la masse des poissons, avec une grille de prédiction.

Régression intermédiaire avec statsmodels en Python

Inclure une interaction

mdl_mass_vs_both_inter = ols("mass_g ~ length_cm * height_cm",
                             data=fish).fit()
print(mdl_mass_vs_both_inter.params)
Intercept              159.107480
length_cm                0.301426
height_cm              -78.125178
length_cm:height_cm      3.545435
Régression intermédiaire avec statsmodels en Python

Flux de prédiction avec interaction

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)

p = product(length_cm, height_cm)

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

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_both_inter.predict(explanatory_data))
Régression intermédiaire avec statsmodels en Python

Tracer les prédictions

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

sns.scatterplot(x="length_cm",
                y="height_cm",
                data=prediction_data,
                hue="mass_g",
                legend=False,
                marker="s")
plt.show()

Nuage de points de la longueur, de la hauteur et de la masse des poissons, avec un terme d'interaction sur une grille de prédiction.

Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...