在数据探索的过程中,我们往往会对数据与数据的相关性进行分析,例如我们常用的corrplot
包,或者psych
包中的corr.test
函数,对两两变量间的相关性进行分析。我们常常会看到这样的相关性热图:
但有时变量间的关系并非线性,例如:我们熟知的微生物物种多样性与土壤pH之间的关系,因此在数据探索过程中,仅使用线性相关会导致我们遗漏一些重要信息。二次关系也需要纳入我们考虑的范围,因此本篇博客将对两两变量的二次关系的R代码及可视化进行介绍,助力数据探索。
我们尝试在对数据进行线性相关分析的同时,加入二次关系的分析,数据的可视化显示的结果大致如下:其中菱形表示线性相关显著,圆圈表示线性相关不显著,而二次关系显著。
可视化代码遵循如下原则:
- 若线性相关性显著,无论二次关系是否显著,均使用线性相关的R值和P值;(使用最简单的模型即可)
- 若线性相关性不显著,则查看二次关系是否显著,若显著则显示二次关系的R值和P值;若不显著则均不显示。
1.计算变量的两两二次关系函数
qcorr <- function(x){
pm <- matrix(rep(0,ncol(x)^2),nrow = ncol(x))
rm <- matrix(rep(0,ncol(x)^2),nrow = ncol(x))
rownames(pm) <- colnames(x)
colnames(pm) <- colnames(x)
rownames(rm) <- colnames(x)
colnames(rm) <- colnames(x)
for(i in 1:length(x