发布时间:2024-08-28 14:01
多个连续变量两两之间做简单相关,您还记得会输出什么样的结果吗?您喜欢这种输出方式吗?先放两张图,大家随意感受一下。
第一张,大家应该很熟悉,是11个变量两两之间的简单相关系数。这么多数字堆在一起,很难快速的发现变量之间的相关性,根本不想看第二眼,有没有?!
大家再来看第二张,是不是会好很多。除了颜值,咱们还得看看它究竟能提供一些什么信息。
首先,左边界和上边界显示的是11个变量名。其次,不同颜色填充的实心圆代表了相应的相关系数。大家看右侧的颜色条,蓝色系的为正相关,红色系的为负相关,越靠近颜色条两头,相关系数越大。所以说,我们可以通过实心圆的颜色和大小判断相关的方向和相关系数的大小。
另外,还有一些是没有实心圆的,这是为什么呢?因为我们把p>0.05的隐藏了,也就是说现在呈现的是p<0.05的变量间的相关。说这么多,这个看起来还不错的图怎么画呢?
今天咱们以R自带的数据为例,一起来重现下这张相关系数图(英文叫corrplot)。数据要求相同研究对象的数据在同一行,相同变量的数据在同一列,可存储为csv格式,利用read.csv(file.choose())读取数据。
安装R和RStudio软件的过程咱就不说了,直接到RStudio界面。
1. 安装程序包,install.packages(corrplot)
2. 加载程序包,library(corrplot)
3. 调用R自带的数据,data(mtcars)
4. 计算mtcars的相关系数矩阵,M
5接下来的16行都是为了编写函数cor.mtest,获取相关系数的p值。不过大家勿担心,直接copy就可以了,不需要更改任何参数。
1cor.mtest
2mat
3n
4p.mat
5diag(p.mat)
6diag(lowCI.mat)
7for(i in 1:(n-1)){
8for(j in (i+1):n){
9tmp
10p.mat[i,j]
11lowCI.mat[i,j]
12uppCI.mat[i,j]
13 }
14 }
15return(list(p.mat, lowCI.mat, uppCI.mat))
16}
6. 利用函数cor.mtest,得到p值,res
7.绘制相关分析图
corrplot(M,order="AOE",p.mat=res[[1]],sig.level=0.05,insig ="blank")
其中M为相关分析系数矩阵,order="AOE"是对变量进行排序,p.mat=res[[1]]是为了获取相关分析p值,sig.level=0.05,insig = "blank",主要是让p>0.05的不显示其相关系数。
运行上述程序后,右下角就是我们想要的图了。欢迎大家留言讨论。