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 je – y ) 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 = Σ(ŷ je – y ) 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 :