Python에서 sst, ssr 및 sse를 계산하는 방법
회귀선 이 데이터 세트에 얼마나 잘 맞는지 측정하기 위해 세 가지 다른 제곱합 값을 사용하는 경우가 많습니다.
1. 총 제곱합(SST) – 개별 데이터 포인트(y i )와 응답 변수의 평균( y ) 간의 차이의 제곱합입니다.
- SST = Σ(y i – y ) 2
2. SSR(제곱합 회귀) – 예측된 데이터 포인트(ŷ i )와 응답 변수의 평균( y ) 간의 차이의 제곱합입니다.
- SSR = Σ(ŷ i – y ) 2
3. 제곱합 오류(SSE) – 예측된 데이터 포인트(ŷ i )와 관찰된 데이터 포인트(y i ) 간의 차이의 제곱의 합입니다.
- SSE = Σ(ŷ i – y i ) 2
다음 단계별 예는 Python에서 특정 회귀 모델에 대해 이러한 각 측정항목을 계산하는 방법을 보여줍니다.
1단계: 데이터 생성
먼저, 특정 대학에서 20명의 학생에 대해 얻은 공부 시간과 시험 점수가 포함된 데이터 세트를 만들어 보겠습니다.
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
2단계: 회귀 모델 적합
다음으로, statsmodels 라이브러리의 OLS() 함수를 사용하여 점수를 응답 변수로, 시간을 예측 변수로 사용하여 간단한 선형 회귀 모델을 피팅합니다.
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 ()
3단계: SST, SSR, SSE 계산
마지막으로 다음 공식을 사용하여 모델의 SST, SSR 및 SSE 값을 계산할 수 있습니다.
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
측정항목은 다음과 같습니다.
- 총 제곱합(SST): 1248.55
- SSR(제곱합 회귀): 917.4751
- 제곱합 오류(SSE): 331.0749
SST = SSR + SSE를 확인할 수 있습니다.
- SST = SSR + SSE
- 1248.55 = 917.4751 + 331.0749
추가 리소스
다음 계산기를 사용하여 단순 선형 회귀선에 대한 SST, SSR 및 SSE를 자동으로 계산할 수 있습니다.
- SST 계산기
- RSS 계산기
- ESS 계산기
다음 튜토리얼에서는 다른 통계 소프트웨어에서 SST, SSR 및 SSE를 계산하는 방법을 설명합니다.