摘要
我们知道一元和多元线性回归系数都有解析解,本文将简要介绍总结线性回归系数的几个常见的性质。
线性回归问题的描述
我们回忆一下,单变量线性回归问题是指,给定了 n n n 个观察量 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) (x_1, \, y_1), \, (x_2, \, y_2), \cdots, (x_n, y_n) (x1,y1),(x2,y2),⋯,(xn,yn)。我们希望用一个线性的关系 y = β 1 x + β 0 + ϵ y = \beta_1 x + \beta_0 + \epsilon y=β1x+β0+ϵ 来描述这些观察量的规律。
这里,我们把方程
y = β 1 x + β 0 + ϵ y = \beta_1 x + \beta_0 + \epsilon y=β1x+β0+ϵ
称为 总体回归模型 (population regression model)。
而当给定的 n n n 个观察量 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) (x_1, \, y_1), \, (x_2, \, y_2), \cdots, (x_n, y_n) (x1,y1),(x2,y2),⋯,(xn,yn),我们称方程
y i = β 1 x i + β 0 + ϵ i y_i = \beta_1 x_i + \beta_0 + \epsilon_i yi=β1xi+β0+ϵi
为 样本回归模型 (sample regression model)。
其中 ϵ i \epsilon_i ϵi 为误差项 (error),独立且均服从 均值为0, 方差为 σ 2 \sigma^2 σ2 的一个随机分布。其中 σ 2 \sigma^2 σ2 为误差项的方差,我们知道 σ 2 \sigma^2 σ2 是固定的,但是我们不知道其具体的数值。
所以我们去做线性回归“拟合”模型的参数 β 1 \beta_1 β1 和 β 0 \beta_0 β0 时,实际上是根据 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x n , y n ) (x_1, \, y_1), \, (x_2, \, y_2), \cdots, (x_n, y_n) (x1,y1),(x2,y2),⋯,(xn,yn) 去做点估计 (point estimator)。
这里值得注意的是,我们把 x 1 , x 2 , ⋯ , x n x_1, \, x_2, \, \cdots, \, x_n x1,x2,⋯,xn 当作给定的值,即可以认为是常量,而每一个 y i , i = 1 , 2 , ⋯ n y_i, \, i = 1, 2, \, \cdots \, n yi,i=1,2,⋯n 均是一个随机变量。
单变量线性回归系数的公式
我们回顾单变量线性回归问题的公式,有
{ β 1 ^ = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 β 0 ^ = y ˉ − β 1 ^ x ˉ \begin{cases} & \hat{\beta_1} = \frac{\sum (x_i - \bar{x} ) (y_i - \bar{y})}{\sum (x_i - \bar{x} )^2 } \\ & \hat{\beta_0} = \bar{y} - \hat{\beta_1} \bar{x} \\ \end{cases} {β1^=∑(xi−xˉ)2∑(xi−xˉ)(yi−yˉ)β0^=yˉ−β1^xˉ
即我们对参数 β 1 , β 0 \beta_1, \, \beta_0 β1,β0 的估计是 β 1 ^ = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 \displaystyle \hat{\beta_1} = \frac{\sum (x_i - \bar{x} ) (y_i - \bar{y})}{\sum (x_i - \bar{x} )^2 } β1^=∑(xi−xˉ)2∑(xi−xˉ)(yi−yˉ),对参数 β 0 \beta_0 β0 的估计是 β 0 ^ = y ˉ − β 1 ^ x ˉ \displaystyle \hat{\beta_0} = \bar{y} - \hat{\beta_1} \bar{x} β0^=yˉ−β1^xˉ。
为方便起见,我们记
S x x = ∑ i = 1 n ( x i − x ˉ ) 2 \displaystyle S_{xx} = \sum_{i = 1}^n (x_i - \bar{x})^2 Sxx=i=1∑n(xi−xˉ)2,
S x y = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) \displaystyle S_{xy} = \sum_{i = 1}^n (x_i - \bar{x}) (y_i - \bar{y}) Sxy=i=1∑n(xi−xˉ)(yi−yˉ)。
我们可以进一步简化 S x y S_{xy} Sxy 为 S x y = ∑ i = 1 n ( x i − x ˉ ) y i \displaystyle S_{xy} = \sum_{i = 1}^n (x_i - \bar{x}) y_i Sxy=i=1∑n(xi−xˉ)yi。
那么我们可以将 β 1 ^ \hat{\beta_1} β1^ 与 β 0 ^ \hat{\beta_0} β0^ 写成:
β 1 ^ = ∑ i = 1 n ( x i − x ˉ ) S x x ⋅ y i \displaystyle \hat{\beta_1} =\sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx} } \cdot y_i β1^=i=1∑nSxx(xi−xˉ)⋅yi,
β 0 ^ = y ˉ − β 1 ^ x ˉ \displaystyle \hat{\beta_0} = \bar{y} - \hat{\beta_1} \bar{x} β0^=yˉ−β1^xˉ。
回忆起之前我们提到的,每一个 y i , i = 1 , 2 , ⋯ n y_i, \, i = 1, 2, \, \cdots \, n yi,i=1,2,⋯n 均是一个随机变量,这里我们分别对 β 1 \beta_1 β1 和 β 0 \beta_0 β0 的估计 β 1 ^ \hat{\beta_1} β1^ 与 β 0 ^ \hat{\beta_0} β0^ 就是 y i , i = 1 , 2 , ⋯ n y_i, i = 1, \, 2, \, \cdots \, n yi,i=1,2,⋯n 的函数。
无偏估计
首先,我们证明上述估计 β 1 ^ \hat{\beta_1} β1^ 与 β 0 ^ \hat{\beta_0} β0^ 是无偏估计 (unbiased)。
要证明我们的估计是无偏估计,我们须要证明我们估计的期望恒等于所估计的参数,即我们须要证明:
{ E [ β 1 ^ ] = β 1 E [ β 0 ^ ] = β 0 \begin{cases} & \mathbb{E}[ \hat{\beta_1} ] = \beta_1 \\ \\ & \mathbb{E}[ \hat{\beta_0} ] = \beta_0 \\ \end{cases} ⎩⎪⎨⎪⎧E[β1^]=β1E[β0^]=β0
证明过程十分直接,我们直接将上一节的表达式代入。
E ( β 1 ^ ) = E [ ∑ i = 1 n ( x i − x ˉ ) S x x ⋅ y i ] \displaystyle \mathbb{E}(\hat{\beta_1}) =\mathbb{E} \Big[ \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx} } \cdot y_i \Big] E(β1^)=E[i=1∑nSxx(xi−xˉ)⋅yi],注意到 y i = β 1 x i + β 0 + ϵ i y_i = \beta_1 x_i + \beta_0 + \epsilon_i yi=β1xi+β0+ϵi,我们有 E ( y i ) = β 1 x i + β 0 \displaystyle \mathbb{E}(y_i) = \beta_1 x_i + \beta_0 E(yi)=β1xi+β0。这里我们用到了 E [ ϵ i ] = 0 \displaystyle \mathbb{E} [ \epsilon_i ] = 0 E[ϵi]=0。
代入,我们有
E ( β 1 ^ ) = E [ ∑ i = 1 n ( x i − x ˉ ) S x x ⋅ y i ] = ∑ i = 1 n ( x i − x ˉ ) S x x E [ y i ] = ∑ i = 1 n ( x i − x ˉ ) S x x ⋅ ( β 1 x i + β 0 ) = β 1 ⋅ [ ∑ i = 1 n ( x i − x ˉ ) S x x ⋅ x i ] + β 0 ⋅ ∑ i = 1 n ( x i − x ˉ ) S x x = β 1 \begin{aligned} \displaystyle \mathbb{E} (\hat{\beta_1}) &= \mathbb{E} \Big[ \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx} } \cdot y_i \Big] \\ &= \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx}} \mathbb{E} [y_i] \\ &= \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx} } \cdot (\beta_1 x_i + \beta_0) \\ &= \beta_1 \cdot \Big[ \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx}} \cdot x_i \Big] + \beta_0 \cdot \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx}} \\ &= \beta_1 \end{aligned} E(β1^)=E[i=1∑nSxx(xi−xˉ)⋅yi]=i=1∑nSxx(xi−xˉ)E[yi]=i=1∑nSxx(xi−xˉ)⋅(β1xi+β0)=β1⋅[i=1∑nSxx(xi−xˉ)⋅xi]+β0⋅i=1∑nSxx(xi−xˉ)=β1。
注意,上式中,我们用到了 ∑ i = 1 n ( x i − x ˉ ) S x x = 0 \displaystyle \sum_{i = 1}^n \frac{ (x_i - \bar{x} ) }{S_{xx}} = 0 i=1∑nSxx(xi−xˉ)=0,以及 ∑ i = 1 n ( x i − x ˉ ) ⋅ x i = S x x \displaystyle \sum_{i = 1}^n (x_i - \bar{x}) \cdot x_i = S_{xx} i=1∑n(xi−xˉ)⋅xi=Sxx。
同样的,我们有,
E ( β 0 ^ ) = E [ y ˉ − x ˉ ⋅ β 1 ^ ] = 1 n ∑ i = 1 n ( β 0 + β 1 ⋅ x i ) − x ˉ ⋅ β 1 = β 0 \begin{aligned} \displaystyle \mathbb{E} (\hat{\beta_0}) &= \mathbb{E} \big[ \bar{y} - \bar{x} \cdot \hat{\beta_1} \big] \\ &= \frac{1}{n} \sum_{i = 1}^n (\beta_0 + \beta_1 \cdot x_i) - \bar{x} \cdot \beta_1 \\ &= \beta_0 \end{aligned} E(β0^)=E[yˉ−xˉ⋅β1^]=n1i=1∑n(β0+β1⋅xi)−xˉ⋅β1=β0。
所以, β 0 ^ \hat{\beta_0} β0^ 也是 β 0 \beta_0 β0 的无偏估计。
其余的几个性质
残差项之和为0
即 ∑ i = 1 n ( y i − y i ^ ) = 0 \displaystyle \sum_{i = 1}^n (y_i - \hat{y_i}) = 0 i=1∑n(yi−yi^)=0。
这里我们可以用求 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 的公式来证明。
在文章 单变量线性回归的最小二乘法公式 中,我们提到在用偏导数求 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 时,我们有 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 的表达式如下:
{ ∂ RSS ∂ β 0 = 2 n β 0 + 2 ∑ i = 1 n x i β 1 − 2 ∑ i = 1 n y i = 0 ∂ RSS ∂ β 1 = 2 ∑ i = 1 n x i 2 β 1 + 2 ∑ i = 1 n x i β 0 − 2 ∑ i = 1 n x i y i = 0 \displaystyle \begin{cases} &\displaystyle \frac{\partial \text{ RSS}}{\partial \beta_0} = 2 n \beta_0 + 2 \sum_{i = 1}^n x_i \beta_1 - 2 \sum_{i = 1}^n y_i = 0 \\ \\ &\displaystyle \frac{\partial \text{ RSS}}{\partial \beta_1} = 2 \sum_{i = 1}^n x_i^2 \beta_1 + 2 \sum_{i = 1}^n x_i \beta_0 - 2 \sum_{i = 1}^n x_i y_i = 0 \\ \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∂β0∂ RSS=2nβ0+2i=1∑nxiβ1−2i=1∑nyi=0∂β1∂ RSS=2i=1∑nxi2β1+2i=1∑nxiβ0−2i=1∑nxiyi=0
根据第一个式子,我们把 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 代入,我们有
n β 0 ^ + ∑ i = 1 n x i β 1 ^ − ∑ i = 1 n y i = 0 \displaystyle n \hat{\beta_0} + \sum_{i = 1}^n x_i \hat{\beta_1} - \sum_{i = 1}^n y_i = 0 nβ0^+i=1∑nxiβ1^−i=1∑nyi=0。
即, ∑ i = 1 n ( β 0 ^ + x i β 1 ^ ) − ∑ i = 1 n y i = 0 \displaystyle \sum_{i = 1}^n \left( \hat{\beta_0} + x_i \hat{\beta_1} \right) - \sum_{i = 1}^n y_i = 0 i=1∑n(β0^+xiβ1^)−i=1∑nyi=0,亦 ∑ i = 1 n ( y i − y i ^ ) = 0 \displaystyle \sum_{i = 1}^n (y_i - \hat{y_i}) = 0 i=1∑n(yi−yi^)=0。
线性拟合直线总会经过 ( x ˉ , y ˉ ) (\bar{x}, \bar{y}) (xˉ,yˉ) 这个点
拟合直线为 y = β 0 ^ + β 1 ^ ⋅ x \displaystyle y = \hat{\beta_0} + \hat{\beta_1} \cdot x y=β0^+β1^⋅x。而我们有
β 0 ^ = y ˉ − β 1 ^ x ˉ \displaystyle \hat{\beta_0} = \bar{y} - \hat{\beta_1} \bar{x} β0^=yˉ−β1^xˉ,所以 线性拟合直线总会经过 ( x ˉ , y ˉ ) (\bar{x}, \bar{y}) (xˉ,yˉ) 这个点。
在 x i x_i xi 权重下,残差和为0,即 ∑ i = 1 n x i e i = 0 \displaystyle \sum_{i = 1}^n x_i e_i = 0 i=1∑nxiei=0
我们可以直接把 e i = y i − y i ^ e_i = y_i - \hat{y_i} ei=yi−yi^ 代入。注意到 y i ^ = β 0 ^ + β 1 ^ ⋅ x i \displaystyle \hat{y_i} = \hat{\beta_0} + \hat{\beta_1} \cdot x_i yi^=β0^+β1^⋅xi,我们有
∑ i = 1 n x i e i = ∑ i = 1 n x i ⋅ ( y i − y i ^ ) = ∑ i = 1 n x i ⋅ ( y i − β 0 ^ − β 1 ^ ⋅ x i ) = ∑ i = 1 n x i y i − β 0 ^ ∑ i = 1 n x i − β 1 ^ ∑ i = 1 n x i 2 = ∑ i = 1 n x i y i − β 1 ^ ∑ i = 1 n x i 2 − ( y ˉ − β 1 ^ ⋅ x ˉ ) ⋅ ∑ i = 1 n x i = ∑ i = 1 n x i y i − β 1 ^ ∑ i = 1 n x i 2 − n x ˉ y ˉ + n β 1 ^ x ˉ 2 = ( ∑ i = 1 n x i y i − n x ˉ y ˉ ) − ( ∑ i = 1 n x i 2 − n x ˉ 2 ) β 1 ^ = S x y − S x x β 1 ^ = 0 \begin{aligned} \displaystyle \sum_{i = 1}^n x_i e_i &= \sum_{i = 1}^n x_i \cdot (y_i - \hat{y_i}) = \sum_{i = 1}^n x_i \cdot (y_i - \hat{\beta_0} - \hat{\beta_1} \cdot x_i) \\ &= \sum_{i = 1}^n x_i y_i - \hat{\beta_0} \sum_{i = 1}^n x_i - \hat{\beta_1} \sum_{i = 1}^n x_i^2 \\ &= \sum_{i = 1}^n x_i y_i - \hat{\beta_1} \sum_{i = 1}^n x_i^2 - (\bar{y} - \hat{\beta_1} \cdot \bar{x} ) \cdot \sum_{i = 1}^n x_i \\ &= \sum_{i = 1}^n x_i y_i - \hat{\beta_1} \sum_{i = 1}^n x_i^2 - n \bar{x} \bar{y} + n \hat{\beta_1} \bar{x}^2 \\ &= \left( \sum_{i = 1}^n x_i y_i - n \bar{x} \bar{y} \right) - \left(\sum_{i = 1}^n x_i^2 - n \bar{x}^2 \right) \hat{\beta_1} \\ &= S_{xy} - S_{xx} \hat{\beta_1} \\ &= 0 \end{aligned} i=1∑nxiei=i=1∑nxi⋅(yi−yi^)=i=1∑nxi⋅(yi−β0^−β1^⋅xi)=i=1∑nxiyi−β0^i=1∑nxi−β1^i=1∑nxi2=i=1∑nxiyi−β1^i=1∑nxi2−(yˉ−β1^⋅xˉ)⋅i=1∑nxi=i=1∑nxiyi−β1^i=1∑nxi2−nxˉyˉ+nβ1^xˉ2=(i=1∑nxiyi−nxˉyˉ)−(i=1∑nxi2−nxˉ2)β1^=Sxy−Sxxβ1^=0
故得证。
在 y i ^ \hat{y_i} yi^ 权重下,残差和为0,即 ∑ i = 1 n y i ^ e i = 0 \displaystyle \sum_{i = 1}^n \hat{y_i} e_i = 0 i=1∑nyi^ei=0
这里我们只须要利用上一个公式,即 ∑ i = 1 n x i e i = 0 \displaystyle \sum_{i = 1}^n x_i e_i = 0 i=1∑nxiei=0 即可。
因为我们有 ∑ i = 1 n y i ^ e i = ∑ i = 1 n ( β 0 ^ + β 1 ^ ⋅ x i ) e i = β 0 ^ ∑ i = 1 n e i + β 1 ^ ∑ i = 1 n x i e i = 0 \displaystyle \sum_{i = 1}^n \hat{y_i} e_i = \sum_{i = 1}^n \big(\hat{\beta_0} + \hat{\beta_1} \cdot x_i \big) e_i = \hat{\beta_0} \sum_{i = 1}^n e_i + \hat{\beta_1} \sum_{i = 1}^n x_i e_i = 0 i=1∑nyi^ei=i=1∑n(β0^+β1^⋅xi)ei=β0^i=1∑nei+β1^i=1∑nxiei=0。
模拟
最后我们用 python 程序来模拟“证明” β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 分别时 β 1 \beta_1 β1 和 β 0 \beta_0 β0 的无偏估计。
class unbiased_beta:
def __init__(self, arr_x: np.array, beta1: float, beta0: float, epsilon: float):
#self.N = N
self.X = arr_x
self.beta1 = beta1
self.beta0 = beta0
self.epsilon = epsilon
self.Sxx = ((self.X - self.X.mean()) ** 2).sum()
self.X_bar = self.X.mean()
def estimate_beta(self, N: int) -> tuple:
res_beta1, res_beta0 = [], []
for i in range(N):
#print(i)
cur_error = np.random.normal(0, self.epsilon, arr_x.shape)
cur_y = self.beta0 + self.beta1 * self.X + cur_error
cur_y_bar = cur_y.mean()
Sxy = ((self.X - self.X.mean()) * (cur_y - cur_y_bar)).sum()
cur_beta1 = Sxy / self.Sxx
cur_beta0 = cur_y_bar - cur_beta1 * self.X_bar
res_beta1.append(cur_beta1)
res_beta0.append(cur_beta0)
return np.mean(res_beta1), np.mean(res_beta0)
arr_x = np.array(range(1, 11))
a = unbiased_beta(arr_x, 2, 3, 1)
res = a.estimate_beta(10 ** 5)
res
(1.9988026861047237, 3.0029188805679303)
可以发现,在经过多次的实验之后,我们得到的 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 的平均值是非常接近真实值 β 1 \beta_1 β1 和 β 0 \beta_0 β0 的。
plt.figure(figsize=(8, 6), dpi=100)
plt.hist(res[0], bins=50, density=True);
line_vert = [[2, c] for c in np.linspace(0, 4, 100)]
plt.plot([c[0] for c in line_vert], [c[1] for c in line_vert], '-', linewidth=4)
plt.xlabel("estimated beta1 value", fontsize=20)
plt.ylabel("count", fontsize=20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)