线性回归系数的几个性质

发布于:2022-07-17 ⋅ 阅读:(753) ⋅ 点赞:(0)

摘要

我们知道一元和多元线性回归系数都有解析解,本文将简要介绍总结线性回归系数的几个常见的性质。

线性回归问题的描述

我们回忆一下,单变量线性回归问题是指,给定了 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^=(xixˉ)2(xixˉ)(yiyˉ)β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^=(xixˉ)2(xixˉ)(yiyˉ),对参数 β 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=1n(xixˉ)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=1n(xixˉ)(yiyˉ)

我们可以进一步简化 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=1n(xixˉ)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=1nSxx(xixˉ)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=1nSxx(xixˉ)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=1nSxx(xixˉ)yi]=i=1nSxx(xixˉ)E[yi]=i=1nSxx(xixˉ)(β1xi+β0)=β1[i=1nSxx(xixˉ)xi]+β0i=1nSxx(xixˉ)=β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=1nSxx(xixˉ)=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=1n(xixˉ)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=1n(β0+β1xi)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=1n(yiyi^)=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=1nxiβ12i=1nyi=0β1 RSS=2i=1nxi2β1+2i=1nxiβ02i=1nxiyi=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=1nxiβ1^i=1nyi=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=1n(β0^+xiβ1^)i=1nyi=0,亦 ∑ i = 1 n ( y i − y i ^ ) = 0 \displaystyle \sum_{i = 1}^n (y_i - \hat{y_i}) = 0 i=1n(yiyi^)=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=1nxiei=0

我们可以直接把 e i = y i − y i ^ e_i = y_i - \hat{y_i} ei=yiyi^ 代入。注意到 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=1nxiei=i=1nxi(yiyi^)=i=1nxi(yiβ0^β1^xi)=i=1nxiyiβ0^i=1nxiβ1^i=1nxi2=i=1nxiyiβ1^i=1nxi2(yˉβ1^xˉ)i=1nxi=i=1nxiyiβ1^i=1nxi2nxˉyˉ+nβ1^xˉ2=(i=1nxiyinxˉyˉ)(i=1nxi2nxˉ2)β1^=SxySxxβ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=1nyi^ei=0

这里我们只须要利用上一个公式,即 ∑ i = 1 n x i e i = 0 \displaystyle \sum_{i = 1}^n x_i e_i = 0 i=1nxiei=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=1nyi^ei=i=1n(β0^+β1^xi)ei=β0^i=1nei+β1^i=1nxiei=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)

对 beta1 的估计值的统计

本文含有隐藏内容,请 开通VIP 后查看