Как рассчитать SST, SSR и SSE в Python


Мы часто используем три разных значения суммы квадратов , чтобы измерить, насколько хорошо линия регрессии соответствует набору данных:

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: Подгонка регрессионной модели

Далее мы будем использовать функцию OLS() из библиотеки statsmodels , чтобы подобрать простую модель линейной регрессии, используя счет в качестве переменной ответа и часы в качестве переменной-предиктора:

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
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

Получаются следующие показатели:

  • Общая сумма квадратов (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, SSR и SSE в других статистических программах:

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.