多重共线性检验之方差膨胀因子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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 设置环境变量_linux查看环境变量

    pycharm 设置环境变量_linux查看环境变量今天运行tensorflow的时候,发现在pycharm下,程序无法找到CUDA的libcupti.so文件。而在添加完环境变量:exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH/usr/local/cuda/extras/CUPTI/lib64:后,在命令行可以运行程序。然而,在Pycharm中运行程序,仍无法找到CUDA库文件。经过下午的折腾,终于

    2022年8月26日
    2
  • javbus爬虫-老司机你值得拥有

    javbus爬虫-老司机你值得拥有起因有个朋友叫我帮忙写个爬虫,爬取javbus5上面所有的详情页链接,也就是所有的https://www.javbus5.com/SRS055这种链接,我一看,嘿呀,这是司机的活儿啊,我绝对不能

    2022年8月5日
    0
  • ubuntu20.04 虚拟机连不上网

    ubuntu20.04 虚拟机连不上网记录一下虚拟机——编辑——虚拟网络编辑器

    2022年6月26日
    23
  • java session有效期设置方式「建议收藏」

    java session有效期设置方式「建议收藏」session默认有效期是30分钟,设置session的有效期有三种方法:1.在tomcat中的server.xml中定义:在tomcat中的conf/server.xml文件可以修改服务器上的所有程序的默认有效期,设置单位为毫秒,定义代码如下:<Contextpath=”/test”docBase=”/test”  defaultSessionTimeOut=”360…

    2022年7月12日
    14
  • 菜鸟看源码之ArrayDeque

    菜鸟看源码之ArrayDeque先扯点别的:今天上海风不小,现在窗外依然是狂风呜咽,不禁让人想起山科的风。今天分析一下ArrayDeque的源码ArrayDeque的继承关系图ArrayDeque实现了Deque接口,内部使用一个可调整大小的数组来存放元素。数组没有容量限制,必要的时候数组的容量会增加。ArrayDeque不是线程安全的。不允许添加Null元素。当ArrayDeque作为一个栈来使用的时候,Ar…

    2022年9月19日
    0
  • 编写js程序实现n的阶乘_javascript矩阵算法

    编写js程序实现n的阶乘_javascript矩阵算法定义一个函数,算出n的阶乘/**定义一个函数,算出n的阶乘*/letx=Number(window.prompt(‘请输入求阶乘的数:’));console.log(jCheng(x))functionjCheng(x){ returnx<2?1:x*jCheng(x-1)}

    2022年9月1日
    2

发表回复

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

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