网站首页 > 技术文章 正文
本期内容速览:
- 相关性分析方法选择
- Pearson相关&Spearman相关
- 偏相关
- 相关关系可视化
第一部分: 相关性分析方法选择
相关分析是研究两种或两种以上随机变量之间的关系的一种统计学方法,可以分析变量间的关系情况以及关系强弱程度等,如身高和体重之间的相关性。
对于不同类型的变量,需选择合适的相关性分析方法,我们常用的相关性分析方法及适用条件如下:
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数据为例:绘制相关矩阵图后发现,GLT1D1与SCG5呈显著正相关,KCNC3、L1CAM与GLT1D1和SCG5都呈显著正相关。
此时,控制KCNC3、L1CAM两个变量,分析GLT1D1和SCG5之间的相互关系,即计算其偏相关系数:
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
从结果来看,GLT1D1和SCG5的偏相关系数为0.52,小于之前的0.66,这是由于控制了KCNC3、L1CAM两个变量的影响。
第四部分: 相关关系可视化
4.1 散点图
以GLT1D1和SCG5基因表达数据为例,绘制散点图:
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...
加油吧,打工人!
猜你喜欢:
猜你喜欢
- 2024-10-07 R语言实践问题与解决方法记录(一)
- 2024-10-07 R数据分析:使用R语言进行卡方检验
- 2024-10-07 R数据分析:如何用R做多重插补,实例操练
- 2024-10-07 R语言——关联规则(r语言关联规则分析)
- 2024-10-07 R语言数据质量分析(r语言数据分析步骤)
- 2024-10-07 R语言风险价值VaR(Value at Risk)和损失期望
- 2024-10-07 R语言——几个基础统计(r语言统计学)
- 2024-10-07 干货 | 超实用的【R语言与高级医学统计学】课程,科研人必备
- 2024-10-07 R语言中因子的创建与使用(r语言中因子指什么)
- 2024-10-07 协同过滤的R语言实现及改进(协同过滤算法改进)
- 1517℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 593℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 521℃MySQL service启动脚本浅析(r12笔记第59天)
- 489℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 488℃启用MySQL查询缓存(mysql8.0查询缓存)
- 476℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 456℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 453℃MySQL server PID file could not be found!失败
- 最近发表
-
- PS所有滤镜的说明(六)(ps滤镜详解)
- 5款小白也能用的在线图片编辑器!电商效率飙升就靠它!
- Java变量(java变量有什么作用)
- Java面试常见问题:Java注解(java中的面试题)
- Java编程入门第一课:HelloWorld(java编程从入门到实践)
- Java基础教程:Java继承概述(java里继承的概述)
- java基础之——访问修饰符(private/default/protected/public)
- 如何规划一个合理的JAVA项目工程结构
- 将机器指令翻译成 JavaScript -- 终极目标
- Web 服务器基准测试:Go vs. Node.js vs. Nim vs. Bun
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)