200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > R计算两列数据的相关系数_【R语言】相关性分析 相关系数的显著性检验及可视化...

R计算两列数据的相关系数_【R语言】相关性分析 相关系数的显著性检验及可视化...

时间:2020-11-19 11:34:18

相关推荐

R计算两列数据的相关系数_【R语言】相关性分析 相关系数的显著性检验及可视化...

本篇文章介绍基于R语言的相关性分析、相关系数的显著性检验及可视化,该教程为个人笔记,大家也可参考学习,不足之处也欢迎大家批评指正!

相关性分析用于评估两个或多个变量之间的关联,能通过定量指标描述变量之间的强弱、直接或间接联系。相关系数是对变量之间的相关程度的定量描述,相关系数值介于-1~1之间,越接近0相关性越低,越接近-1或1相关性越高;正负号表明相关方向,正号为正相关、负号为负相关。当数据呈正态分布时,才可以使用相关性分析。可以使用Shapiro-Wilk test进行检查数据是否满足正态分布。

该案例中示例数据包含多样性(diversity)、生物量(biomass)、产量(yield)和种植密度(density)四个指标(单位请自动忽略,数据仅作为示例使用)。

一、常见的变量间相关系数

1、Pearson相关系数:Pearson相关系数是用于表示相关性大小的最常用指标,适用于两个正态分布的连续变量。

2、Spearman等级相关系数:又称为秩相关系数,利用两变量的秩次大小来进行分析,属于非参数统计方法。适用于不满足Pearson相关系数正态分布要求的连续变量,也可以用于有序分类变量的之间的相关性测量。

3、Kendall's Tau相关系数:Kendall's Tau相关系数是一种非参数检验。适用于两个有序分类变量。

4、偏相关:当要进行相关性分析的两个变量其取值受到其他变量影响时,可以利用偏相关分析对其他变量进行控制,在控制其他变量基础之上进行这两个变量之间相关性分析。适用于考虑第三方影响的两个变量之间的相关性分析。

二、R语言的实现

1、Pearson、Kendall、Spearman相关

##读入数据df##查看数据df

##正态分布检验shapiro.test(df$diversity)shapiro.test(df$biomass)shapiro.test(df$yield)shapiro.test(df$density)

结果符合正态分布

##计算列与列之间的协方差cov(df)

##计算列与列之间的相关系数,默认的方法为pearsoncor(df)

##计算列与列之间的pearson、kendall、spearman相关系数cor(df,method="pearson")cor(df, method = "kendall")cor(df, method = "spearman")

2、偏相关

偏相关是指在控制一个或多个定量变量时,另外两个定量变量之间的相互关系。

##使用ggm包的pcor()函数library(ggm)##控制yield(第三列)时,计算diversity(第一列)和biomass(第二列)的偏相关系数##前两个数值表示要计算相关系数的变量,其余的数值为条件变量(即要排除影响的变量)pcor(c(1,2,3),cov(df))

3、相关系数的显著性检验

##相关性的显著性检验(pearson、kendall、spearman相关系数)##计算好相关矩阵后,对其进行显著性检验,可以使用cor.test()函数和psych包的corr.test()函数##cor.test()函数检验p值(只能检验一种相关关系)##计算第一列和第二列直接的相关性,方法使用pearsoncor.test(df[,1],df[,2], method = "pearson")

##psych包的corr.test()函数可以检验相关系数矩阵library("psych")cor##查看相关系数rcor$r##查看相关系数的显著性检验结果pcor$p

4、可视化

4.1 corrplot包

##使用 corrplot() 函数实现可视化library(corrplot)##默认图corrplot(cor$r, p.mat = cor$p, insig = 'label_sig', sig.level = c(.001, .01, .05), pch.cex = 1.5)

*** p<0.001; ** p<0.01; * p<0.05, the same below.

##作图并加上显著性(上半部分)corrplot(cor$r, p.mat = cor$p,tl.col = "black",method = "circle",type = "upper",tl.pos = "d", insig = 'label_sig', sig.level = c(.001, .01, .05))##加上下半部分corrplot(cor$r,add=TRUE, type="lower", method="number",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n")

##设置颜色,颠倒系统默认的颜色color"#053061", "#FFFFFF","#FDDBC7","#F4A582","#D6604D","#B2182B","#67001F"))

###颠倒系统默认的颜色(红蓝色互换位置)corrplot(cor$r, p.mat = cor$p,tl.col = "black",method = "circle",type = "upper",tl.pos = "d",col = color(9), insig = 'label_sig', sig.level = c(.001, .01, .05), pch.cex = 1.5)corrplot(cor$r,add=TRUE, type="lower", method="number",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n", col = color(9))

4.2PerformanceAnalytice包

#加载PerformanceAnalytics包library(PerformanceAnalytics)chart.Correlation(cor$r)

图解:

对角线上显示的是分布图,左下部显示的是具有拟合线的双变量散点图,右上部显示的是相关系数以及显著性水平。

两个包做出来的图显著性不一致,额... 有点懵;后续还需进一步研究,但是一般情况下多用corrplot包作图。

参考文献:Kabacoff, R. (). R in Action: Data Analysis and Graphics with R: Manning Publications Co.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。