分享

多元回归分析存在多重共线性了怎么办?

 生信修炼手册 2019-12-24

在进行多元回归分析时,两个自变量之间可能存在线性相关,所谓线性用数学公式表示如下

即两个自变量之间的关系是一条直线, 称之为共线性,当三个或以上自变量之间存在共线性时,称之为多重共线性,数据公式表示如下


其中,系数不全为零。在回归分析中,假设多个自变量之间是相互独立的,如果存在多重共线性,会造成分析结果的不准确,所以在进行多元回归分析时,我们需要检测自变量是否存在多重共线性。存在多重共线性实际上说明自变量存在了冗余,需要剔除对应的变量之后再进行回归分析。

那么如何来评判一个变量与其他变量是否存在共线性呢?从多重共线性的数学公式可以看出,符合多重共线性的自变量构成了一个线性方程。基于这个思想,对于每个自变量x,将其作为因变量,用线性回归拟合剩余的自变量和x之间的关系。

在线性回归中,拟合结果的好坏用R2来表示,可以想象,如果完全符合上述方程,即存在完全共线性的情况下,R2值最大,为1。实际情况中,虽然不会是完全共线性,但是也可以用R2来表征其线性关系的强弱,R2越大,说明线性关系越明确。

为了更加明确的衡量共线性,数学家利用R2构建了一个统计量,称之为方差膨胀因子,简写为VIF, 全称如下

variance inflation factor

计算公式如下

其中的1-R2也称之为容忍度tolerance, 可以看到,VIF是容忍度的倒数。VIF值越大,说明多重共线性越强,通常情况下,以10为阈值,认为VIF大于10时,多重共线性非常强。需要说明的是,这个阈值是一个经验值,也有采用5作为阈值的。另外还有一种说法,不使用规定阈值,而是通过分析每个自变量的VIF值,将其中显著离群的值作为判断共线性大的依据。

在R中,可以通过如下方式计算每个自变量的VIF值

也可以自己用公式来验证一下,代码如下

当得到各个自变量对应的VIF值之后,可以来筛选VIF值较大的自变量,在上述例子中,自变量tax的VIF值最大,超过了9,可以其与其他变量的多重共线性叫明显,可以考虑去除该自变量,重新进行回归分析。

在进行多元回归时,自变量的多重共线性是必须要考虑的问题,可以根据自变量对应的方差膨胀因子VIF值,来剔除共线性明显的自变量,重新拟合,以提高回归分析的准确性。

·end·

—如果喜欢,快分享给你的朋友们吧—

往期精彩

  基因型填充
  CNV分析
  TCGA
  生存分析
  肿瘤数据库
  肿瘤免疫和新抗原
  Hi-C数据分析
  chip_seq数据分析
  motif
  chip_seq数据库
  18年文章目录

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多