前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >相关性分析及其可视化:copy&paste,搞定

相关性分析及其可视化:copy&paste,搞定

作者头像
邓飞
发布2022-05-19 09:22:14
4070
发布2022-05-19 09:22:14
举报
文章被收录于专栏:育种数据分析之放飞自我

本次,介绍一下相关性分析以及相关性分析可视化常用方法。

0. 相关数据

代码语言:javascript
复制
library(learnasreml)
library(tidyverse)
data(fm)
str(fm)

dd = fm %>% select(-c(1:5))
head(dd)

1. 相关性分析

1.1 R语言默认函数cor

代码语言:javascript
复制
cor(dd)

这里,原始数据中有缺失值,所以有NA,所以我们需要考虑缺失值,修改的代码如下:

代码语言:javascript
复制
cor(dd,use = "complete.obs")

相关性结果:

上面还有一个缺陷,没有给出显著性检验,默认的cor.test只能对两个变量进行显著性检验,比如:

代码语言:javascript
复制
cor.test(dd[,1],dd[,2])

1.2 使用Hmisc包中的rcorr函数

Hmisc包中的rcorr函数可以对多个变量进行相关性计算,并且计算显著性。

注意,需要将变量转化为矩阵,才可以进行分析。

代码语言:javascript
复制
library(Hmisc)
dd = as.matrix(dd)
rcorr(dd)

结果如下:

代码语言:javascript
复制
> rcorr(dd)
      dj    dm   wd    h1   h2    h3   h4   h5
dj  1.00  0.38 0.86  0.04 0.04 -0.02 0.07 0.03
dm  0.38  1.00 0.57 -0.03 0.03 -0.05 0.05 0.04
wd  0.86  0.57 1.00  0.11 0.14  0.07 0.18 0.15
h1  0.04 -0.03 0.11  1.00 0.58  0.47 0.47 0.44
h2  0.04  0.03 0.14  0.58 1.00  0.83 0.79 0.73
h3 -0.02 -0.05 0.07  0.47 0.83  1.00 0.82 0.75
h4  0.07  0.05 0.18  0.47 0.79  0.82 1.00 0.91
h5  0.03  0.04 0.15  0.44 0.73  0.75 0.91 1.00

n
    dj  dm  wd  h1  h2  h3  h4  h5
dj 826 824 826 826 826 826 823 823
dm 824 825 825 825 825 825 822 822
wd 826 825 827 827 827 827 824 824
h1 826 825 827 827 827 827 824 824
h2 826 825 827 827 827 827 824 824
h3 826 825 827 827 827 827 824 824
h4 823 822 824 824 824 824 824 824
h5 823 822 824 824 824 824 824 824

P
   dj     dm     wd     h1     h2     h3     h4     h5    
dj        0.0000 0.0000 0.2023 0.2388 0.6239 0.0399 0.3939
dm 0.0000        0.0000 0.4264 0.3668 0.1415 0.1619 0.2514
wd 0.0000 0.0000        0.0013 0.0000 0.0314 0.0000 0.0000
h1 0.2023 0.4264 0.0013        0.0000 0.0000 0.0000 0.0000
h2 0.2388 0.3668 0.0000 0.0000        0.0000 0.0000 0.0000
h3 0.6239 0.1415 0.0314 0.0000 0.0000        0.0000 0.0000
h4 0.0399 0.1619 0.0000 0.0000 0.0000 0.0000        0.0000
h5 0.3939 0.2514 0.0000 0.0000 0.0000 0.0000 0.0000

上面结果中:

  • 第一部分是相关系数
  • 第二部分是有效观测值
  • 第三部分是显著性

所以,我们使用第一部分相关系数,和第三部分显著性结果即可。

2. 相关性系数可视化

R包进行相关系数可视化时,会将相关系数和显著性也输出到图片中,一步到位。

2.1 PerformanceAnalytics包中的chart.Correlation

代码如下:

代码语言:javascript
复制
library(PerformanceAnalytics)
chart.Correlation(dd)

2.2 corrplot包中的corrplot

注意corrplot的对象,需要是相关系数,而不是原始数据。

代码语言:javascript
复制
library(corrplot)
re = cor(dd,use = "complete.obs")
corrplot(re)

没有给出显著性,不太友好。

2.3 GGally包中的chart.ggpairs

注意,ggpairs的对象,需要是数据框,所以要转化为数据框。

代码语言:javascript
复制
library(GGally)
dd = as.data.frame(dd)
ggpairs(dd)

ggpairs的好处是,还可以进行分组。比如这里按照两组进行划分。

fm数据框中,有两个密度,这里,我们按照密度进行分组。

代码语言:javascript
复制
ggpairs(fm, columns = (6:13),ggplot2::aes(color = fm$Spacing))

3. 所有代码汇总

代码语言:javascript
复制
library(learnasreml)
library(tidyverse)
data(fm)
str(fm)

dd = fm %>% select(-c(1:5))
head(dd)


# 相关系数
cor(dd)
cor(dd,use = "complete.obs")

cor.test(dd[,1],dd[,2])


library(Hmisc)
dd = as.matrix(dd)
rcorr(dd)

# 相关系数可视化
library(PerformanceAnalytics)
chart.Correlation(dd)

library(corrplot)
re = cor(dd,use = "complete.obs")
corrplot(re)


library(GGally)
dd = as.data.frame(dd)
ggpairs(dd)


ggpairs(fm, columns = (6:13),ggplot2::aes(color = fm$Spacing))

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

本文分享自 育种数据分析之放飞自我 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 相关数据
  • 1. 相关性分析
    • 1.1 R语言默认函数cor
      • 1.2 使用Hmisc包中的rcorr函数
      • 2. 相关性系数可视化
        • 2.1 PerformanceAnalytics包中的chart.Correlation
          • 2.2 corrplot包中的corrplot
            • 2.3 GGally包中的chart.ggpairs
            • 3. 所有代码汇总
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档