方差膨胀因子的计算公式为,方差膨胀因子与相关系数

  方差膨胀因子的计算公式为,方差膨胀因子与相关系数

  这里有一个关于Python实现的方法和原理的有趣分析。

  方差因子是消除多重共线性的经典方法,原理简单,实现优雅,效果突出。源码数据可以通过私聊获取,每天固定时间查看和回复。

  有趣的原理分析

  多元回归模型的一个主要假设是,我们预测的变量(自变量)是互不相关的。我们希望预测变量与响应变量(因变量)相关,但彼此不相关。比如言情剧里,A喜欢B,B却喜欢C,结果发现C其实喜欢A;而B的一举一动都有可能影响A,所以当我们用B和C作为自变量来预测因变量A的行为时,这两个自变量之间的相互作用会有点不舒服。

  解释公式

  方差膨胀因子(以下简称VIF)是指解释变量之间存在多重共线性时的方差与不存在多重共线性时的方差之比。

  从上式可以看出,在方差展开因子的检测中:每个自变量都会有一个展开因子值VIF_i,最后根据该值选择是否删除。

  Ri^2表示相关性。谁和谁有关联?它是自变量中的某一变量与其余自变量之间的多元线性回归,将回归结果即模型精度作为该变量与其余自变量之间的相关性。听起来可能有点绕弯。下面举个例子(用“面积、卧室数量、卫生间数量”作为自变量预测房价。检测自变量的方差展开因子时,面积、卧室数、卫生间数轮流作为独立因变量,其余两个变量作为自变量,看三个自变量中哪一个对其余两个变量的解释力高)

  较大的Ri^2是,如果已经达到0.9,那么分母很小,vif_i的值等于10,说明这个自变量同时解释了一个或多个其他自变量,存在多重共线性。可以考虑删除一些自变量。

  VIF越大,共线性越严重。经验方法表明,当0

  达到效果

  本文将用Python数据分析工具Jupyter Notebook实现。虽然前人的大神们已经有了完整的实现步骤,https://etav.github.io/python/vif_factor_python.html

  但是它们的实现方法还是会略显复杂,所以笔者在这里提供了一种自写函数的方法。

  自写函数用于检测各变量的方差展开因子。

  发现变量卧室和浴室的方差展开因子都超过10。事实上,方差因子通常是成对出现的。通常两个较大的方差展开因子说明这两个变量本来就是高度相关的,也就是这两个变量可以一起解释一些事情,你可以考虑去掉一个你不是很感兴趣的变量。也回归到我们最初的目的:多元线性回归模型的一个主要假设是,我们的预测变量彼此不相关,我们希望预测变量与反应变量相关,而不是彼此相关。

  卧室和卫生间的异常方差展开因子也可以从上次ols建模结果的图中看出。将变量之间的相关性以热图的形式呈现后,发现ols建模的结果是每增加一个卧室单位,房价下降-2925.8063?热图显示卧室和房价呈现出很强的正相关关系。

  所以可以考虑去掉卧室这个方差膨胀因子最大的变量,然后重新建模ols。

  对比两种建模结果,发现即使删除一个方差扩展因子异常的变量,建模结果也不会发生变化。但需要注意的是,具体问题还得结合具体业务来分析。有时,虽然存在多重共线性,但仍然需要保留方差扩展因子异常的变量。

方差膨胀因子的计算公式为,方差膨胀因子与相关系数