摘要
我们知道一元和多元线性回归系数都有解析解,本文将简要介绍总结线性回归系数的几个常见的性质。
线性回归问题的描述
我们回忆一下,单变量线性回归问题是指,给定了 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),每个
ϵ
i
\epsilon_i
ϵi 均是一个随机变量,独立且均服从 一个均值为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 均是一个随机变量。
所以, y i y_i yi 作为随机变量,可以用下图来体现。
上图中, x x x 轴上的绿色的圆点表示固定的 x i x_i xi ,而橙色的直线表示真实的线性关系,而蓝色的钟型曲线代表随机变量 y i y_i yi 服从的概率密度函数。
单变量线性回归系数的公式
我们回顾单变量线性回归问题的公式,有
{
β
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 的无偏估计。
线性回归系数的方差
下面我们来看线性回归系数 β 1 ^ \hat{\beta_1} β1^ 和 β 0 ^ \hat{\beta_0} β0^ 的方差。直观上看,当误差项的方差 σ 2 \sigma^2 σ2 越大时, V a r ( β 1 ^ ) \displaystyle \mathrm{Var}( \hat{\beta_1} ) Var(β1^) 与 V a r ( β 0 ^ ) \displaystyle \mathrm{Var}( \hat{\beta_0} ) Var(β0^) 也应该越大。因为误差项的方差越大,随机变量 y i y_i yi 的取值就会越不确定,从而使得线性拟合的直线不确定性越大。
具体地,我们有
V
a
r
(
β
1
^
)
=
σ
2
S
x
x
\displaystyle \mathrm{Var}( \hat{\beta_1} ) = \frac{ \sigma^2 }{S_{xx}}
Var(β1^)=Sxxσ2,
V
a
r
(
β
0
^
)
=
σ
2
(
1
n
+
x
ˉ
2
S
x
x
)
\displaystyle \mathrm{Var}( \hat{\beta_0} ) = \sigma^2 \left( \frac{ 1 }{ n } + \frac{ \bar{x}^2 }{S_{xx}} \right)
Var(β0^)=σ2(n1+Sxxxˉ2)。
对于
β
1
^
\hat{\beta_1}
β1^,我们可以直接计算如下,
因为
β
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, 我们记
c
i
=
(
x
i
−
x
ˉ
)
S
x
x
\displaystyle c_i = \frac{ (x_i - \bar{x} ) }{S_{xx} }
ci=Sxx(xi−xˉ)。于是,
V a r ( β 1 ^ ) = ∑ i = 1 n ( c i 2 ⋅ V a r ( y i ) ) = ∑ i = 1 n ( x i − x ˉ ) 2 S x x 2 ⋅ V a r ( y i ) = σ 2 S x x 2 ∑ i = 1 n ( x i − x ˉ ) 2 = σ 2 S x x 。 \begin{aligned} \displaystyle \mathrm{Var}( \hat{\beta_1} ) &= \sum_{i = 1}^n \left( c_i^2 \cdot \mathrm{Var}( y_i ) \right) = \sum_{i = 1}^n \frac{ (x_i - \bar{x} )^2 }{S_{xx}^2 } \cdot \mathrm{Var}( y_i ) \\ &= \frac{\sigma^2}{S_{xx}^2} \sum_{i = 1}^n (x_i - \bar{x} )^2 = \frac{\sigma^2}{S_{xx}}。 \end{aligned} Var(β1^)=i=1∑n(ci2⋅Var(yi))=i=1∑nSxx2(xi−xˉ)2⋅Var(yi)=Sxx2σ2i=1∑n(xi−xˉ)2=Sxxσ2。
下面我们来看 V a r ( β 0 ^ ) \displaystyle \mathrm{Var}( \hat{\beta_0} ) Var(β0^)。
因为 β 0 ^ = y ˉ − x ˉ ⋅ β 1 ^ \displaystyle \hat{\beta_0} = \bar{y} - \bar{x} \cdot \hat{\beta_1} β0^=yˉ−xˉ⋅β1^,我们有 V a r ( β 0 ^ ) = V a r ( y ˉ ) + V a r ( x ˉ ⋅ β 1 ^ ) − 2 C o v ( y ˉ , x ˉ ⋅ β 1 ^ ) \displaystyle \mathrm{Var}( \hat{\beta_0} ) = \mathrm{Var} (\bar{y}) + \mathrm{Var} ( \bar{x} \cdot \hat{\beta_1}) - 2 \mathrm{Cov} (\bar{y}, \bar{x} \cdot \hat{\beta_1}) Var(β0^)=Var(yˉ)+Var(xˉ⋅β1^)−2Cov(yˉ,xˉ⋅β1^)。
我们知道,
V
a
r
(
y
ˉ
)
=
1
n
2
∑
i
=
1
n
V
a
r
(
y
i
)
=
1
n
2
∑
i
=
1
n
V
a
r
(
ϵ
i
)
=
σ
2
n
\displaystyle \mathrm{Var} (\bar{y}) = \frac{1}{n^2} \sum_{i=1}^n \mathrm{Var} (y_i) = \frac{1}{n^2} \sum_{i=1}^n \mathrm{Var} (\epsilon_i) = \frac{\sigma^2}{n}
Var(yˉ)=n21i=1∑nVar(yi)=n21i=1∑nVar(ϵi)=nσ2。
而
V
a
r
(
x
ˉ
⋅
β
1
^
)
=
x
ˉ
2
⋅
V
a
r
(
β
1
^
)
=
x
ˉ
2
⋅
σ
2
S
x
x
\displaystyle \mathrm{Var} (\bar{x} \cdot \hat{\beta_1}) = \bar{x}^2 \cdot \mathrm{Var}(\hat{\beta_1}) = \bar{x}^2 \cdot \frac{\sigma^2}{S_{xx}}
Var(xˉ⋅β1^)=xˉ2⋅Var(β1^)=xˉ2⋅Sxxσ2。
下面我们来看协方差项
C
o
v
(
y
ˉ
,
x
ˉ
⋅
β
1
^
)
=
x
ˉ
⋅
C
o
v
(
y
ˉ
,
β
1
^
)
\displaystyle \mathrm{Cov} (\bar{y}, \bar{x} \cdot \hat{\beta_1}) = \bar{x} \cdot \mathrm{Cov}(\bar{y}, \hat{\beta_1})
Cov(yˉ,xˉ⋅β1^)=xˉ⋅Cov(yˉ,β1^)。
C
o
v
(
y
ˉ
,
β
1
^
)
=
C
o
v
(
1
n
∑
i
=
1
n
y
i
,
∑
i
=
1
n
x
i
−
x
ˉ
S
x
x
y
i
)
=
1
n
∑
i
=
1
n
C
o
v
(
y
i
,
x
i
−
x
ˉ
S
x
x
y
i
)
=
1
n
∑
i
=
1
n
x
i
−
x
ˉ
S
x
x
⋅
σ
2
=
σ
2
n
x
i
−
x
ˉ
S
x
x
=
0
。
\begin{aligned} \displaystyle \mathrm{Cov}(\bar{y}, \hat{\beta_1} ) &= \mathrm{Cov} \Big( \frac{1}{n} \sum_{i=1}^n y_i, \sum_{i=1}^n \frac{x_i - \bar{x}}{S_{xx}} y_i \Big) \\ &= \frac{1}{n} \sum_{i=1}^n \mathrm{Cov} \Big( y_i, \frac{x_i - \bar{x}}{S_{xx}} y_i \Big) \\ &= \frac{1}{n} \sum_{i=1}^n \frac{x_i - \bar{x}}{S_{xx}} \cdot \sigma^2 \\ &= \frac{\sigma^2}{n} \frac{x_i - \bar{x}}{S_{xx}} = 0。 \end{aligned}
Cov(yˉ,β1^)=Cov(n1i=1∑nyi,i=1∑nSxxxi−xˉyi)=n1i=1∑nCov(yi,Sxxxi−xˉyi)=n1i=1∑nSxxxi−xˉ⋅σ2=nσ2Sxxxi−xˉ=0。
于是,我们有,
V a r ( β 0 ^ ) = V a r ( y ˉ ) + V a r ( x ˉ ⋅ β 1 ^ ) − 2 C o v ( y ˉ , x ˉ ⋅ β 1 ^ ) = σ 2 n + x ˉ 2 ⋅ σ 2 S x x = σ 2 ( 1 n + x ˉ 2 S x x ) \displaystyle \mathrm{Var}( \hat{\beta_0} ) = \mathrm{Var} (\bar{y}) + \mathrm{Var} ( \bar{x} \cdot \hat{\beta_1}) - 2 \mathrm{Cov} (\bar{y}, \bar{x} \cdot \hat{\beta_1}) = \frac{\sigma^2}{n} + \bar{x}^2 \cdot \frac{\sigma^2}{S_{xx}} = \sigma^2 \left( \frac{ 1 }{ n } + \frac{ \bar{x}^2 }{S_{xx}} \right) Var(β0^)=Var(yˉ)+Var(xˉ⋅β1^)−2Cov(yˉ,xˉ⋅β1^)=nσ2+xˉ2⋅Sxxσ2=σ2(n1+Sxxxˉ2)。
其余的几个性质
残差项之和为0
我们记残差项为 e i e_i ei, e i = y i − y i ^ \displaystyle e_i = y_i - \hat{y_i} ei=yi−yi^。即 ∑ 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)
多元线性回归的系数也是无偏估计
上文中我们介绍了单变量线性回归中, β 1 ^ \hat{\beta_1} β1^ 与 β 0 ^ \hat{\beta_0} β0^ 是 β 1 \beta_1 β1 与 β 0 \beta_0 β0 的无偏估计 (unbiased) 。下面我们来看多变量线性回归中系数估计的无偏性质。
根据多变量线性回归的 normal equation,我们有
β ^ = ( X T X ) − 1 X T y \displaystyle \mathbf{\hat{\beta}} = (X^TX)^{-1}X^T \mathbf{y} β^=(XTX)−1XTy。
注意到,
y
=
X
β
+
ϵ
\displaystyle \mathbf{y}= X \mathbf{\beta} + \mathbf{\epsilon}
y=Xβ+ϵ。
代入
β
^
\displaystyle \mathbf{\hat{\beta}}
β^ 的表达式,我们有
E [ β ^ ] = E [ ( X T X ) − 1 X T y ] = E [ ( X T X ) − 1 X T ( X β + ϵ ) ] = E [ ( X T X ) − 1 X T X β ] + E [ ( X T X ) − 1 X T ϵ ] = β \begin{aligned} \mathbb{E} [ \mathbf{\hat{\beta}} ] &= \mathbb{E} \big[ (X^TX)^{-1}X^T \mathbf{y} \big] = \mathbb{E} \big[ (X^TX)^{-1}X^T ( X \mathbf{\beta} + \mathbf{\epsilon} ) \big] \\ &= \mathbb{E} \big[ (X^TX)^{-1} X^T X \mathbf{\beta} \big] + \mathbb{E} \big[ (X^TX)^{-1} X^T \mathbf{\epsilon} \big] \\ &= \mathbf{\beta} \end{aligned} E[β^]=E[(XTX)−1XTy]=E[(XTX)−1XT(Xβ+ϵ)]=E[(XTX)−1XTXβ]+E[(XTX)−1XTϵ]=β。
于是,我们知道,对于多元线性回归, β ^ \displaystyle \mathbf{\hat{\beta}} β^ 也是 β \mathbf{\beta} β 的无偏估计。
我们用程序验证如下。
class unbiased_beta_mv:
def __init__(self, arr_x: np.array, beta: np.array, epsilon: float):
#self.N = N
self.X = arr_x
self.beta = beta
self.epsilon = epsilon
def estimate_beta(self, N: int) -> tuple:
res_beta = []
for i in range(N):
#print(i)
cur_error = np.random.normal(0, self.epsilon, arr_x.shape[0])
cur_y = self.X @ self.beta + cur_error.reshape((-1, 1))
cur_beta_hat = np.linalg.inv(self.X.T @ self.X) @ self.X.T @ cur_y
res_beta.append(cur_beta_hat)
return np.hstack(res_beta)
beta = np.array([[1], [2], [3], [4]])
arr_x = np.random.normal(0, 1, (10, 3))
arr_x = np.hstack((np.ones((10, 1)), arr_x))
a = unbiased_beta_mv(arr_x, beta, 1)
res = a.estimate_beta(10 ** 5)
np.mean(res, axis=1)
array([1.00255519, 1.99960968, 2.99919333, 4.00008326])
参考文献
[1] Introduction to linear regression analysis, Douglas C. Montgomery, Elizabeth A. Peck, G. Geoffrey Vining, John Wiley & Sons (2021)