R计算多个向量两两之间相关性

我们知道R里面计算两个数值向量之间的相关性用cor函数,而检验是否显著相关用cor.test。例如

a=1:10
#设置随机过程的种子,保证结果可重复性
set.seed(123)
#给b加入一个小的扰动,服从正态分布,均值是0,标准差是0.05
b=a+rnorm(10,0,0.05)
cor(a,b)  #0.9998834
cor.test(a,b)

会得到如下结果,a和b是几乎完整正相关的,相关系数是0.9998834。一般相关系数是-1到1之间的一个数,-1表示完全负相关,1表示完全负相关。>0正相关,<0负相关,=0不相关。

R计算多个向量两两之间相关性_第1张图片

我们还可以简单的画图展示一下

plot(a,b)
#线性拟合,画出拟合的直线。
#lty控制线的风格,为虚线
#lwd控制线的宽度
abline(lm(b~a),col="red",lwd=2,lty=2)
R计算多个向量两两之间相关性_第2张图片

那么如果你有多个数值向量需要计算相关性怎么办?

我们拿mtcars这套R自带的数据来举个例子,这套数据有32行,11列。

每一行为一种车型,每一列为一种特征。

R计算多个向量两两之间相关性_第3张图片

下面我们就来看看,如何计算这11种特征两两之间的相关性,这里给大家介绍四种方法

一、corrplot包

install.packages("corrplot")
library(corrplot)
#计算特征两两之间的相关系数
M <- cor(mtcars)
#计算特征两两之间的相关性检验的P值
Pval <- cor.mtest(mtcars)
#画图展示特征两两之间的相关系数
corrplot(M, method = "circle")

我们可以来看下特征两两之间的相关系数

R计算多个向量两两之间相关性_第4张图片

也可以看看特征两两之间的相关性检验的P值,

View(Pval$p)
R计算多个向量两两之间相关性_第5张图片

看看相关性图

R计算多个向量两两之间相关性_第6张图片

二、corr包

#安装corrr包
install.packages("corrr")
library(corrr)
#计算特征两两之间的相关系数
correlate(mtcars)
R计算多个向量两两之间相关性_第7张图片

这个包还有一个特点,就是可以指定某几个特征,然后计算跟剩下特征之间的相关性

#focus on mgp,计算所有特征跟mpg这个特征之间的相关性
focus(correlate(mtcars), mpg)
R计算多个向量两两之间相关性_第8张图片

三、psych包

#安装psych包
install.packages("psych")
library(psych)
corr.test(mtcars)

得到特征两两之间的相关系数如下

R计算多个向量两两之间相关性_第9张图片

同时也能得到相关性的p值

R计算多个向量两两之间相关性_第10张图片

四、Hmisc包

#安装Hmisc包
install.packages("Hmisc")
library(Hmisc)
rcorr(as.matrix(mtcars))

得到特征两两之间的相关系数如下

R计算多个向量两两之间相关性_第11张图片

同时也能得到相关性的p值

R计算多个向量两两之间相关性_第12张图片

条条大路通罗马

不管是白猫还是黑猫,抓住老鼠就是好猫

弱水三千只取一瓢

总之,方法很多,选择适合自己的方法达到目的就行。

R计算多个向量两两之间相关性

你可能感兴趣的:(R计算多个向量两两之间相关性)