简单线性回归的相关公式与推导
参考 https://zhuanlan.zhihu.com/p/66261557
本文内容包括:
- 简单线性回归中拟合直线的两个参数 β0^,β1^ 的推导(最小二乘法)
- 简单线性回归中对 R2 意义的一点个人理解
- 推导 R2=r2
简单线性回归中拟合直线的两个参数 β0^,β1^ 的推导
现在我们有一组数据点,比如说 x 代表体重,y 代表腹围,那么 y 和 x 之间的关系可以用下面的式子表示
y=β0+β1x+u
实际上我们不可能知道 β0,β1 和 u,但是我们可以使用手上有限的数据推测出下面的线性方程
y^=β0^+β1^x(1)
于是真实值 y 和使用拟合直线预测出来的 y^ 之间就会有偏差,用 u^=y−y^ 表示这个偏差。
其实简单线性回归说白了就是根据手上的数据点想办法优化拟合直线的两个参数,让预测值 y^ 和真实值 y 之间的偏差尽可能的小。也就是让 u^ 的总和尽可能的小。问题是如果直接把 u^ 相加,有些 u^ 可能为正,有些 u^ 可能为负,而且举一个极端的例子,令 y=yˉ 作为拟合直线,这个时候的拟合水平相当于是最差的(在所有经过 (xˉ,yˉ) 的直线中),但是根据平均值的性质,一组数据各项减去平均值差的和等于 0. 为了避免这个尴尬的局面,仿照方差的定义,我们把各个 u^ 都作一个平方,然后把平方求和:
∑u2=∑(y−y^)2=∑[y−(β0^+β1^x)]2(2)
所以接下来需要做的就是求 (2) 式的极值。这个式子是一个二次方程,只有一个极小值,位于导数等于 0 的地方。于是 (2) 求最小值的问题可以通过对 β0^ 和 β1^ 分别求一阶导数,令一阶导数为 0 就可以求出符合要求的两个参数了。
先看 β0^
符合极值要求的方程如下:
∂β0^∂∑u2=∑2(y−β0^−β1^x)(−1)=0
将 2 和 −1 两个常数消掉,于是方程左边等于:
==∑(y−β0^−β1^x)∑y−∑β0^−∑β1^x∑y−nβ0^−β1^∑x
由于 ∑y=nyˉ,∑x=nxˉ,上面的方程可化为
nyˉ−nβ0^−nβ1^xˉ=0
所以 yˉ−β0^−β1^xˉ=0
即
yˉ=β0^+β1^xˉ(3)
也就是说,根据极值的要求, 拟合直线必须经过 (xˉ,yˉ) 这个点。
接下来看关于 β1^ 的方程
∂β1^∂∑u2=∑2(y−β0^−β1^x)(−x)=0
同样是消掉常数,把 x 乘进各项:
∑xy−∑β0^x−∑β1^x2=0
将 (3) 代入上式,方程左边等于
=∑xy−∑(yˉ−β1^xˉ)x−∑β1^x2∑xy−∑(yˉx−β1^xˉx)−∑β1^x2
将常数 yˉ,xˉ,β1^ 提取出来:
=∑xy−yˉ∑x+β1^xˉ∑x−β1^∑x2
同样,由于 ∑y=nyˉ,∑x=nxˉ,上式
=∑xy−yˉ⋅nxˉ+β1^xˉ⋅nxˉ−β1^∑x2
整理一下上面的式子,于是方程转化成下面的形式
(∑xy−nxˉyˉ)−β1^(∑x2−nxˉ2)=0
也就是说
β1^=∑x2−nxˉ2∑xy−nyˉxˉ
在进一步转化以前,我们先看一下 x 和 y 的协方差 Cov(x,y)(实际上是样本协方差 Cov(x,y)^, 这里为了省事就不打 hat 了)是什么:
Cov(X,Y)=E[(X−E[X])(Y−E[Y])]
不大严谨地说,对一组样本量为 n 的数据的 x 值(我们假定样本里面每一个数据出现的概率是均等的),E(X)=n1∑x=xˉ , 于是
Cov(x,y)=n1∑(x−xˉ)(y−yˉ)
做一下转换可以有
Cov(x,y)=n1∑(xy−xˉy−yˉx+xˉyˉ)
其中
===∑(xy−xˉy−yˉx+xˉyˉ)∑xy−xˉ∑y−yˉ∑x+yˉxˉ∑1∑xy−xˉ⋅nyˉ−yˉ⋅nxˉ+xˉyˉ⋅n∑xy−nxˉyˉ
所以 β1^ 的分子实际上就是 nCov(x,y).
接下来看一下分母部分,这个就更眼熟了,我们看一下方差的公式:
Var(X)=E[(X−E(X))2]=n1∑(x−xˉ)2
其中
====∑(x−xˉ)2∑(x2−2xˉx+xˉ2)∑x2−2xˉ∑x+xˉ2∑1∑x2−2nxˉ2+nxˉ2∑x2−nxˉ2
所以 β1^ 的分母实际上就是 nVar(X). 综上,
β1^=nVar(x)nCov(x,y)=Var(x)Cov(x,y)(4)
对于 R2 意义的一些个人理解
比如说现在我给你一组人(样本量为 n)的腹围数据(也就是上面提到的 y),除此以外什么都没有了。那现在你想要给出一个拟合直线,让所有的 y 值到这个拟合直线的距离 u^=y−y^ 的平方的和尽可能的小。鉴于我们没有其他的参数(比如说体重 x), 因此 y^ 只能设置成一个常数。于是现在我们最好的选择就是使用样本均值,毕竟根据平均值的性质: ∑(y−y^)2 在 y^=yˉ 的时候是最小的,而这个平方和我们记为 TSS(Total Sum of Squares 总离差平方和/总平方和)
TSS=∑(y−yˉ)2
现在比如说,我们的数据集里增加了体重这一个参数(x),于是我们可以考虑根据 x 对 y 进行一个预测了,所以 y^ 不必再设置为一个常数,而是可以按照下面的式子去计算:
y^=β0^+β1^x
那么根据新的 y^ 推算出来的 u^ 平方的和我们记为 RSS【Residual Sum of Squares 残差平方和,又名 Sum of Squared Residuals (SSR)、Sum of Squared Estimate of Errors (SSE)】
RSS=∑(y−y^)2=∑[y−(β0^+β1^x)]2
那么现在的 TSS 代表的是什么呢?也就是完全没有任何其他信息的时候,单纯从腹围这个变量自身出发可以得到的最低的误差平方和。而 RSS 又代表什么呢?它代表的是加入了 x 这个变量以后,在已经做了最优化的设置(比如使用最小二乘法)之后,还会残留的误差的平方和。
于是有:
R2=TSSTSS−RSS
这个 R2 的分子代表的是加入了 x 这个变量以后,可以消除多少的误差(原有的全部误差平方和-剩下的误差平方和),分母就是原有的全部误差平方和。所以 R2 方代表的是加入 x 变量以后,可以消除掉的误差平方和的一个比例。所以当 R2 接近 0 的时候,就说明新加入的这个变量基本没什么用,而接近 1 的时候,就说明这个新加入的变量大幅度的减少了预测的误差。
R2 为什么等于相关系数 r 的平方?
r 也就是皮尔森相关系数,r 的计算公式如下:
r=Var(X)Var(Y)Cov(x,y)
R2 的公式:
R2=TSSTSS−RSS=∑(y−yˉ)2∑(y−yˉ)2−∑(y−y^)2(3.1)
其中
TSS=∑(y−yˉ)2=nVar(y)
=========RSS∑(y−y^)2∑[y−(β0^+β1^x)]2∑[y−(yˉ−β1^xˉ+β1^x)]2∑[(y−yˉ)−β1^(x−xˉ)]2∑[(y−yˉ)2+β1^2(x−xˉ)2−2β1^(y−yˉ)(x−xˉ)]∑(y−yˉ)2+β1^2∑(x−xˉ)2−2β1^∑(y−yˉ)(x−xˉ)nVar(y)+β1^2nVar(x)−2β1^nCov(x,y)nVar(y)+(Var(x)Cov(x,y))2nVar(x)−2Var(x)Cov(x,y)nCov(x,y)nVar(y)−nVar(x)Cov(x,y)2
所以 R2 的分子为 TSS−RSS=nVar(y)−(nVar(y)−nVar(x)Cov(x,y)2)=nVar(x)Cov(x,y)2
分母为 TSS=nVar(y)
所以式 (3.1) 可化为:
R2=nVar(x)Cov(x,y)2×nVar(y)1=Var(x)Var(y)Cov(x,y)2
又因为 r=Var(X)Var(Y)Cov(x,y)
所以 R2=r2.
顺带一提,ESS(Explained Sum of Squares 回归平方和/解释平方和)=∑(y^−yˉ)2 ,而 y^=β0^+β1^x=yˉ−β1^xˉ+β1^x
所以 ESS=∑(β1^(x−xˉ))2=β1^2∑(x−xˉ)2=(Var(x)Cov(x,y))2(nVar(x))=nVar(x)Cov(x,y)2
也就是 R2 的分子部分(TSS−RSS)。即 ESS=TSS−RSS
而且,其实 R2 等于 r2 的验证直接用 R2=TSSESS=Var(x)Var(y)Cov(x,y)2 会来的更快呢。