RDA(冗余分析)出错案例——变量消失丨TomatoSCI分析方法研究
小编发现RDA(冗余分析)这个方法在大家中间挺受欢迎的。之前也分享过一些相关内容,这次想换个角度,把平时遇到的出错案例整理出来,或许能给刚接触这个方法的朋友一点提醒。
前段时间,一个小伙伴急匆匆找到我,说自己做出来的图里少了一个自变量——"SP"。(图1,原始数据不便展示,这里已做处理。)我帮他重复跑了几次,结果依然一样。于是换了一些示例数据来试,一切正常。这样一来问题就锁定在数据本身了。老实说,刚开始我也没有头绪,在不清楚数据来源的情况下,只能换不同角度去摸索。

我先做了一个简单的相关性分析,看看变量之间的关系(图2)。相关性分析在检查共线性方面还是挺高效的。
运气不错,一眼就发现了问题:BD和SP这两个变量的相关系数,在保留四位小数的情况下竟然达到了-1。出现这种情况只有两种可能——要么是用BD算出SP,要么是用SP算出BD。后来一问,果然如此,这两个变量本质上就是通过公式互相换算的。

在冗余分析中,这就意味着BD和SP其实是同一个变量,属于完全共线性。我们可以把它理解成毫米和分米的关系,毫米和分米的关系一定是完全共线性的。面对这种情况,RDA的算法会自动剔除其中一个变量。换句话说,我们只能二选一:要么保留BD,要么保留SP。
如果在建模之前没有意识到这种问题,就很容易在后续分析中陷入被动,尤其是前面所有结果里都包含了这两个变量的情况下。
解决方案与建议
为了避免这种情况,我的建议有两点:
- 不要同时纳入可以互相换算的指标。只保留最有代表性、最重要的一个。很多建模算法对共线性都比较敏感,比如线性回归(带你从0学分析之—线性回归模型篇(1))、逐步回归(带你从0学分析之—逐步回归篇(1))、结构方程(偏最小二乘结构方程(PLS-SEM)_TomatoSCI分析日记)等
- 在数据清洗阶段多做共线性检查。简单的相关性分析就很实用,能帮我们提前发现这类隐患。