Quantifier l'ajustement du modèle

Introduction à la régression avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Modèles pour brèmes et perches

Brème Le nuage de points des masses de brèmes selon leur longueur, avec une ligne de tendance, déjà montré.

Perche Le nuage de points des masses de perches selon leur longueur, avec une ligne de tendance, déjà montré.

Introduction à la régression avec statsmodels en Python

Coefficient de détermination

Aussi appelé « r‑carré » ou « R‑carré ».

La proportion de la variance de la variable réponse prévisible à partir de la variable explicative

  • 1 signifie un ajustement parfait
  • 0 signifie le pire ajustement
Introduction à la régression avec statsmodels en Python

.summary()

Repérez la valeur « R-Squared »

mdl_bream = ols("mass_g ~ length_cm", data=bream).fit()
print(mdl_bream.summary())
# Certaines lignes de sortie sont omises                          

                            OLS Regression Results                         
Dep. Variable:                 mass_g   R-squared:                       0.878
Model:                            OLS   Adj. R-squared:                  0.874
Method:                 Least Squares   F-statistic:                     237.6
Introduction à la régression avec statsmodels en Python

Attribut .rsquared

print(mdl_bream.rsquared)
0.8780627095147174
Introduction à la régression avec statsmodels en Python

C'est juste la corrélation au carré

coeff_determination = bream["length_cm"].corr(bream["mass_g"]) ** 2
print(coeff_determination)
0.8780627095147173
Introduction à la régression avec statsmodels en Python

Erreur-type résiduelle (RSE)

Résidus du nuage de points masse vs longueur pour les brèmes, comme vu précédemment

  • Écart « typique » entre une prédiction et une réponse observée
  • Même unité que la variable réponse
  • MSE = RSE²
Introduction à la régression avec statsmodels en Python

Attribut .mse_resid

mse = mdl_bream.mse_resid
print('mse: ', mse)
mse:  5498.555084973521
rse = np.sqrt(mse)
print("rse: ", rse)
rse:  74.15224261594197
Introduction à la régression avec statsmodels en Python

Calcul du RSE : résidus au carré

residuals_sq = mdl_bream.resid ** 2

print("residuals sq: \n", residuals_sq)
residuals sq: 
0      138.957118
1      260.758635
2     5126.992578
3     1318.919660
4      390.974309
    ...
30    2125.047026
31    6576.923291
32     206.259713
33     889.335096
34    7665.302003
Length: 35, dtype: float64
Introduction à la régression avec statsmodels en Python

Calcul du RSE : somme des résidus au carré

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

print("resid sum of sq :",
      resid_sum_of_sq)
resid sum of sq : 181452.31780412616
Introduction à la régression avec statsmodels en Python

Calcul du RSE : degrés de liberté

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

print("deg freedom: ", deg_freedom)

Degrés de liberté : nombre d'observations moins le nombre de coefficients du modèle.

deg freedom:  33
Introduction à la régression avec statsmodels en Python

Calcul du RSE : racine carrée du ratio

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

rse = np.sqrt(resid_sum_of_sq/deg_freedom)

print("rse :", rse)
rse : 74.15224261594197
Introduction à la régression avec statsmodels en Python

Interpréter le RSE

mdl_bream a un RSE de 74.

L'écart entre les masses prévues et observées des brèmes est typiquement d'environ 74 g.

Introduction à la régression avec statsmodels en Python

Erreur quadratique moyenne (RMSE)

residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

deg_freedom = len(bream.index) - 2

rse = np.sqrt(resid_sum_of_sq/deg_freedom)

print("rse :", rse)
rse : 74.15224261594197
residuals_sq = mdl_bream.resid ** 2

resid_sum_of_sq = sum(residuals_sq)

n_obs = len(bream.index)

rmse = np.sqrt(resid_sum_of_sq/n_obs)

print("rmse :", rmse)
rmse : 72.00244396727619
Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...