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 值决定多重共线性是否存在问题。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串