如何在Python中计算SSR?线性回归模型平方和求解及代码验证
线性回归平方和(SSR、SSE、SST)计算与代码验证
问题描述
已训练线性回归模型:
reg = linear_model.LinearRegression() reg.fit(X, Y)
需要计算三种平方和:SST(总平方和)、SSR(回归平方和)、SSRES(又称SSE,残差平方和),已实现SSE的计算:
y_pred = reg.predict(X) df = pd.DataFrame({'Actual': Y, 'Predicted':y_pred}) print('SS_Res : '+ str(np.sum(np.square(df['Actual']-df['Predicted']))))
想知道SSR的代码实现方式,同时验证自己编写的下述代码是否正确:
y_pred = reg.predict(X) y_mean = np.mean(Y) df = pd.DataFrame({'Actual': Y, 'Predicted':y_pred, 'mean':y_mean}) print('SS_Res : '+ str(np.sum(np.square(df['Actual']-df['Predicted'])))) print('SS_R : '+ str(np.sum(np.square(df['Predicted']-df['mean']))))
解答
你编写的SSR计算代码是完全正确的。
SSR的定义为模型预测值与因变量均值的差的平方和,公式为:
SSR = Σ(ŷᵢ - ȳ)²
其中ŷᵢ是模型预测值,ȳ是因变量Y的平均值。你的代码中:
- 先通过
np.mean(Y)计算出Y的均值y_mean - 再通过
np.sum(np.square(df['Predicted']-df['mean']))计算预测值与均值的差的平方和,完全匹配SSR的定义。
关于SST的计算
正如你所说,SST可以通过SST = SSR + SSE推导得出,也可以直接根据定义(总平方和是实际值与均值的差的平方和)实现:
print('SS_T : '+ str(np.sum(np.square(df['Actual']-df['mean']))))
内容的提问来源于stack exchange,提问作者Kev
相关产品推荐
相关产品推荐

