R语言实用案例分析-相关系数的应用

Python015

R语言实用案例分析-相关系数的应用,第1张

R语言实用案例分析-相关系数的应用

在日常工作中,经常会存在多个变量之间存在关联关系,比如学习数学好的同学,物理成绩可能也比较高。在公司中外貌和讨人喜欢的关系往往也比较大,在人事招聘过程中,如果想要更加综合的评价某个人,需要把相关系数比较高的方面进行权重或者均值处理。

如以下案例:

现有30名应聘者来公司应聘,公司为这些应聘者制定了15项指标,分别是:求职信的形式(FL)、外貌(APP)、专业能力(AA)、讨人喜欢(LA)、自信心(SC)、洞察力(LC)、诚实(HON)、推销能力(SMS)、经验(EXP)、驾驶水平(DRV)、事业心(AMB)、理解能力(POT)、交际能力(KJ)和适应性(SUIT)。每项分数是从0到10分,0分最低,10分最高。每位求职者的15项指标如下所示,公司计划只录取前5名申请者,公司到底该如何选择呢?

#读入数据

rt<-read.table("applicant.data")

AVG<-apply(rt,1,mean)

sort(AVG,descreasing=TRUE)

attach(rt)

#找到相关系数高的分为一组,然后取平均值,防止值过大

rt$G1<-(SC+LC+SMS+DRV+AMB+GSP+POT)/7

rt$G2<-(FL+EXP+SUIT)/3

rt$G3<-(LA+HON+KJ)/3

rt$G4<-AA

rt$G5<-APP

AVG<-apply(rt[,16:20], 1, mean)

sort(AVG, decreasing = TRUE)

找出前5名

比如 Horticulture Research 中的论文 Comparative analysis of long noncoding RNAs in angiosperms and characterization of long noncoding RNAs in response to heat stress in Chinese cabbage 方法部分写道

这里相当于是计算两个数据集中的变量之间的相关性,之前发现 correlation 这个R包里的函数 correlation() 可以做

但是这里遇到了一个问题

关掉这个报错界面以后就会提示

暂时还不知道如何解决,自己搜索了一下暂时还没有找到解决办法

只能把输入法切换成中文,然后一次性把函数名输入完

计算相关系数和P值

结果如下

但是mRNA的表达量有上万个,用这个函数计算的时候是非常慢的

找到了另外一个函数是 Hmisc 这个包中的 rcorr() 函数

这个速度快很多,但是他不能计算两个数据集之间变量的相关性,

这样的话可以先计算,然后再筛选

这个函数要求的输入数据是矩阵格式

自定义函数将这个结果转换成一个四列的数据框格式

最后用变量名去匹配

两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2_哔哩哔哩_bilibili

psych 这个包里的 corr.test() 函数也是可以直接计算两个数据集变量之间的相关性的,这个结果了也有显著性检验的p值

但是这个如果数量量比较大的话速度也很慢

小明的数据分析笔记本

链接: http://www.bio-info-trainee.com/4385.html

我做题的时候主要翻阅学习了《R语言实战》里统计相关内容。

需要掌握R内置数据集及R包数据集

鸢尾花(iris)数据集,包含150个鸢尾花的信息,共五列,分别为萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)和种类(Species)。前四列为定量数据,后一列种类为定性数据,是非连续的字符变量。

定量数据的集中趋势指标主要是:众数、分位数和平均数

定量数据的离散趋势指标主要是:极差,方差和标准差,标准分数,相对离散系数(变异系数),偏态系数与峰态系数

分组统计,最一开始是想将数据集分成三个数据框,重复之前函数,有几个方法:

或者不分开,之前对原数据集计算:

apply函数可以解决数据循环处理的问题,可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数形式给自定义的FUN函数中,并返回计算结果。

函数定义:

apply(X,MARGIN,FUN,...)

参数列表:

用来对list、data.frame进行循环,并返回和X长度同样的list结构作为结果集。

同lapply函数,多了2个参数simplify和USE.NAMES,返回值为向量,不是list对象。

类似sapply函数,提供了FUN.VALUE参数,用来控制返回值的行名。

类似sapply函数,第一个参数为FUN,可接受多个数据。

tapply函数用于分组的循环计算,相当于group by的操作。

函数定义:

tapply(X,INDEX,FUN,simplify,...)

参数列表:

只处理list类型数据,对list的每个元素进行递归遍历,如果list包括子元素则继续遍历。

R可以计算多种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格相关系数、多系列相关系数。cor()函数可以计算前三种相关系数,cov()函数可以计算协方差。

数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。scale()函数可以完成标准化。

mtcars数据集是32辆汽车在11个指标上的数据。

airway包是8个样本的RNA-seq数据的counts矩阵,这8个样本分成2组,每组是4个样本,分别是 trt 和 untrt 组。

t检验是一种可用于比较的假设检验。

理解t检验:一个年纪共有好多学生,需要研究他们的平均身高。这时,这批学生是我们 要研究的对象 ,即 总体 。从这个年纪中每个班级随机挑选10名同学,这部分同学则为 样本 ,通过样本来对总体的某个统计特征(比如上面研究的平均值、众数、方差等)做判断的方法为 假设检验 。

一个针对两组的独立样本t检验可以用于检验两个总体的均值相等的假设,检验调用格式为:

t.test( y ~ x, data )

其中y是一个数值型变量,x是一个二分变量。

t.test(y1,y2)

其中y1、y2为数值型向量。

现在还不能用自己的语言解释清楚,整合几篇写的比较详细的教程:

http://www.biye5u.com/article/R/2019/6399.html

https://www.jianshu.com/p/67be9b3806cd

统计这部分还是似懂非懂的状态,继续学习~

更多学习资源:

生信技能树公益视频合辑

生信技能树账号

生信工程师入门最佳指南

生信技能树全球公益巡讲

招学徒

...

你的宣传能让数以万计的初学者找到他们的家,技能树平台一定不会辜负每一个热爱学习和分享的同道中人