Hoe sst, ssr en sse in python te berekenen
We gebruiken vaak drie verschillende kwadratensommen om te meten hoe goed een regressielijn bij een reeks gegevens past:
1. Som van totale kwadraten (SST) – De som van de kwadraten van de verschillen tussen individuele gegevenspunten (y i ) en het gemiddelde van de responsvariabele ( y ).
- SST = Σ(y i – y ) 2
2. Som van kwadratenregressie (SSR) – De som van de kwadraten van de verschillen tussen de voorspelde gegevenspunten (ŷ i ) en het gemiddelde van de responsvariabele ( y ).
- SSR = Σ(ŷ i – y ) 2
3. Som van kwadratenfout (SSE) – De som van de kwadraten van de verschillen tussen de voorspelde datapunten (ŷ i ) en de waargenomen datapunten (y i ).
- SSE = Σ(ŷ ik – y ik ) 2
In het volgende stapsgewijze voorbeeld ziet u hoe u elk van deze metrieken voor een bepaald regressiemodel in Python kunt berekenen.
Stap 1: Creëer de gegevens
Laten we eerst een dataset maken met het aantal gestudeerde uren en de behaalde examenscores voor 20 verschillende studenten aan een bepaalde universiteit:
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
Stap 2: Pas een regressiemodel toe
Vervolgens zullen we de functie OLS() uit de statsmodels- bibliotheek gebruiken om een eenvoudig lineair regressiemodel in te passen met score als responsvariabele en uren als voorspellende variabele:
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 ()
Stap 3: Bereken SST, SSR en SSE
Ten slotte kunnen we de volgende formules gebruiken om de SST-, SSR- en SSE-waarden van het model te berekenen:
import numpy as np #calculate sse = np. sum ((model. fitted values - df. score ) ** 2) print (sse) 331.07488479262696 #calculate ssr ssr = np. sum ((model. fitted values - df. score . mean ()) ** 2) print (ssr) 917.4751152073725 #calculate sst sst = ssr + sse print (sst) 1248.5499999999995
De statistieken blijken te zijn:
- Totale som van kwadraten (SST): 1248,55
- Som van kwadratenregressie (SSR): 917,4751
- Som van kwadratenfout (SSE): 331,0749
We kunnen verifiëren dat SST = SSR + SSE:
- SST = SSR + SSE
- 1248,55 = 917,4751 + 331,0749
Aanvullende bronnen
U kunt de volgende rekenmachines gebruiken om SST, SSR en SSE automatisch te berekenen voor elke eenvoudige lineaire regressielijn:
- SST-calculator
- RSS-calculator
- ESS-calculator
In de volgende tutorials wordt uitgelegd hoe u SST, SSR en SSE in andere statistische software kunt berekenen: