百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R数据分析:相关性分析

bigegpt 2024-08-15 19:54 2 浏览

本期内容速览:

  1. 相关性分析方法选择
  2. Pearson相关&Spearman相关
  3. 偏相关
  4. 相关关系可视化


第一部分: 相关性分析方法选择

相关分析是研究两种或两种以上随机变量之间的关系的一种统计学方法,可以分析变量间的关系情况以及关系强弱程度等,如身高和体重之间的相关性。


对于不同类型的变量,需选择合适的相关性分析方法,我们常用的相关性分析方法及适用条件如下:

1.1 Pearson相关系数

最常用,又称积差相关系数,适用于连续变量之间的相关性分析;使用条件:变量都需符合正态分布


1.2 Spearman秩相关系数
  适合含有有序分类变量或者全部是有序分类变量的相关性分析;但其属于非参数方法,检验效能较Pearson系数低


1.3 无序分类变量的相关性

  最常用的为卡方检验,用于评价两个无序分类变量的相关性(检验两组数据是否具有统计学差异,从而分析因素之间的相关性)


第二部分: Pearson相关&Spearman相关

2.1 相关系数计算

R中可计算多种相关系数,其中最常用的包括Pearson,Spearman和Kendall相关系数,最基础的,cor(x = ,y = ,use = ,method = ) 可用于计算相关系数; cov(x = ,y = ,use = ,method = )可用于计算协方差。

*相关系数:反映变量间相关关系的方向和程度,取值-1~1。

*协方差:在概率论和统计学中用于衡量两个变量的总体误差(如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值)。关于协方差,若想深入学习和理解可参考该博客的讲解 ↓

“https://blog.csdn.net/qq_31073871/article/details/81057030”


① 两变量相关性分析

cor(x = ,y = ,use = ,method = )
cov(x = ,y = ,use = ,method = )

参数注释:

x:变量x

y:变量y

use:指定缺失数据的处理方式(all.obs--遇到缺失数据时报错、 everything--遇到缺失数据时相关系数设为missing、complete.obs--遇到缺失数据执行行删除;默认"everything")

method:指定相关系数类型("pearson", "spearman", "Kendall";默认"pearson"


② 相关性矩阵

cor(x = ,use = ,method = )
cov(x = ,use = ,method = )

参数注释:

x:矩阵或数据框

use:指定缺失数据的处理方式(all.obs--遇到缺失数据时报错、 everything--遇到缺失数据时相关系数设为missing、complete.obs--遇到缺失数据执行行删除;默认"everything")

method:指定相关系数类型("pearson", "spearman", "Kendall";默认"pearson"


2.2 相关系数的显著性检验

探索变量之间的相关性,在计算出相关系数后还需进行显著性检验。常用的原假设H0为变量间不相关,即相关系数为0。

① 两变量相关性分析的显著性检验

cor.test(x, y,
         alternative = c("two.sided", "less", "greater"),
         method = ,
         conf.level = 0.95)

参数注释:

x:变量x

y:变量y

alternative:指定双侧/单侧检验

method:指定相关系数类型("pearson", "spearman", "Kendall";默认"pearson"

conf.level:设置检验水准


② 相关性矩阵的显著性检验

library(psych)
corr.test(x, method = )

参数注释:

x:矩阵或数据框

method:指定相关系数类型("pearson", "spearman", "Kendall";默认"pearson"


2.3 相关分析实例演练

本文举例使用的数据为20个基因的表达数据,可在公众号中发送 “cor2” 获取文件(“cor2.Rdata”)。原始数据大体情况如下图所示:

load("cor.Rdata") # 文件详情见本文开头
cor(mydata$GLT1D1,mydata$SCG5)
# 结果:
[1] 0.6640603
cor.test(mydata$GLT1D1,mydata$SCG5)
#结果:
  Pearson's product-moment correlation


data:  mydata$GLT1D1 and mydata$SCG5
t = 15.962, df = 323, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.5985069 0.7207800
sample estimates:
      cor 
0.6640603 
cr <- cor(mydata) # 结果样式如下图


第三部分: 偏相关

很多时候,要分析研究的两个变量会受到其他非研究变量的影响,此时需要控制这些非研究的因素,进行偏相关分析(比如,身高与体重、肺活量都相关,那么在研究体重与肺活量之间相关性时,应剔除身高变量的影响)。

*偏相关:在控制一个或多个变量的情况下,分析另外两个变量的相关关系。


3.1 偏相关系数的计算

进行偏相关分析可使用ggm包的pcor(u, S)函数实现

library(ggm)
pcor(u, S)

参数注释:

u:输入一个数值向量,前两个数值为两个研究变量在数据框中对应的下标,其余数值为

S:所有变量的协方差矩阵


3.2 偏相关系数的显著性检验

library(ggm)
pcor.test(r, q, n)

参数注释:

r:由pcor(u, S)计算出的偏相关系数

q:控制的变量数

n:样本大小


3.3 偏相关分析实例演练

还使用cor2.Rdata数据为例:绘制相关矩阵图后发现,GLT1D1SCG5呈显著正相关,KCNC3、L1CAM与GLT1D1和SCG5都呈显著正相关。



此时,控制KCNC3、L1CAM两个变量,分析GLT1D1SCG5之间的相互关系,即计算其偏相关系数:

library(ggm)
pcor(c(7,11,17,20),cov(mydata))
pcor.test(pcor(c(7,11,17,20),cov(mydata)),2,325)

结果:

> pcor(c(7,11,17,20),cov(mydata))
[1] 0.5183269


> pcor.test(pcor(c(7,11,17,20),cov(mydata)),2,325)
$tval
[1] 10.85919
$df
[1] 321
$pvalue
[1] 1.321436e-23

从结果来看,GLT1D1SCG5的偏相关系数为0.52,小于之前的0.66,这是由于控制了KCNC3、L1CAM两个变量的影响。


第四部分: 相关关系可视化

4.1 散点图

GLT1D1SCG5基因表达数据为例,绘制散点图:

library(ggplot2)
plotdata <- mydata[,c("GLT1D1","SCG5")]
ggplot(plotdata,aes(GLT1D1,SCG5))+
  geom_point(size=2)+
  stat_smooth(method = lm, level = 0.95)+ # method = lm(线性), level = 0.95(拟合线置信区间为95%)
  theme_classic()+
  theme(axis.title = element_text(size = 15),
        axis.text = element_text(size = 12))

关于散点图的绘制,更多绘制和美化方法可参考:

R-可视化基础(5)——散点图、折线图


4.2 相关矩阵

还以“cor2.Rdata”文件的数据为例,绘制相关矩阵:

library(psych)
library(corrplot)
cr <- cor(mydata)
p <- cor.mtest(mydata, conf.level = .95)
corrplot(cr, method = "color", col = colorRampPalette(c('navy','white','firebrick3'))(200),
         addCoef.col = "black",number.cex = 0.8,###添加系数及字体
         tl.col = "black", tl.srt = 45, ### 上部标签的颜色和倾斜度
         p.mat = p$p, sig.level = 0.05, insig = "blank",  ###结合P值,显示具有统计学意义的关联点
         diag = T) ###显示对角线上的相关系数

关于相关矩阵的更多可视化方法可参考:

R语言之相关性分析


4.3 相关可视化——棒棒糖图

研究多个变量与另一个变量的相关性时,可用棒棒糖图呈现相关性分析结果,如分析CSTF1、PARP4、SMO、ATF6、L1CAM、KCNC3与GLT1D1表达相关性并绘图:

cr <- cor(mydata)
gene <- c("CSTF1","PARP4","SMO","ATF6","L1CAM","KCNC3")
plotdata <- data.frame(gene,cor=cr[gene,"GLT1D1"])
plotdata$correlation <- ifelse(plotdata$cor > 0,'positive correlation','negative correlation')


library(ggplot2)
ggplot(plotdata,aes(x=cor,y=reorder(gene,cor)))+
  ylab('Gene')+
  xlab('pearson-r')+
  ggtitle("Expression correlation with GLT1D1")+
  geom_segment(aes(yend=gene),xend=0,colour='grey50')+  ###绘制以数据点为端点的线段
  geom_point(size=3,aes(colour=correlation))+   ###此处我们将以正负相关(postive  negative)映射其颜色
  scale_colour_brewer(palette = 'Set1',limits=c('positive correlation','negative correlation'))+ ###颜色加深  
  theme_bw() +
  theme(panel.grid.major.y = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        plot.title = element_text(hjust = 0.5))

相关性分析棒棒糖图的详细绘制方法可参考:

R语言之相关性分析--棒棒糖图


小结

相关性分析是一种重要且常用的统计学方法,理清各种相关性分析的适用条件、掌握相关性分析及绘图的实现方法尤为重要。相关关系的可视化方法还有许多,如遇到有趣的相关关系图形,欢迎与小编联系交流,共同学习!

本文原创作者:韬声依旧,请支持原创!

感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请关注后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞转发。

也欢迎大家的意见和建议。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、论文、报告、考试等发愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供好的,详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

加油吧,打工人!

猜你喜欢:

R数据分析:相对小众但是超好用的R包汇总

假设检验基础:α错误,β错误,样本容量,效应量的关系简介

R语言作图:分类变量与连续变量关系的图形化表达

R数据分析:如何做数据的非线性关系,多项式回归的做法和解释

R数据分析:50人中至少两人相同生日的概率有多大?模拟给你看

相关推荐

了解Linux目录,那你就了解了一半的Linux系统

大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...

Linux命令,这些操作要注意!(linux命令?)

刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux必学的60个命令(linux必学的20个命令)

以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

15 个实用 Linux 命令(linux命令用法及举例)

Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...

Linux 常用命令集合(linux常用命令全集)

系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...

Linux的常用命令就是记不住,怎么办?

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux常用文件操作命令(linux常用文件操作命令有哪些)

ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...

Linux 常用命令(linux常用命令)

日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E&#...

简单粗暴收藏版:Linux常用命令大汇总

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...

「Linux」linux常用基本命令(linux常用基本命令和用法)

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...

Linux的常用命令就是记不住,怎么办?于是推出了这套教程

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux的30个常用命令汇总,运维大神必掌握技能!

以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...

Linux/Unix 系统中非常常用的命令

Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...