zhang2sha的个人博客分享 http://blog.sciencenet.cn/u/zhang2sha

博文

分类变量之间,也要考虑共线性么?

已有 511 次阅读 2024-8-12 21:08 |系统分类:科研笔记

       周末有学员问到,多因素回归中,如果自变量中的数值变量和分类变量之间,乃至不同的分类变量之间,都要考虑其共线性么?

    首先从回归的基本要求上来说,是需要的。因为共线性的本质,指的就是自变量之间不能有高度的相互影响,也就是说一个自变量的值,不能强烈的受另一个自变量的影响。我们通常用方差膨胀因子(VIF)或者相关系数来计算这种影响的强弱。方差膨胀因子的计算方法,可以参考鄙人前期博文。

方差膨胀因子是如何计算的?

     然而,依据方差膨胀因子的计算原理,对于分类变量,其VIF值显然是无法直接计算的。因为计算过程中,分类变量是无法作为因变量的(虽然技术上特定的模型可以,但一般线性模型中,是不行的)。所以直接计算分类变量的VIF值,行不通。

     但是行不通不代表问题不存在,因为对于不同的自变量来说,如果分类变量之间彼此强烈影响,或者分类变量和数值变量彼此强烈影响,本质上同样也是共线性问题,同样会影响回归结果。所以这个问题如果真的存在,依旧不能忽视。

    通过查询得知,现在R中的collinear这个包,可以解决这一问题,其解决方案是把分类变量通过某种转化,转化为数值变量,这样我们就可以计算其VIF值了(具体怎么转化的,那就是统计学家的事儿,我们只负责应用)。

image.png

     我们可以看下这个包提供的一个具体案例(案例代码由collinear开发者提供,出于演示目的,鄙人略作修改和注释):

#### 安装和加载collinear包

install.packages("collinear")library(collinear)### 查看案例数据 viView(vi)

image.png

### 可见数据中的 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

  • image.png

  •  这个功能,用到多元回归中堪称完美啊!

  • collinear包网址链接:https://blasbenito.github.io/collinear/



https://blog.sciencenet.cn/blog-3442043-1446208.html

上一篇:城市夜间灯光让植物变得更“难吃”
收藏 IP: 111.199.104.*| 热度|

1 郑永军

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-8-15 17:14

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部