一元线性回归(二) ----模型的评估与判定系数

判定系数:用于估计回归方程是否很好的拟合了样本的数据,判定系数为估计的回归方程提供了一个拟合优度的度量

1  误差平方和---SSE

对于样本中的第i次的观测值,应变量的观测值y_{i}和应变量的预测值\hat{y}_{i}之间的离差为第i个残差,第i个残差表示用\hat{y}_{i}去估计y_{i}的误差,

于是,对于第i次观测值,它的残差是y_{i} - \hat{y}_{i}这些残差或误差的平方和是一个用最小二乘来极小化的量。这个量就是误差平方和,记作SSE

简单总结为:实际观测值与回归方程预测值之差的平方再求和

                                                                          公式:SSE = \sum (y_{i} - \hat{y}_{i})^{2}

2  总平方和---SST

简单总结为:样本的观测值与样本均值之差的平方再求和

我们依然使用上一篇中披萨饼的数据例子,求得的回归方程为:\hat{y}_{i} = 60 + 5x,样本均值为 y(mean) = 130,我们把SST看作是观测值在直线y(mean) = 130周围聚集程度的度量,而把SSE看作是观测值在回归线\hat{y}_{i} = 60 + 5x周围的聚集程度的度量

                                                                        公式:SST = \sum (y_{i} - \bar{y})^{2}

3 回归平方和---SSR

我们依然使用上一篇中披萨饼的数据例子,求得的回归方程为:\hat{y}_{i} = 60 + 5x,样本均值为 y(mean) = 130,回归平方和用来度量:在估计的回归线上的\hat{y}_{i} 值与直线y(mean)的偏离的大小

简单总结为:回归方程的预测值与样本均值之差的平方再求和

                                                                        公式:SSR = \sum (\hat{y} - \bar{y})^{2}                                                                        

4  统计学中的一个重要结论:

                                                                       公式:SST = SSR + SSE

即:总平方和  = 回归平方和  + 误差平方和

对于这个结论的一点理解:

如果应变量每一个值y_{i}都刚好落在估计的回归线上,那么估计的回归方程将给出一个完全的拟合,在这种情况下,对于每一个观测值,y_{i}-\hat{y}_{i}的值将等于0,即SSE=0,因为SST = SSR + SSE,我们可以看到对于一个完全的拟合,SST必然等于SSR,并且SSR/SST必然等于1。这种情况是理想情况下最好的拟合,因为SSE=0,但实际中一般不会存在这种情况。

比较差的拟合,将导致SSE的值计较大,我们把公式变换下SSE = SST - SSR,因此当SSR=0时,SSE=SST,此时SSE的值最大,即最差的拟合

5 判定系数

回归平方和与总平方和的比值,这个值的取值范围在区间[0, 1]之间,SSR/SST这个值用来对估计的回归方程的拟合优度作出评估,这个比值被称为判定系数,记作r^{2}

                                                                    公式:r^{2} = SSR / SST

判定系数的意义:如果我们用一个百分数表示判定系数,我们能把r^{2}理解为总平方和中能被估计的回归方程解释的百分比。

例子:对于上一篇中比萨饼连锁店的例子,判定系数的值为:

                                              r^{2}   =  SSR / SST = 14200 / 157300 = 0.9027

在用估计的回归方程去预测季度销售收入时,我们能判定,总平方和中的90.27%能被估计的回归方程\hat{y}_{i} = 60 + 5x所解释,换句话说,季度销售收入变异性的90.27%能被学生人数和销售收入之间的线性关系所解释。

6  相关系数

前几篇中说过皮尔逊积相关系数,这里相关系数的另一种求法

                                                                  公式:r_{xy} = \sqrt{r^{2}}  * (b_{1}的符号)

式中:b_{1}为估计的回归方程\hat{y} = b_{0} + b_{1}x的斜率

r_{xy}的值,在区间[-1, 1]之间,越接近于0,x与y之间相关性越小,大于0时,表示x与y存在正相关性,小于0时,表示x与y存在负相关性。

7 下面是披萨饼店例子中各评估数据的求取的实现,具体数据请看上一篇传送门,使用python3.6实现

    def predicate_work(self):       # 求取模型的各评估值

        pre_x_data = self.test_data_work(self.x_data)
        # [70.0, 90.0, 100.0, 100.0, 120.0, 140.0, 160.0, 160.0, 170.0, 190.0]
        # 这里不同于机器学习中的监督学习算法,这里是把源数据带入回归方程,得到的样本预测值
        y_mean = np.mean(self.y_data)

        # 计算SSE
        tem1 = np.array(self.y_data)- np.array(pre_x_data)
        tem1 = np.square(tem1)  # 求各元素平方
        sse = np.sum(tem1)      # sse= 1530.0

        # 计算SST
        tem2 = self.y_data - y_mean
        tem2 = np.square(tem2)
        sst = np.sum(tem2)      # sst= 15730.0

        # 计算SSR
        tem3 = pre_x_data - y_mean
        tem3 = np.square(tem3)
        ssr = np.sum(tem3)      # ssr= 14200.0

        # 证明SST = SSR + SSE
        tem4 = ssr + sse
        if sst == tem4:
            print('the SST = SSR + SSE is true')

        # 计算判定系数
        rr = ssr / sst     # rr= 0.9027336300063573

        # 计算相关系数
        tem5 = self.b1 * (1 / np.abs(self.b1))  # 取b1的正号或负号
        tem6 = np.sqrt(rr)
        r_xy = tem5 * tem6   # r_xy= 0.9501229552044079

        dict = {'SSE' : sse, 'SST' : 'sst', 'SSR' : 'ssr', 'pdxs' : rr, 'xgxs' : r_xy}

        return dict

  请在上一篇代码中,类SimpleRegress中加入上述方法,可运行得到结果

         

你可能感兴趣的:(统计学习笔记)