ISLR 读书笔记五:线性回归的其他考虑
这一篇文章主要讲了前两讲线性回归中没有涉及到的问题。
定性自变量
之前的线性回归自变量都是定量数据,如果变量是定性数据,可以引入哑变量(dummy variable)
只有两个类
如果某个自变量只有两个类,比如性别,分为男、女,那么可以引入哑变量
x
i
x_i
xi,
x
i
=
{
1
性
别
为
女
0
性
别
为
男
x_i=\left\{ \begin{aligned} 1 & \quad 性别为女 \\ 0 & \quad 性别为男 \end{aligned} \right.
xi={10性别为女性别为男
那么就有
y
i
=
β
0
+
β
1
x
i
+
ϵ
i
=
{
β
0
+
β
1
+
ϵ
i
性
别
为
女
β
0
+
ϵ
i
性
别
为
男
y_i=\beta_0+\beta_1x_i+\epsilon_i=\left\{ \begin{aligned} \beta_0+\beta_1+\epsilon_i & \quad 性别为女 \\ \beta_0 + \epsilon_i & \quad 性别为男 \end{aligned} \right.
yi=β0+β1xi+ϵi={β0+β1+ϵiβ0+ϵi性别为女性别为男
有多个类
而如果某个自变量有多个类,比如学历,可以粗浅分为三个类:小学、中学,大学。那么同样可以引入哑变量
x
i
1
,
x
i
2
x_{i1}, x_{i2}
xi1,xi2
x
i
1
=
{
1
学
历
为
小
学
0
学
历
非
小
学
x_{i1}=\left\{ \begin{aligned} 1 & \quad 学历为小学 \\ 0 & \quad 学历非小学 \end{aligned} \right.
xi1={10学历为小学学历非小学
x
i
2
=
{
1
学
历
为
中
学
0
学
历
非
中
学
x_{i2}=\left\{ \begin{aligned} 1 & \quad 学历为中学 \\ 0 & \quad 学历非中学 \end{aligned} \right.
xi2={10学历为中学学历非中学
那么就有
y
i
=
β
0
+
β
1
x
i
1
+
β
2
x
i
2
+
ϵ
i
=
{
β
0
+
β
1
+
ϵ
i
学
历
为
小
学
β
0
+
β
2
+
ϵ
i
学
历
为
中
学
β
0
+
ϵ
i
学
历
为
大
学
y_i=\beta_0+\beta_1x_{i1}+\beta_2x_{i2}+\epsilon_i=\left\{ \begin{aligned} \beta_0+\beta_1+\epsilon_i & \quad 学历为小学 \\ \beta_0 +\beta_2+\epsilon_i & \quad 学历为中学 \\ \beta_0 +\epsilon_i & \quad 学历为大学 \end{aligned} \right.
yi=β0+β1xi1+β2xi2+ϵi=⎩⎪⎨⎪⎧β0+β1+ϵiβ0+β2+ϵiβ0+ϵi学历为小学学历为中学学历为大学
线性模型的延伸
线性回归模型有两个重要假设:加性(additive)和线性(linear)。加性假设要求某个自变量的改变对因变量的影响是独立于其他自变量的。线性假设要求某个自变量的单位改变,引起的因变量的改变量是常数。
加性假设的移除
考虑到不同的变量之间可能存在协同作用(synergy effect)。如果
X
1
X_1
X1 和
X
2
X_2
X2 之间有协同作用,那么原线性模型
Y
=
β
0
+
β
1
X
1
+
β
2
X
2
+
ϵ
Y=\beta_0+\beta_1X_1+\beta_2X_2+\epsilon
Y=β0+β1X1+β2X2+ϵ
可以引入交互项(interaction term)
X
1
X
2
X_1X_2
X1X2,
Y
=
β
0
+
β
1
X
1
+
β
2
X
2
+
β
3
X
1
X
2
+
ϵ
Y=\beta_0+\beta_1X_1+\beta_2X_2+\beta_3X_1X_2+\epsilon
Y=β0+β1X1+β2X2+β3X1X2+ϵ
可以通过假设检验
β
3
\beta_3
β3 是否显著为0,来判断交互项存在是否必要。
需要注意的是引入交互项要遵循层次性原则(hierarchical principle):如果线性模型引入交互项,必要包含原来的项。
非线性关系
拿简单线性回归为例:
y
=
β
0
+
β
1
x
+
ϵ
y=\beta_0+\beta_1x+\epsilon
y=β0+β1x+ϵ
如果模型不是线性的,可以尝试引入二次项:
x
2
x^2
x2
y
=
β
0
+
β
1
x
+
β
2
x
2
+
ϵ
y=\beta_0+\beta_1x+\beta_2x^2+\epsilon
y=β0+β1x+β2x2+ϵ
同样可以引入三次项,甚至更高次项来拟合。
潜在的问题
非线性关系
原始数据可能未必是线性的。线性模型拟合好后,可以通过画残差图(residual plots)的方式,来观察拟合效果的好坏。如果残差图是无序无规律的,那么拟合效果较好。反之,如果残差图有明显的规律分布,那么往往说明数据时非线性的。这时,可以尝试对数据作变换,然后再进行线性回归。常见的变换有: l o g ( X ) , X , X 2 log(X),\sqrt{X},X^2 log(X),X ,X2
误差项的相关性
线性回归模型要求,误差项 ϵ 1 , ϵ 2 , ⋯ , ϵ n \epsilon_1,\epsilon_2,\cdots,\epsilon_n ϵ1,ϵ2,⋯,ϵn 是不相关的。但实际问题中,误差项可能是相关的,那么此时得到的置信区间,往往是不可靠的。
误差项方差非常数
线性回归模型要求误差项的方差是常数,即 V a r ( ϵ i ) = σ 2 Var(\epsilon_i)=\sigma^2 Var(ϵi)=σ2。但是在实际问题中,误差项方差可能不是常数,称为异方差性(heteroscedasticity )。异方差性可以通过残差图观测出。一个可能的解决策略是对因变量作变换。
离群值
原始数据可能会存在离群值(outliers)。离群值指的是 y i y_i yi 远离预测值的点。一个解决方法是画出数据的学生化残差图(studentized residuals),剔除学生化残差绝对值大于3的点。
高杠杆数据点
高杠杆(high leverage)数据点是
x
i
x_i
xi 异常的点,需要剔除。图中的41号点,即为高杠杆数据点。
对于简单线性回归模型,可以用杠杆统计量(leverage statistic):
h
i
=
1
n
+
(
x
i
−
x
ˉ
)
2
∑
i
′
=
1
n
(
x
i
′
−
x
ˉ
)
2
h_i = \frac{1}{n}+\frac{(x_i-\bar{x})^2}{\sum_{i'=1}^n(x_{i'}-\bar{x})^2}
hi=n1+∑i′=1n(xi′−xˉ)2(xi−xˉ)2
来找到高杠杆点。
h
i
h_i
hi值高的,即为高杠杆点。
共线性
共线性指的是两个或者多个自变量之间存在较强的相关性。共线性会减少参数估计的准确性。可以用相关性矩阵来观察自变量之间的共线性。但是并非所有的共线性都可以用相关性矩阵检测出,因为还存在有多重共线性(multicollinearity):可能任意两个变量之间都没有很强的相关性,但是三个或者更多个变量之间,会存在共线性。所以,更好的检测共线性的统计量是VIF(variance inflation factor)
V
I
F
(
β
^
j
)
=
1
1
−
R
X
j
∣
X
−
j
2
VIF(\hat{\beta}_j)=\frac{1}{1-R_{X_j|X_{-j}}^2}
VIF(β^j)=1−RXj∣X−j21
R
X
j
∣
X
−
j
2
R_{X_j|X_{-j}}^2
RXj∣X−j2是指
X
j
X_j
Xj 对所有其他自变量进行回归得到的
R
2
R^2
R2。
如果 VIF 值超过 5 或者 10,表示存在有共线性,该变量有问题,可以选择移除该变量,或者将共线的变量组合成一个变量。