如何在python中计算sst、ssr和sse
我们经常使用三个不同的平方和值来衡量回归线对一组数据的拟合程度:
1. 总平方和 (SST) –各个数据点 (y i ) 与响应变量平均值 ( y ) 之差的平方和。
- 海温 = Σ(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:
- 海温计算器
- RSS 计算器
- ESS计算器
以下教程介绍了如何在其他统计软件中计算SST、SSR和SSE: