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 值决定多重共线性是否存在问题。
相关文章
在 Python 中跨多个文件使用全局变量
发布时间:2023/06/26 浏览次数:90 分类:Python
-
这个简单的指南是关于在 Python 中跨多个文件使用全局变量的。 但在进入主题之前,我们先简要了解一下全局变量及其在多个文件中的使用。Python 中的全局变量
基于 Python 中的值对计数器进行排序
发布时间:2023/06/26 浏览次数:165 分类:Python
-
本篇文章介绍如何使用 Python 根据计数器的值对计数器进行排序。Python 计数器概述 计数器是 Python 中集合模块的一部分,可帮助计算特定字符出现的总数。
在Python中发送UDP数据包
发布时间:2023/06/26 浏览次数:92 分类:Python
-
今天,我们将学习用户数据报协议(UDP),并了解如何使用 Python 编程发送 UDP 数据包。在Python中发送UDP数据包
Python 自定义迭代器
发布时间:2023/06/26 浏览次数:119 分类:Python
-
在本文中,我们将了解什么是迭代器以及如何借助 __iter__ 和 __next__ 类方法创建自定义迭代器。 我们还将学习如何在 Python 生成器的帮助下创建自定义迭代器。借助 Python 中的类方法 __iter__ 和
Python 高斯核
发布时间:2023/06/26 浏览次数:161 分类:Python
-
高斯核是一种高通滤波器,是图像处理中最常用的滤波器之一。 它也用于机器学习。 本博客将介绍该内核以及如何使用它。
Python 脚本中的 FFmpeg
发布时间:2023/06/26 浏览次数:167 分类:Python
-
本篇文章将介绍在Python中使用FFMPEG命令。安装 FFmpeg Python 包 首先,您必须在系统上安装 FFmpeg。 以管理员身份打开命令提示符并运行以下命令以使用 choco 安装 FFmpeg。
Python 中的 DNS 查找
发布时间:2023/06/25 浏览次数:118 分类:Python
-
本文将讨论 DNS 和 DNS 查找的概念。 之后,我们讨论使用 Python 进行 DNS 查找的方法。什么是 DNS DNS(域名系统)将域名转换为公共IP地址。
了解 Python 中的槽
发布时间:2023/06/25 浏览次数:167 分类:Python
-
本文将讨论槽常量变量在 Python 中的工作原理以及它如何比使用字典更好。了解 Python 中的槽
在 Python 中设置 HTTP 代理设置
发布时间:2023/06/25 浏览次数:141 分类:Python
-
在本文中,我们将讨论如何在我们的计算机和Python中设置HTTP代理设置。使用export命令在Python中设置HTTP代理设置