本系列文章基于 R 语言中
lm函数的输出,介绍线性回归模型的例子和原理。
本文是系列文章的第三篇。前两篇文章中:
本文将介绍线性回归模型的模型评估。包括以下 4 个小节:
1. 模型评估
2. 示例:mtcars 数据集
3. 模型推导
4. 附录代码
为求简洁,下文用《1》指代《线性回归模型(OLS)1》,而用《2》指代《线性回归模型(OLS)2》。
以下内容为免费试读部分,完整文章可到公号“生信了”付费阅读
前文《1》介绍了线性回归模型用以下关系式来描述因变量 y n × 1 \mathbf{y}_{n \times 1} yn×1 与自变量 X n × ( p + 1 ) \mathbf{X}_{n \times (p+1)} Xn×(p+1) 之间的关系:
y
=
X
β
+
ϵ
其中 β \boldsymbol{\beta} β 是回归系数,而 ϵ \boldsymbol{\epsilon} ϵ 是误差项。注意 X \mathbf{X} X 一共包含 p p p 个自变量;其第一列都是 1,是对应着偏移项 β 0 \beta_0 β0 的值。OLS 下回归系数的最优估计值 β ^ \hat{\boldsymbol{\beta}} β^ 满足下式,即
β
^
=
arg
min
β
∥
y
−
X
β
∥
2
其解析解为:
β
^
=
(
X
T
X
)
−
1
X
T
y
在求得回归系数的估计值后,我们得到了一个“具体”的模型来描述因变量和自变量之间的关系。那接下来就是评估这个模型。在 R 语言 lm 函数的输出中,模型评估主要分为三个部分:
拟合优度(goodness of fit)是用来评估模型对观测值的拟合程度的概念;在线性回归模型中,可以用决定系数 R 2 R^2 R2(coefficient of determination)表示,其计算式如下:
R
2
=
E
S
S
T
S
S
=
1
−
R
S
S
T
S
S
其中
E
S
S
=
∑
i
=
1
n
(
y
^
i
−
y
ˉ
)
2
=
∥
y
^
−
y
ˉ
∥
2
R
S
S
=
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
=
∥
y
−
y
^
∥
2
T
S
S
=
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
=
∥
y
−
y
ˉ
∥
2
上面的 y ˉ = 1 n ∑ i = 1 n y i \displaystyle \bar{y} = \frac{1}{n} \sum_{i=1}^{n}y_i yˉ=n1i=1∑nyi。
E S S \mathrm{ESS} ESS(Explained Sum of Squares)是回归平方和,反映了观测值中被模型“解释”了的那部分方差; R S S \mathrm{RSS} RSS(Residual Sum of Squares)是残差平方和(也叫作剩余平方和),反映了观测值中没有被模型“解释”的那部分方差;而 T S S \mathrm{TSS} TSS(Total Sum of Squares)是观测值中所有的方差。
当 R 2 R^2 R2 越大时,代表被回归模型“解释”了的方差的比例越高,也就说明模型的拟合效果越好。
我们会在下文中证明
T
S
S
=
E
S
S
+
R
S
S
此外,值得注意的是:
推论(T3.1): 当模型使用的自变量增多(在原来模型的基础上增加自变量;第 3 小节有详细说明), R 2 R^2 R2 总是会不变或升高(至少不下降)。
因此,为了减少模型包含“无关”自变量使得 R 2 R^2 R2 升高的 bias,一般我们还会计算调整 R 2 R^2 R2(Adjusted R-Square; a d j . R 2 \mathrm{adj.} \, R^2 adj.R2)来衡量模型的拟合效果:
a
d
j
.
R
2
=
1
−
R
S
S
n
−
p
−
1
T
S
S
n
−
1
=
1
−
(
1
−
R
2
)
n
−
1
n
−
p
−
1
其中 n n n 是观测值的数量;而 p p p 是自变量的数量。调整 R 2 R^2 R2 并不总是随着自变量数量的增多而增大。
另外,无论是 R 2 R^2 R2 还是调整 R 2 R^2 R2 都只是衡量模型对观测值拟合效果的指标,而不能作为模型是否“正确”的衡量指标 [ref 9]。 R 2 R^2 R2 或调整 R 2 R^2 R2 都没有对模型的前提假设进行诊断。“错误”的模型可能得到较高的 R 2 R^2 R2,而“正确”的模型也可能得到较低的 R 2 R^2 R2。
我们知道,统计学中仅仅求得一个点估计值往往是不够的,经常还需要计算出这个点估计值的“可靠程度”,即要进行假设检验。在求得回归系数的估计值之后,我们自然地想要对每个回归系数进行检验;一般会检验每个回归系数是否为 0,也就是去检查对应的自变量是否和因变量显著相关。我们可以利用 F F F 检验对自变量整体进行检验或者利用 t t t 检验对每个自变量进行单独的检验。
值得注意的是,无论是 F F F 检验 还是 t t t 检验,都是建立在以下几个前提条件上的(我们在前文《2》中已经介绍过这几个条件):
E
[
ϵ
∣
X
]
=
0
var
[
ϵ
∣
X
]
=
σ
2
I
n
ϵ
∼
N
(
0
,
σ
2
I
n
)
rank
(
X
)
=
p
+
1
F F F 检验
在求得回归系数估计值后,我们可以首先检验模型是否“显著”,或者说检验自变量是否整体上和因变量显著相关( F F F 检验);更具体地,就是去检验自变量是否整体上对模型的拟合效果有“显著”的贡献。
从上一小节 1.1 中我们知道当移除模型中某些自变量后,模型的拟合效果不变或降低。如果某些自变量和因变量不显著相关,或者说这些自变量对模型的拟合没有贡献,那删除这些自变量可以使模型变得简洁,同时不”显著“降低模型的拟合效果。一个特殊情形是如果所有自变量在整体上对模型拟合没有贡献,那么可以删去所有自变量而只保留偏移项。
线性回归模型(OLS)的 F F F 检验意在检查自变量是否整体上对模型的拟合效果有“显著”的贡献。根据式(3.1),我们将要检验的模型记为 test model:
Test Model
:
y
=
X
β
+
ϵ
其中 ϵ ∼ N ( 0 , σ 2 I n ) \boldsymbol{\epsilon} \sim \mathcal{N}(\boldsymbol{0}, \sigma^2 \mathbf{I}_n) ϵ∼N(0,σ2In)。或者依照单个观测值表示为:
Test Model
:
y
i
=
β
0
+
β
1
x
i
1
+
β
2
x
i
2
+
⋯
+
β
p
x
i
p
+
ϵ
i
F F F 检验的零假设( H 0 \mathrm{H}_0 H0)为自变量整体上对模型的拟合效果没有“显著”的贡献,所有的自变量可以从模型中移除;其对应的模型记为零模型(null model):
H
0
:
β
1
=
β
2
=
⋯
=
β
p
=
0
Null Model
:
y
i
=
β
0
+
ϵ
i
零模型用矩阵形式表示为:
Null Model
:
y
=
β
0
+
ϵ
而备择假设 H 1 \mathrm{H}_1 H1 为自变量整体上对模型的拟合效果有“显著”的贡献,不应该将所有自变量从模型中移除;其对应的模型记为扩展模型(extended model):
H
1
:
∃
j
∈
{
1
,
2
,
⋯
,
p
}
,
s.t.
β
j
≠
0
Extended Model
:
y
i
=
β
0
+
β
1
x
i
1
+
β
2
x
i
2
+
⋯
+
β
p
x
i
p
+
ϵ
i
;
∃
j
∈
{
1
,
2
,
⋯
,
p
}
,
s.t.
β
j
≠
0
扩展模型用矩阵形式表示为:
Extended Model
:
y
=
X
β
+
ϵ
;
∃
j
∈
{
1
,
2
,
⋯
,
p
}
,
s.t.
β
j
≠
0
简单来说,extended model 使用了 p 个自变量,其回归系数至少有一个不为 0。此外,在进行 F F F 检验之前,我们添加了式(3.10)到式(3.13)所描述的几个条件;那么式(3.18)和式(3.21)都有 ϵ ∼ N ( 0 , σ 2 I n ) \boldsymbol{\epsilon} \sim \mathcal{N}(\boldsymbol{0}, \sigma^2 \mathbf{I}_n) ϵ∼N(0,σ2In)。
为了避免混淆,下文中我们分别对 null model 和 extended model 的统计量加注上标 (null) 和 (ext)。
在 F F F 检验中,我们构建一个 F F F 统计量 E S S (ext) / p R S S (ext) / ( n − p − 1 ) \frac{ \mathrm{ESS}^{\text{(ext)}} / p}{ \mathrm{RSS}^{\text{(ext)}} / (n-p-1)} RSS(ext)/(n−p−1)ESS(ext)/p;其中 E S S (ext) \mathrm{ESS}^{\text{(ext)}} ESS(ext) 和 R S S (ext) \mathrm{RSS}^{\text{(ext)}} RSS(ext) 的计算就是式(3.5)和式(3.6)。我们发现(证明过程见第 3 节):
R
S
S
(null)
=
T
S
S
(ext)
于是,
E
S
S
(ext)
=
T
S
S
(ext)
−
R
S
S
(ext)
=
R
S
S
(null)
−
R
S
S
(ext)
所以我们可以将上述 F F F 统计量的分子看成是两个模型的 R S S \mathrm{RSS} RSS 的差值,从直观上这也符合 F F F 检验的初衷。也就是说我们可以将线性回归模型的 F F F 检验看作是比较 null model 和 extended model 之间的 R S S \mathrm{RSS} RSS 的差异是否显著。
我们可以证明在零假设条件下,上述统计量符合自由度是 p p p 和 的 n − p − 1 n-p-1 n−p−1 的 F F F 分布(证明过程见第 3 节):
E
S
S
(ext)
/
p
R
S
S
(ext)
/
(
n
−
p
−
1
)
∼
F
p
,
n
−
p
−
1
于是,我们可以根据式(3.24)计算出 p p p-value,从而对自变量整体是否对模型拟合有显著贡献作出统计检验。
类似上一小节讲到拟合优度时提到的, F F F 检验只是检查模型自变量整体在拟合效果上是否显著;并不作为模型是否“正确”的指标;它并没有对模型的前提假设进行诊断。
如果 F F F 检验的结果是自变量整体没有和因变量显著相关,那么需要根据数据的特性对现有自变量作一些变换,或者重新选择一些新的自变量,然后再构建新的模型。否则,如果 F F F 检验的结果显著,我们需要进一步对每个自变量作单独的检验,即 t t t 检验。当然,我们需要注意 t t t 检验中可能存在的多重检验带来的(假阳性)问题,尤其是自变量数量多的时候。
假设我们想要检验第 j j j 个自变量是否和因变量显著相关。此时, t t t 检验的零假设(null hypothesis)为第 j j j 个自变量和因变量没有显著相关,即:
H
0
:
β
j
=
0
注意这里 t t t 检验在检验回归系数是否为 0,也可以用类似的方法对偏移项 β 0 \beta_0 β0 是否为 0 进行检验。
t t t 检验的备择假设为第 j j j 个自变量和因变量显著相关,即:
H
1
:
β
j
≠
0
假定式(3.10)到式(3.13)所描述的几个假设条件都成立,我们已经在前文《2》中证明了,在零假设条件下,统计量 T j T_j Tj 符合自由度是 n − p − 1 n-p-1 n−p−1 的 t t t 分布:
T
j
=
β
^
j
s
2
(
X
T
X
)
j
j
−
1
∼
t
n
−
p
−
1
其中
s
2
=
(
y
−
X
β
^
)
T
(
y
−
X
β
^
)
n
−
p
−
1
详细信息可以参见前文《2》中的式(2.11)。
于是我们可以根据式(3.27)和式(3.28)计算出各个回归系数(包括偏移项)的 T j T_j Tj 值以及 p p p-value,从而对各个自变量是否和因变量显著相关作出统计检验。
置信区间
顺便提一下,关于线性回归模型的 t t t 检验,常见的操作还包括回归系数置信区间的计算。这个可以根据式(3.27)和式(3.28)推导得到。比如, β j \beta_j βj 的 γ \gamma γ(比如常见的95%)置信区间可以表示为:
(
β
^
j
−
T
n
−
p
−
1
−
1
(
1
+
γ
2
)
s
.
e
.
^
(
β
^
j
)
,
β
^
j
+
T
n
−
p
−
1
−
1
(
1
+
γ
2
)
s
.
e
.
^
(
β
^
j
)
)
其中 β ^ j \hat{\beta}_j β^j 的“标准差” s . e . ^ ( β ^ j ) \widehat{\mathrm{s.e.}}(\hat{\beta}_j) s.e. (β^j) 为:
s
.
e
.
^
(
β
^
j
)
=
s
2
(
X
T
X
)
j
j
−
1
T m ( ⋅ ) \mathcal{T}_{m}(\cdot) Tm(⋅) 是自由度为 m m m 的 t t t 分布的累积分布函数;而 T m − 1 ( ) \mathcal{T}^{-1}_{m}() Tm−1() 是 T m ( ⋅ ) \mathcal{T}_{m}(\cdot) Tm(⋅) 对应的分位数(quantile)函数。
下文给出一个 R 语言中线性回归模型的例子,然后介绍其拟合优度的计算、 F F F 检验和 t t t 检验。