多重共线性检验之方差膨胀因子VIF[通俗易懂]

多重共线性检验之方差膨胀因子VIF[通俗易懂]过程1、构造每一个自变量与其余自变量的线性回归模型,例如,数据集中含有p个自变量,则第一个自变量与其余自变量的线性组合可以表示为2、根据如上线性回归模型得到相应的判决系数R2R^2R2,进而计算第一个自变量的方差膨胀因子VIF:importpandasaspdimportnumpyasnpfromsklearnimportmodel_selectionimportstatsmodels.apiassnfromstatsmodels.stats.outlier

大家好,又见面了,我是你们的朋友全栈君。

过程

1、构造每一个自变量与其余自变量的线性回归模型,例如,数 据集中含有p个自变量,则第一个自变量与其余自变量的线性组合可以 表示为
在这里插入图片描述
2、根据如上线性回归模型得到相应的判决系数 R 2 R^2 R2,进而计算第 一个自变量的方差膨胀因子VIF:
在这里插入图片描述

import pandas as pd
import numpy as np
from sklearn import model_selection
import statsmodels.api as sn
from statsmodels.stats.outliers_influence import variance_inflation_factor

sdata = pd.read_csv("../input/traindatas/char7/Predict to Profit.csv")
print(sdata.columns)
X  = sn.add_constant(sdata.loc[:,['RD_Spend', 'Marketing_Spend']])
vif = pd.DataFrame()
vif["Ficture"] = X.columns
vif["Fctor"] = [variance_inflation_factor(X.values,i) for i in range(X.shape[1])]
print(vif)

执行结果如下,如上结果所示,两个自变量对应的方差膨胀因子均低于10,说明构 建模型的数据并不存在多重共线性。如果发现变量之间存在多重共线性 的话,可以考虑删除变量或者重新选择模型

Index(['RD_Spend', 'Administration', 'Marketing_Spend', 'State', 'Profit'], dtype='object')
           Ficture     Fctor
0            const  4.540984
1         RD_Spend  2.026141
2  Marketing_Spend  2.026141

过程计算

import pandas as pd
import numpy as np
from sklearn import model_selection
import statsmodels.api as sn
from statsmodels.stats.outliers_influence import variance_inflation_factor

sdata = pd.read_csv("../input/traindatas/char7/Predict to Profit.csv")
model = sn.formula.ols("RD_Spend~Marketing_Spend",data=sdata).fit()
print(1/(1-model.rsquared))

执行结果

2.026140603233619

上面我仅仅计算了以RD_Spend为因变量计算的VIF值,和上面的一样,为2.026140603233619

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unbuntu版 pycharm2021.9 激活码【2021免费激活】[通俗易懂]

    (unbuntu版 pycharm2021.9 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~83PVI25FMO-eyJsaWNlb…

    2022年3月27日
    151
  • centos7 安装gitea使用

    centos7 安装gitea使用参考官网 https gitea iohttps docs gitea iohttps docs gitea io en us install from binary 关于 GiteaGitea 是一个自己托管的 Git 服务程序 他和 GitHub BitbucketorG 等比较类似 他是从 Gogs 发展而来 不过我们已经 Fork 并且命名为 Gitea 对

    2025年9月25日
    6
  • path是什么意思啊_on the path

    path是什么意思啊_on the path投影投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影:列表投影切片投影对象投影展平投影过滤投影处理投影需要注意的点投影分为两个步骤。左侧(LHS)创建一

    2022年7月30日
    8
  • route add添加永久静态路由_route add添加默认路由

    route add添加永久静态路由_route add添加默认路由routeadd如何增加永久路由 在机器重起后依然维持原来的路由表保持不变ipfreak回复于:2002-09-1915:51:00mkaeafilestartwithSandputunderrc2.dorrc3.d.put"routeaddwhatevershit…

    2022年8月11日
    22
  • 完美解决Tensorflow不支持AVX2指令集问题|指令集加速

    完美解决Tensorflow不支持AVX2指令集问题|指令集加速在pycharm中安装tensorflow后运行如下测试代码:importtensorflowastfx=tf.Variable(3,name=”x”)y=tf.Variable(4,name=”y”)f=x*x*y+y+2print(f)发现会报一行错误YourCPUsupportsinstructionsthatthisTensorFlowbinarywasnotcompiledtouse:AVX2大概意思是安装的tensorf

    2022年5月29日
    78
  • Pycharm Debug调试使用+代码调试理解

    Pycharm Debug调试使用+代码调试理解Pycharm使用教程03pycharm的Debug调试使用+代码调试理解。横着的七个按钮的功能:依次从左到右。ShowExecutionPoint:鼠标光标跳到程序运行到的位置StepOver:单步运行程序,不进入函数。在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在不存在子函数的情况下是和stepinto效果一样的。简单的说就是,程序代码越过子函数,但子函数会执行,且不进入。StepInto:在单步执行时,遇到子函数

    2025年6月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号