▌线性回归拟合优度
1. 判定系数
回归直线与各观测点的接近程度成为回归直线对数据的拟合优度。而评判直线拟合优度需要一些指标,其中一个就是判定系数。
我们知道,因变量y值有来自两个方面的影响:
(1)来自x值的影响,也就是我们预测的主要依据
(2)来自无法预测的干扰项ϵ的影响
如果一个回归直线预测非常准确,那么它就需要让来自x的影响尽可能的大,而让来自无法预测干扰项的影响尽可能的小,也就是说x影响占比越高,预测效果就越好。下面我们看一下如何定义这些影响,并形成指标。
SST(总平方和):变差总平方和
***(回归平方和):由x与y之间的线性关系引起的y变化
SSE(残差平方和):除x影响之外的其它因素引起的y变化
它们之间的关系是:
。根据我们前面的分析,***越高,则代表回归预测越准确,观测点越是靠近直线,也即
越大,直线拟合越好。因此,判定系数的定义就自然的引出来了,我们一般称为R2。
还是用上篇的数据为例,利用R2来测试一下拟合的效果是怎么样的。defR2square(yArr,y_hat):n = len(yArr)
yArr = np.array(yArr).reshape(n,1)
y_hat = np.array(y_hat).reshape(n,1)
# ***
diff_yhat = y_predict - np.mean(yArr)
*** = np.sum(np.power(diff_yhat,2))
# sst
diff_y = yArr - np.mean(yArr)
sst = np.sum(np.power(diff_y,2))
return round(***/sst,2)R2square(yArr,y_predict)
>>0.97
可以看到最后的得分是0.97,说明拟合程度还是很不错的。2. 估计标准误差判定系数R2的意义是由x引起的影响占总影响的比例来判断拟合程度的。当然,我们也可以从误差的角度去评估,也就是用残差SSE进行判断。估计标准误差是均方残差的平方根,可以度量各实际观测点在直线周围散布的情况。