前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R计算多个向量两两之间相关性

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

作者头像
生信交流平台
发布2022-09-21 11:40:01
6790
发布2022-09-21 11:40:01
举报
文章被收录于专栏:用户7627119的专栏

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

代码语言:javascript
复制
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不相关。

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

代码语言:javascript
复制
plot(a,b)
#线性拟合,画出拟合的直线。
#lty控制线的风格,为虚线
#lwd控制线的宽度
abline(lm(b~a),col="red",lwd=2,lty=2)

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

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

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

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

一、corrplot包

代码语言:javascript
复制
#安装corrplot包
install.packages("corrplot")
library(corrplot)
#计算特征两两之间的相关系数
M <- cor(mtcars)
#计算特征两两之间的相关性检验的P值
Pval <- cor.mtest(mtcars)
#画图展示特征两两之间的相关系数
corrplot(M, method = "circle")

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

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

代码语言:javascript
复制
View(Pval$p)

看看相关性图

二、corr包

代码语言:javascript
复制
#安装corrr包
install.packages("corrr")
library(corrr)
#计算特征两两之间的相关系数
correlate(mtcars)

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

代码语言:javascript
复制
#focus on mgp,计算所有特征跟mpg这个特征之间的相关性
focus(correlate(mtcars), mpg)

三、psych包

代码语言:javascript
复制
#安装psych包
install.packages("psych")
library(psych)
corr.test(mtcars)

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

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

四、Hmisc包

代码语言:javascript
复制
#安装Hmisc包
install.packages("Hmisc")
library(Hmisc)
rcorr(as.matrix(mtcars))

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

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

条条大路通罗马

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

弱水三千只取一瓢

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 弱水三千只取一瓢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档