多重共线性:python计算VIF以及使用vif做因子独立性检验的方法「建议收藏」
多重,共线性,python,计算,VIF,以及,使用,vif,因子,独立性,检验,方法,建议,收藏
2025-04-01 16:27:53 时间
大家好,又见面了,我是你们的朋友全栈君。
参考: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.cn/135202.html原文链接:https://javaforall.cn
相关文章
- 基于python的安全帽识别安全帽检测可以检测图片,视频流,有界面[通俗易懂]
- python时间和日期操作(datetime和monthrange,timedelta)
- python numpy dtype object_关于Numpy数据类型对象(dtype)使用详解
- python进制转换函数-Python中进制转换函数的使用
- Python中的取整、取余运算「建议收藏」
- USB 摄像头 进行python OpenCV 操作的基础设置【以yolo 目标检测为例】
- Python项目49-用户验证短信接口(可劲撸)
- xgboost分类算法_python分类统计
- python 基础语法笔记
- python 离散数学 判断单射 双射 满射
- python 字符串转成数字_python数字转十六进制字符串
- Python项目50-Celery框架
- XGBoost:在Python中使用XGBoost
- Python项目48-插播短信接口(使劲撸)
- python常见的数据类型有哪些?
- Python-基础03-流程控制
- python操作ES数据库「建议收藏」
- RPC协议及其python实例[通俗易懂]
- Python 上下文管理及 with 语句的实用技巧
- Python 基于 TCP 传输协议的网络通信实现