我们知道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不相关。
我们还可以简单的画图展示一下
plot(a,b)
#线性拟合,画出拟合的直线。
#lty控制线的风格,为虚线
#lwd控制线的宽度
abline(lm(b~a),col="red",lwd=2,lty=2)
那么如果你有多个数值向量需要计算相关性怎么办?
我们拿mtcars这套R自带的数据来举个例子,这套数据有32行,11列。
每一行为一种车型,每一列为一种特征。
下面我们就来看看,如何计算这11种特征两两之间的相关性,这里给大家介绍四种方法
一、corrplot包
install.packages("corrplot")
library(corrplot)
#计算特征两两之间的相关系数
M <- cor(mtcars)
#计算特征两两之间的相关性检验的P值
Pval <- cor.mtest(mtcars)
#画图展示特征两两之间的相关系数
corrplot(M, method = "circle")
我们可以来看下特征两两之间的相关系数
也可以看看特征两两之间的相关性检验的P值,
View(Pval$p)
看看相关性图
二、corr包
#安装corrr包
install.packages("corrr")
library(corrr)
#计算特征两两之间的相关系数
correlate(mtcars)
这个包还有一个特点,就是可以指定某几个特征,然后计算跟剩下特征之间的相关性
#focus on mgp,计算所有特征跟mpg这个特征之间的相关性
focus(correlate(mtcars), mpg)
三、psych包
#安装psych包
install.packages("psych")
library(psych)
corr.test(mtcars)
得到特征两两之间的相关系数如下
同时也能得到相关性的p值
四、Hmisc包
#安装Hmisc包
install.packages("Hmisc")
library(Hmisc)
rcorr(as.matrix(mtcars))
得到特征两两之间的相关系数如下
同时也能得到相关性的p值
条条大路通罗马
不管是白猫还是黑猫,抓住老鼠就是好猫
弱水三千只取一瓢
总之,方法很多,选择适合自己的方法达到目的就行。