相关文章推荐
直爽的饭盒  ·  资源聚合平台操作指南-西安邮电大学信息网络中心·  1 年前    · 
失眠的猕猴桃  ·  南京用电高峰和低谷时间是怎么安排的- 南京本地宝·  1 年前    · 
气宇轩昂的弓箭  ·  膽結石飲食怎麼吃最好?有效防範膽結石! ∣ ...·  1 年前    · 
霸气的小虾米  ·  气相色谱仪器故障排除方法-浙江合谱仪器有限公司·  1 年前    · 
温柔的沙滩裤  ·  英国皇家艺术学院世界排名第几(英国皇家艺术学 ...·  1 年前    · 
小百科  ›  R语言相关性分析简便大例子-腾讯云开发者社区-腾讯云
R语言编程艺术(书籍) sugar 相关性分析 r语言
千杯不醉的跑步鞋
1 年前
作者头像
用户7010445
0 篇文章

R语言相关性分析简单小例子

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 小明的数据分析笔记本 > R语言相关性分析简单小例子

R语言相关性分析简单小例子

作者头像
用户7010445
发布 于 2020-04-14 14:38:15
1.6K 0
发布 于 2020-04-14 14:38:15
举报

原文链接

http://www.sthda.com/english/wiki/correlation-matrix-a-quick-start-guide-to-analyze-format-and-visualize-a-correlation-matrix-using-r-software#at_pco=smlwn-1.0&at_si=5e8f19ae4cd478e7&at_ab=per-2&at_pos=0&at_tot=1

相关性分析的应用场景

一些样本,每个样本会测一些指标,我想初步探索一下这些指标之间是否存在关联。具体场景:我收集了好多个品种的苹果成熟果实,每个品种的苹果我都会测一些指标,比如表型指标:果重;生理指标:可溶性糖,有机酸,花青素含量等等。

做完实验数据整理到excel中,另存为csv格式

数据是我胡编乱造的,没有实际意义!

读入数据
csvpath<-file.choose()
csvpath
df<-read.csv(csvpath,header=T,row.names = 1)

这样就把数据读进来存储到df里了

R语言里自带的相关性分析的函数是 cor() ,直接将数据放到括号里就可以了。默认的皮尔逊相关性分析

> cor(df)
              fruit_weight soluble_sugar organic_acid anthocyanin
fruit_weight    1.00000000    0.06342157   -0.2647533   0.1038605
soluble_sugar   0.06342157    1.00000000    0.2580373  -0.2590438
organic_acid   -0.26475334    0.25803726    1.0000000  -0.2241183
anthocyanin     0.10386047   -0.25904381   -0.2241183   1.0000000

通过method参数指定其他方法

> cor(df,method = 'sperman')
Error in match.arg(method) :
  'arg' should be one of “pearson”, “kendall”, “spearman”
> cor(df,method = 'spearman')
              fruit_weight soluble_sugar organic_acid anthocyanin
fruit_weight     1.0000000     0.1357143   -0.1714286   0.1892857
soluble_sugar    0.1357143     1.0000000    0.2821429  -0.2000000
organic_acid    -0.1714286     0.2821429    1.0000000  -0.2142857
anthocyanin      0.1892857    -0.2000000   -0.2142857   1.0000000

但是论文里的相关性分析通常都是带有p值,就是右上角会有星号。可以借助 Hmisc 包中的 rcorr 函数

这个函数要求的输入数据格式是矩阵,同过csv文件读入的数据格式是数据框,需要借助函数 as.matrix() 进行转换

library(Hmisc)
res2<-rcorr(as.matrix(df))

运行完以后res2里面存储3个内容,可以通过$符号获取

> res2$r
              fruit_weight soluble_sugar organic_acid anthocyanin
fruit_weight    1.00000000    0.06342157   -0.2647533   0.1038605
soluble_sugar   0.06342157    1.00000000    0.2580373  -0.2590438
organic_acid   -0.26475334    0.25803726    1.0000000  -0.2241183
anthocyanin     0.10386047   -0.25904381   -0.2241183   1.0000000
> res2$n
              fruit_weight soluble_sugar organic_acid anthocyanin
fruit_weight            15            15           15          15
soluble_sugar           15            15           15          15
organic_acid            15            15           15          15
anthocyanin             15            15           15          15
> res2$P
              fruit_weight soluble_sugar organic_acid anthocyanin
fruit_weight            NA     0.8223325    0.3402882   0.7126110
soluble_sugar    0.8223325            NA    0.3531301   0.3511885
organic_acid     0.3402882     0.3531301           NA   0.4219767
anthocyanin      0.7126110     0.3511885    0.4219767          NA

r是相关性系数,n是样本个数,p是相关性检验的p值

接下来我想看看谁跟谁的相关性比较高,比如筛选相关系数绝对值大于0.8。矩阵筛选我还不知道如何实现。原文自己写了一个函数,将矩阵转换为数据框,这样筛选起来就容易很多了。函数是

flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]

两个参数,一个是相关性,一个是p值

> flattenCorrMatrix(res2$r,res2$P)
            row        column         cor         p
1  fruit_weight soluble_sugar  0.06342157 0.8223325
2  fruit_weight  organic_acid -0.26475334 0.3402882
3 soluble_sugar  organic_acid  0.25803726 0.3531301
4  fruit_weight   anthocyanin  0.10386047 0.7126110
5 soluble_sugar   anthocyanin -0.25904381 0.3511885
6  organic_acid   anthocyanin -0.22411828 0.4219767

筛选一个相关系数绝对值大于0.25的

> df1<-flattenCorrMatrix(res2$r,res2$P)
> abs(df1$cor)>0.25
[1] FALSE  TRUE  TRUE FALSE  TRUE FALSE
> df1[abs(df1$cor)>0.25,]
            row       column        cor         p
2  fruit_weight organic_acid -0.2647533 0.3402882
3 soluble_sugar organic_acid  0.2580373 0.3531301
5 soluble_sugar  anthocyanin -0.2590438 0.3511885

接下来就是数据展示了,一个是表格,一个是图。接下来介绍画图: 一种展示方法

library(corrplot)
corrplot(res2$r,type="upper",tl.col ="black",tl.srt = 45)

另外一种展示方法

install.packages("PerformanceAnalytics")
 
推荐文章
直爽的饭盒  ·  资源聚合平台操作指南-西安邮电大学信息网络中心
1 年前
失眠的猕猴桃  ·  南京用电高峰和低谷时间是怎么安排的- 南京本地宝
1 年前
气宇轩昂的弓箭  ·  膽結石飲食怎麼吃最好?有效防範膽結石! ∣ 澄清醫院中港分院
1 年前
霸气的小虾米  ·  气相色谱仪器故障排除方法-浙江合谱仪器有限公司
1 年前
温柔的沙滩裤  ·  英国皇家艺术学院世界排名第几(英国皇家艺术学院录取率较高的三个 ...
1 年前
Link管理   ·   51好读   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南