迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 值决定多重共线性是否存在问题。

上一篇:在 Python 中跨多个文件使用全局变量

下一篇:没有了

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

本文地址:

相关文章

在 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代理设置

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便