“傻瓜”学计量——OLS2(多重共线性:方差膨胀系数VIF、容忍度)

提纲:

一、什么是多重共线性    定义+后果

二、怎么检测回归模型中有无多重共线性

三、出现多重共线性要怎么处理

一、什么是多重共线性?

(一)定义

多重共线性(Multicollinearity)是指多元线性回归中,自变量之间存在高度相关关系而使得回归估计不准确的情况。

按照相关程度分为两种:

1.精准相关

是指其中一个自变量是另外一个自变量的线性变换

举例:X2=a+b✖X3

2.高度相关

是指相关关系为“显著”

(二)为什么不能有多重共线性

简单来说,若存在多重共线性,假设为上图中所示,则原模型可以改写成下面的式子。而回归的结果并不知\beta2与\beta3之间如何分配,也即是不知道到底是给\beta2分配的多一些还是给\beta3分配的多一些。同理如果两个变量之间是高度相关的话,结果也类似。因此不能存在多重共线性。

(三)多重共线性的后果

1.高度相关的两个变量,系数非常敏感,且系数估计有误差

2.模型作为一个整体,拟合程度没有太大影响

3.多重共线性对模型的预测能力没有太大的影响

二、如何检测多重共线性


检验的基本逻辑:

以一个自变量作为因变量,其他自变量作为自变量,进行一个新的回归。

得到结果之后,我们要看每组回归结果的R^2。R是0~1之间的数据。若R=1,则说明,原模型的回归模型中的自变量能够完全解释因变量Y。

在上图这一组的回归结果中,如果第一个式子回归结果R^2=95%,则X1能被其他所有的自变量很好的解释。


(一)容忍度(Tolerance)

(二)方差膨胀系数(vif,variance inflation factor)

上图右侧的T、VIF指标的取值范围是表明模型存在多重共线性。

(三)stata指令

estat vif            在使用OLS模型中vif的使用方法

(在其他模型中使用上述代码stata会报错)


解决方法:

*将其他模型转换成OLS模型

*使用一个软件包collin

net describe collin, from(https://stats.idre.ucla.edu/stat/stata/ado/analysis)         下载指令软件包

net install collin                       安装软件包
collin 因变量 自变量                OLS模型之外其他模型的vif检验指令

(下载collin ado file的网址:https://stats.oarc.ucla.edu/stata/ado/analysis/)


三、多重共线性的解决方法

(一)如果只想用模型进行预测or不关心出现多重共线性的变量

可以不做处理

(二)能确定其中两个或多个高度相关

剔除其中一个或者多个变量

(主成分分析法,提取高度相关变量的一个两个特征值,作为控制变量进行回归。)

### 多重共线性与方差扩大因子 (VIF) #### 什么是多重共线性多重共线性是指在线性回归模型中,某些自变量之间存在高度的线性相关关系的现象。这种现象可能导致参数估计不稳定,增加标准误差,从而降低模型预测能力以及解释力。 在实际应用中,如果两个或多个自变量具有很强的相关性,则它们可能共同解释因变量的变化,这使得单独评估每个自变量的影响变得困难[^1]。 #### 方差扩大因子 (VIF) 的定义 方差扩大因子(Variance Inflation Factor, VIF)是用来衡量某个自变量与其他所有自变量之间的线性相关程度的一个指标。具体来说,对于第 \( j \) 个自变量 \( x_j \),其对应的 R² 值表示该自变量可以被其他自变量通过多元回归拟合的程度。计算公式如下: \[ VIF_j = \frac{1}{1 - R_j^2} \] 其中: - \( R_j^2 \) 是将 \( x_j \) 对其余 p-1 个自变量进行回归得到的决定系数。 当 \( R_j^2 \) 接近于 0 时,表明 \( x_j \) 和其他自变量几乎不相关,此时 \( VIF_j \approx 1 \);而当 \( R_j^2 \) 趋向于 1 时,\( VIF_j \) 将显著增大,意味着 \( x_j \) 存在较强的多重共线性。 #### 如何判断是否存在严重的多重共线性? 通常情况下,可以根据以下准则来判定是否出现了严重的多重共线性问题: - 如果某自变量的 \( VIF_j ≥ 10 \),则认为此变量和其他独立变量间可能存在较为明显的多重共线性情况,会对最小二乘法产生的参数估计造成较大干扰^。 - 更严格的条件下,有些研究者建议当 \( VIF_j > 5 \) 即需引起注意[^2]. #### 在统计机器学习中的意义 在传统统计方法里,比如普通最小二乘(OLS)回归分析过程中遇到高VIF值的情况,往往提示我们应考虑重新构建特征集或者采用正则化技术如岭回归(Ridge Regression)等手段缓解这一状况带来的负面影响。而在现代机器学习领域内,尽管许多算法本身具备一定的抗噪能力和鲁棒特性,但对于输入数据质量的要求依然很高,因此理解并处理好多重共线性仍然是非常重要的一步。 ```python import pandas as pd from statsmodels.stats.outliers_influence import variance_inflation_factor def calculate_vif(X): vif_data = pd.DataFrame() vif_data["feature"] = X.columns vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] return vif_data # Example usage with a DataFrame `df` containing your features. vif_result = calculate_vif(df[['x1', 'x2', 'x3']]) print(vif_result) ``` 上述代码片段展示了如何利用Python库statsmodels计算给定设计矩阵X中各列对应VIF数值的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值