Comment calculer SST, SSR et SSE en Python



Nous utilisons souvent trois valeurs de somme des carrés différentes pour mesurer dans quelle mesure une droite de régression s’adapte à un ensemble de données :

1. Somme des carrés totaux (SST) – La somme des carrés des différences entre les points de données individuels (y i ) et la moyenne de la variable de réponse ( y ).

  • SST = Σ(y jey ) 2

2. Régression de la somme des carrés (SSR) – La somme des carrés des différences entre les points de données prédits (ŷ i ) et la moyenne de la variable de réponse ( y ).

  • SSR = Σ(ŷ jey ) 2

3. Erreur de somme des carrés (SSE) – La somme des carrés des différences entre les points de données prédits (ŷ i ) et les points de données observés (y i ).

  • SSE = Σ(ŷ je – y je ) 2

L’exemple étape par étape suivant montre comment calculer chacune de ces métriques pour un modèle de régression donné en Python.

Étape 1 : Créer les données

Tout d’abord, créons un ensemble de données contenant le nombre d’heures étudiées et les résultats des examens obtenus pour 20 étudiants différents dans une université donnée :

import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'hours': [1, 1, 1, 2, 2, 2, 2, 2, 3, 3,
                             3, 4, 4, 4, 5, 5, 6, 7, 7, 8],
                   'score': [68, 76, 74, 80, 76, 78, 81, 84, 86, 83,
                             88, 85, 89, 94, 93, 94, 96, 89, 92, 97]})

#view first five rows of DataFrame
df.head()

	hours	score
0	1	68
1	1	76
2	1	74
3	2	80
4	2	76

Étape 2 : Ajuster un modèle de régression

Ensuite, nous utiliserons la fonction OLS() de la bibliothèque statsmodels pour ajuster un modèle de régression linéaire simple en utilisant le score comme variable de réponse et les heures comme variable prédictive :

import statsmodels.api as sm

#define response variable
y = df['score']

#define predictor variable
x = df[['hours']]

#add constant to predictor variables
x = sm.add_constant(x)

#fit linear regression model
model = sm.OLS(y, x).fit()

Étape 3 : Calculez SST, SSR et SSE

Enfin, nous pouvons utiliser les formules suivantes pour calculer les valeurs SST, SSR et SSE du modèle :

import numpy as np

#calculate sse
sse = np.sum((model.fittedvalues - df.score)**2)
print(sse)

331.07488479262696

#calculate ssr
ssr = np.sum((model.fittedvalues - df.score.mean())**2)
print(ssr)

917.4751152073725

#calculate sst
sst = ssr + sse
print(sst)

1248.5499999999995

Les métriques s’avèrent être :

  • Somme des carrés total (SST) : 1248,55
  • Régression de la somme des carrés (SSR) : 917,4751
  • Erreur de somme des carrés (SSE) : 331,0749

On peut vérifier que SST = SSR + SSE :

  • SST = SSR + SSE
  • 1248,55 = 917,4751 + 331,0749

Ressources additionnelles

Vous pouvez utiliser les calculatrices suivantes pour calculer automatiquement SST, SSR et SSE pour n’importe quelle ligne de régression linéaire simple :

  • Calculateur SST
  • Calculateur RSS
  • Calculateur ESS

Les didacticiels suivants expliquent comment calculer SST, SSR et SSE dans d’autres logiciels statistiques :

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *