|
首先从回归的基本要求上来说,是需要的。因为共线性的本质,指的就是自变量之间不能有高度的相互影响,也就是说一个自变量的值,不能强烈的受另一个自变量的影响。我们通常用方差膨胀因子(VIF)或者相关系数来计算这种影响的强弱。方差膨胀因子的计算方法,可以参考鄙人前期博文。
然而,依据方差膨胀因子的计算原理,对于分类变量,其VIF值显然是无法直接计算的。因为计算过程中,分类变量是无法作为因变量的(虽然技术上特定的模型可以,但一般线性模型中,是不行的)。所以直接计算分类变量的VIF值,行不通。
但是行不通不代表问题不存在,因为对于不同的自变量来说,如果分类变量之间彼此强烈影响,或者分类变量和数值变量彼此强烈影响,本质上同样也是共线性问题,同样会影响回归结果。所以这个问题如果真的存在,依旧不能忽视。
通过查询得知,现在R中的collinear这个包,可以解决这一问题,其解决方案是把分类变量通过某种转化,转化为数值变量,这样我们就可以计算其VIF值了(具体怎么转化的,那就是统计学家的事儿,我们只负责应用)。
我们可以看下这个包提供的一个具体案例(案例代码由collinear开发者提供,出于演示目的,鄙人略作修改和注释):
#### 安装和加载collinear包
install.packages("collinear")library(collinear)### 查看案例数据 viView(vi)### 可见数据中的 soil_type,koppen_zone koppen_group 等都是分类变量
### 计算VIF, 假定我们模型的因变量是vi_mean这个指标### 那么,选出相关系数的绝对值小于0.7, VIF小于3的变量selected_predictors <- collinear( df = vi, response = "vi_mean", predictors = vi_predictors, preference_order = NULL, max_cor = 0.7, max_vif = 3, encoding_method = "mean")#### 查看这些变量各自的VIF值selected_predictors_vif <- vif_df( df = vi, response = "vi_mean", predictors = selected_predictors)### 查看结果selected_predictors_vif这个功能,用到多元回归中堪称完美啊!
collinear包网址链接:https://blasbenito.github.io/collinear/
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 11:13
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社