Python中的方差膨胀系数

本文介绍了方差膨胀因子(VIF)及其在检测有影响的观测值方面的性能,并演示了我们如何使用statsmodels ,在Python中使用VIF。

Python中的方差膨胀因子

方差膨胀因子(VIF)衡量多元回归模型中预测变量之间的勾稽关系的大小。它被计算为给定的预测变量的方差与残差的比率。

方差膨胀系数为1 ,表示没有勾稽关系。相反,VIF大于1 ,表明存在串联性。VIF可以用来评估在多元回归模型中纳入一个特定的预测变量是否有必要。

如果某个预测变量的VIF很高,可能表明该预测变量与模型中的其他预测变量是多余的。我们也可以在不影响模型拟合的情况下将其删除。

适当的方差膨胀因子(VIF)将取决于具体的环境和数据集。然而,一般来说,VIF可以成为识别数据中潜在的多重共线性问题的重要工具。

VIF在检测有影响的观测值方面的表现

在回归分析中,有几种方法来检测有影响的观测值。一种标准方法是计算方差膨胀因子(VIF)。

VIF测量由于与模型中其他预测因子的共线性而导致的预测因子的方差量。高VIF表明其他预测因子对模型中的预测因子影响很大。

所以,回归模型可以计算出每个预测因子的VIF。VIF为1 ,表明任何其他预测因子都不会影响模型中的预测因子。

VIF大于1 ,表明其他预测因子影响模型中的预测因子。VIF对于检测分类预测因子之间的勾稽关系特别有用。

VIF可以确定哪些预测因子在回归模型中的影响最大。然而,必须记住,VIF只是对勾稽关系的一种测量,并不一定表明某个预测因子在模型中是必不可少的。

在Python中计算方差膨胀因子(VIF)

要在Python中使用VIF,我们可以使用statsmodels 库。首先,使用linear_model.LinearRegression 类来计算VIF。

我们首先对我们的数据拟合一个线性回归模型,然后创建一个带有交互项的新的线性回归模型。之后,我们通过计算每个模型的VIF来比较这两个模型。

包含交互项的模型会有更高的VIF,表明交互项会造成多重共线性。VIF是针对模型中的每个预测变量计算的,然后用来确定模型的整体拟合度。

VIF可以用以下公式计算:

VIF = frac{1}{(1-R^{2})}

这里R^2 是预测变量的决定系数。

VIF通常用于评估线性回归模型中的多重共线性。然而,我们也可以在其他回归模型中使用它,如逻辑回归和泊松回归。

VIF可以用来评估模型的整体拟合度和识别预测变量。而预测变量与模型中的其他预测变量高度相关。

在统计学中,每个数据点都有一个误差,被称为方差。然而,一个数据集的冲突并不是衡量数据集可变性的最佳标准。

方差膨胀因子(VIF)是衡量回归分析中多重共线性影响的一种统计方法。VIF = (λ 1 / λ 2 ) – 1,其中λ 1 是一个回归模型中某个变量的VIF,λ 2 是第二个回归模型中该变量的VIF。

VIF > 10 表示独立变量之间的多重共线性。让我们通过下面的Python代码例子来学习VIF:

示例代码:

import numpy as np
import pandas as pd
import seaborn as sns
import statsmodels.api as sm
import statsmodels.tools.tools as smt
import statsmodels.stats.outliers_influence as smo
hp= sm.datasets.get_rdataset(dataname="HousePrices", package="AER", cache=True).data
print(hp.iloc[:, 0:5].head(3))
ivar = hp.iloc[:, 1:5]
print(ivar.head(3))
ivarc = smt.add_constant(data=ivar, prepend=False)
vif_lotsize = smo.variance_inflation_factor(exog=ivarc.values, exog_idx=0)
print(vif_lotsize)

输出:

   price     lotsize  bedrooms    bathrooms  stories
0  42000.0     5850         3          1        2
1  38500.0     4000         2          1        1
2  49500.0     3060         3          1        1
   lotsize  bedrooms  bathrooms  stories
0     5850         3          1        2
1     4000         2          1        1
2     3060         3          1        1
1.047054041442195

正如我们所了解的,有许多VIF计算器可用。此外,VIF是众多指标之一,可以帮助你理解两个变量之间的关系。

必须知道,VIF是一个实用的而不是理论的概念。正是VIF值决定了多重共线性是否是一个问题。