迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的方差膨胀因子

作者:迹忆客 最近更新:2023/06/26 浏览次数:

本文介绍了方差膨胀因子 (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 值决定多重共线性是否存在问题。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便