前面几天阐述了线性回归的最小二乘法(OLS)在做回归时,一致地看待每一个样本点,是典型的无偏估计,会得到一个使得残差最小的权重参数。然而,在面对一堆数据集存在多重共线性时,OLS 就变得对样本点的误差极为敏感,最终回归后的权重参数方差变大。这就是需要解决的共线性回归问题,一般思想是放弃无偏估计,损失一定精度,对数据做有偏估计,这里介绍两种常用的算法:脊回归和套索回归。
00 基本概念
多重共线性(Multicollinearity)是指线性回归模型中的自变量之间由于存在高度相关关系而使模型的权重参数估计失真或难以估计准确的一种特性,多重是指一个自变量可能与多个其他自变量之间存在相关关系。
例如一件商品的销售数量可能与当地的人均收入和当地人口数这两个其他因素存在相关关系。
在研究社会、经济问题时,因为问题本身的复杂性,设计的因素很多。在建立回归模型时,往往由于研究者认识水平的局限性,很难在众多因素中找到一组互不相关,又对因变量 y 产生主要影响的变量,不可避免地出现所选自变量出现多重相关关系的情形。
在前面的介绍中,我们已经知道普通最小二乘法(OLS)在进行线性回归时的一个重要假设就是数据集中的特征之间不能存在严重的共线性。最迫切的是,我们在拿到一堆数据集时,该如何诊断这些特征间是不是存在共线性问题呢?
01 如何诊断多重共线性
根据已有的参考文献,常用的多重共线性的诊断方法包括:方差膨胀因子法,特征根分析法,相关系数法等,基于这些方法的启发,本文初步地阐述个人的一些方法,不一定准确,仅代表个人的理解。
我们可以绘制每个特征与 y 间的关系图,然后肉眼对比每个特征对 y 的影响情况,关系走势图相近的那些特征就是可能存在共线性的。
例如,下面所示的一个例子是房子的价值与两个影响它的特征:特征1和特征2,方便起见我们选取了10个样本点来进行两个特征间的相关性分析,在 Jupyter notebook中做了测试,代码如下:
#导入两个常用模块