多重共线性:python计算VIF以及使用vif做因子独立性检验的方法「建议收藏」

多重共线性:python计算VIF以及使用vif做因子独立性检验的方法「建议收藏」转自:https://blog.csdn.net/ab1112221212/article/details/100133066多重共线性在python中的解决方法本文将讨论多重共线性的相关概念及利用python自动化消除多重共线性的方法,以供参考,欢迎拍砖线性模型与非线性模型关于线性模型与非线性模型的定义,似乎并没有确切的定论,但是个人认为建模首先得清楚地认识样本,样本有线性可分与线性不可分两种,所谓是否线性可分,是指是否存在一条直线(或平面)将样本分开。上图中y=0和y=1的样本可以由一

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

参考:https://www.zhihu.com/question/270451437/answer/405814593

https://www.cnpython.com/qa/38203

import numpy as np
import scipy as sp

a = [1, 1, 2, 3, 4]
b = [2, 2, 3, 2, 1]
c = [4, 6, 7, 8, 9]
d = [4, 3, 4, 5, 4]

ck = np.column_stack([a, b, c, d])
cc = sp.corrcoef(ck, rowvar=False)
VIF = np.linalg.inv(cc)
VIF.diagonal()

 

from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant

df = pd.DataFrame(
    {'a': [1, 1, 2, 3, 4],
     'b': [2, 2, 3, 2, 1],
     'c': [4, 6, 7, 8, 9],
     'd': [4, 3, 4, 5, 4]}
)

X = add_constant(df)
>>> pd.Series([variance_inflation_factor(X.values, i) 
               for i in range(X.shape[1])], 
              index=X.columns)

 

参考:https://zhuanlan.zhihu.com/p/56468729

       使用VIF进行检验的方法主要为,对某一因子和其余因子进行回归,得到R^2,计算VIF,剔除因子中VIF高的因子,保留VIF较低的因子,以此类推,直到得到一个相关性较低的因子组合来增强模型的解释能力。

  在实际测试过程中,并非要指定一个VIF阈值,比如某因子的VIF值超过阈值才剔除,而是通过观察所有因子值的VIF值,如果发现该值较大(显著离群),剔除该因子即可。本次我们的几个因子表现都非常出色,VIF值稳定且没有离群较大值,因此,没能找到任何一个需要剔除的因子。

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

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

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


相关推荐

  • dijkstra算法求最短路_图论的最短路问题

    dijkstra算法求最短路_图论的最短路问题原题链接战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的

    2022年8月9日
    8
  • python写出表白_简单python 表白代码

    python写出表白_简单python 表白代码#导入模块importturtle#人turtle.penup()turtle.goto(-100,100)turtle.pendown()turtle.color(‘yellow’)turtle.setheading(55)turtle.circle(50,280)turtle.setheading(238)turtle.forward(145)turtle.setheading(-4…

    2022年5月11日
    36
  • windows11修改用户名_win10家庭中文版怎么更改用户名

    windows11修改用户名_win10家庭中文版怎么更改用户名按:新买的电脑一般预装Windows11系统(家庭与学生版),新电脑初次开机使用微软邮箱账号登录,则系统将用户名自动设置成邮箱前几位。我的用户名便是一串数字【231xx】(qq邮箱前5位),看着很不舒服,查了很多方法并最终修改成功!!记录一下修改过程,希望能帮到同样想改用户名的人。首先,强调一点,修改失败可能导致很严重的问题,电脑如有重要资料,务必请提前备份!!!一什么情况需要修改用户名最主要的情况就是初次使用设置了中文用户名。很多软件不支持路径包含中文字……………..

    2022年10月14日
    1
  • 订单支付流程

    订单支付流程购物车订单处理流程根据上图订单页面进行分析如何安全下订单进入购物车页面,点选商品(书籍)时,将商品(书籍)productId通过API传给后端,然后返回书籍价格显示给用户,如图1.点击结算按钮,将勾选的商品(书籍)productId包装成数组,传入API给后端,该API是复合接口,包括礼券是否可以使用、详细介绍等。后端API返回订单详情,并有签名加密的订单token,本地存储并将订…

    2022年5月3日
    107
  • Application received signal SIGABRT[通俗易懂]

    ApplicationreceivedsignalSIGABRT(null)(( 0CoreFoundation0x0000000182bbadc8<redacted>+148 1libobjc.A.dylib0x000000018221ff80ob…

    2022年4月8日
    107
  • c#FileStream文件读写「建议收藏」

    c#FileStream文件读写「建议收藏」//C#文件流写文件,默认追加FileMode.Append stringmsg="okffffffffffffffff";byte[]myByte=System.Text.Encoding.UTF8.GetBytes(msg);using(FileStreamfsWrite=newFileStream(@"D:\1.txt",FileMode.Append)){…

    2022年7月12日
    16

发表回复

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

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