pytorch 变对角矩阵_ggcor |相关系数矩阵可视化

这篇博客介绍了如何使用PyTorch进行变对角相关系数矩阵的可视化,包括非对称相关系数矩阵的处理、相关性检验以及Mantel检验的可视化方法。内容涵盖数据预处理、绘图函数初始化、图层函数的应用,以及相关性网络图的绘制。此外,还提供了不同场景下的数据预处理函数示例和mantel检验的组合图展示。
摘要由CSDN通过智能技术生成
厚缊 业余的R语言可视化重度患者
个人博客:houyun.xyz
邮箱:houyunhuang@163.com
转载本文(包括长期转载账号)必须联系厚缊授权
相关系数矩阵可视化已经至少有两个版本的实现了,魏太云基于base绘图系统写了 corrplot 包,应该说是相关这个小领域中最精美的包了,使用简单,样式丰富,只能用惊艳来形容。 Kassambara的 ggcorrplot 基于 ggplot2 重写了 corrplot ,实现了 corrplot 中绝大多数的功能,但仅支持“square”和“circle”的绘图标记,样式有些单调,不过整个 ggcorrplot 包的代码大概300行,想学习用 ggplot2 来自定义绘图函数 ,看这个包的源代码很不错。还有部分功能相似的 corrr 包(在写 ggcor 之前完全没有看过这个包,写完之后发现在相关系数矩阵变data.frame方面惊人的相似),这个包主要在数据相关系数提取、转换上做了很多的工作,在可视化上稍显不足。 ggcor 的核心是为相关性分析、数据提取、转换、可视化提供一整套解决方案,目前的功能大概完成了70%,后续会根据实际需要继续扩展。 这里要介绍的 ggcorcorrplot 的有一种实现,在吸收借鉴(或者说是全般) corrplot 的基础上,略有提升,使用上会更灵活简单。这里不得不说下整个开发过程,一方面是为了感谢来自五湖四海的朋友提的许许多多的专业意见,另一方面是深感歉意,由于我考虑不周, ggcor (第一次上传github测试大约在十天前,名字还是 ggcorrr )存在各种各样的小bug,也有很多限制,这次为了升级和简化,不仅名字变了,里面的函数也变得完全不一样,若你们以前写了 ggcorrr 的代码,现在基本不可以重用了。 尽管这一版本的更新我考虑了很多应用场景,综合了方方面面的意见,但是bug和限制还是在所难免,希望朋友们继续提意见,提需求。当然,这一次有两点是可以保证的:一是包名不会变了,再变都成精了;二是包内的主体函数和参数不会变了,而且即使要变,我也会考虑兼容性。

安装

目前是测试版本,帮助文档还没写,得慢慢磨。
if(!require(devtools))
install.packages("devtools")
if(!require(ggcor))
devtools::install_github("houyunhuang/ggcor")

数据预处理函数

ggplot2 要求的数据格式是 data.frame ,要把相关系数矩阵处理成理想的数据格式需要一系列的操作。 ggcor 提供了两个主要的函数,一个是 as_cor_tbl() 函数,另一个是 fortify_cor() 函数,两者结合应该能满足绝大多数的应用场景需求。 as_cor_tbl() 是更底层的函数, fortify_cor() 本质上调用了 as_cor_tbl() 来得到最终的数据结果。这个函数适用于已经知道,或者需要用其它更特殊的函数(非 stats::cor() )来处理得到系数的情况,常用的参数是前三个。
  • x—— 相关系数矩阵(或者数据框),矩阵行名和列名是必要的,若没有或者缺失值会自动补全名字,行名以“Y”开头,附上递增的整数序列,列名以“X”开头,附上附上递增的整数序列。
  • type —— 相关系数矩阵图样式,“upper”截断下三角,“lower”截断上三角。
  • show.diag —— 相关系数矩阵图中是否包含对角线,仅对对称矩阵有效。
  • p —— 相关系数检验p值矩阵(或者数据框),必须与x一一对应。
  • low —— 相关系数置信区间下界矩阵(或者数据框),必须与x一一对应。
  • upp —— 相关系数置信区间上界矩阵(或者数据框),必须与x一一对应。
  • cluster.type —— 是否对相关系数矩阵进行重新排序,“none”表示不重排,“all”表示行列均重排,“row”表示对行重排,“col”则只对列重排。
  • ... —— 其它传递给matrix_order()函数的参数。
library(ggcor)
## function(x,
## type = c("full", "upper", "lower"),
## show.diag = TRUE,
## p = NULL,
## low = NULL,
## upp = NULL,
## cluster.type = c("none", "all", "row", "col"),
## ...)

corr df df ## return a tibble
## # A tibble: 121 x 3
## x y r
## *
## 1 1 11 1
## 2 1 10 -0.852
## 3 1 9 -0.848
## 4 1 8 -0.776
## 5 1 7 0.681
## # … with 116 more rows
## Extra attributes:
## xname: mpg cyl disp hp drat wt qsec vs am gear carb
## yname: carb gear am vs qsec wt drat hp disp cyl mpg
## show.diag: TRUE
fortify_cor() 主要适用于处理原始数据表,即调用 cor() 求相关系数, cor 函数对数据按列进行两两相关性计算,默认使用 pearson 方法,当然理论解读中提前的 spearmankendall 方法也都支持。调用(若需要) cor.test() 函数进行统计检验,并返回 ggcor 需要的数据类。
  • x—— 原数据矩阵(或者数据框),列名是必要的,若没有或者缺失值会自动补全名字,列名以“X”开头,附上附上递增的整数序列。
  • y—— 原数据矩阵(或者数据框),列名是必要的,若没有或者缺失值会自动补全名字,列名以“X”开头,附上附上递增的整数序列。当y不为空(NULL)时,相关系数是x中的每一列和y中的每一列的相关性。
  • type —— 相关系数矩阵图样式,“upper”截断下三角,“lower”截断上三角。
  • show.diag —— 相关系数矩阵图中是否包含对角线,仅对对称矩阵有效。
  • cor.test —— 逻辑值,是否进行相关性检验。
  • cor.test.alt —— 相关性检验备择假设,详细请查看cor.test()帮助。
  • cor.test.method —— 相关性检验方法,详细请查看cor.test()帮助。
  • cluster.type —— 是否对相关系数矩阵进行重新排序,“none”表示不重排,“all”表示行列均重排,“row”表示对行重排,“col”则只对列重排。
  • cluster.method —— 当cluster.order为“HC”(默认)时算法,详细请查看ggcor::matrix_order()
  • ... —— 其它传递给cor()函数的参数。
## function(
## x,
## y = NULL,
## type = c("full", "upper", "lower"),
## show.diag = FALSE,
## cor.test = FALSE,
## cor.test.alt = "two.sided",
## cor.test.method = "pearson",
## cluster.type = c("none", "all", "row", "col"),
## cluster.method = "HC",
## ... )

df01 TRUE, cluster.type = "all")
df01
## # A tibble: 121 x 6
## x y r p low upp
## *
## 1 1 11 1 7.44e-232 1.000 1.000
## 2 1 10 0.750 7.83e- 7 0.543 0.871
## 3 1 9 0.428 1.46e- 2 0.0927 0.676
## 4 1 8 0.527 1.94e- 3 0.218 0.740
## 5 1 7 0.395 2.53e- 2 0.0537 0.654
## # … with 116 more rows
## Extra attributes:
## xname: carb hp wt cyl disp drat am gear qsec mpg vs
## yname: vs mpg qsec gear am drat disp cyl wt hp carb
## show.diag: TRUE
as_cor_tbl()fortify_cor() 返回值均是 cor_tbl 类的数据框(准确的说是 tibble ),并包含其它额外特殊属性,要充分利用 ggcor 包中一系列工具函数带来的便捷性,必须调用(手动比较麻烦)这两个函数预处理数据。

初始化绘图函数

ggcor 封装了一个基本的初始化函数 ggcor() ,用来处理数据、绘图类型、背景、坐标轴、颜色映射、图例等。看上去 ggcor() 函数非常复杂,但若仔细观察参数命名规则和分类,又是非常简单的。绘图区网格线参数名字均以 grid.* 开头;坐标轴相关参数均以 axis.* 开头;图例相关(主要是colourbar)的参数均以 legend.* 开头;还有 panel.backgroudxlimylim 均是常见的参数, panel.backgroud 参数用来设置绘图区背景颜色, xlimylim 则是设置x/y轴的范围。把这几大块参数去掉后,剩下的参数只有6个了,瞬间清爽了不少。 要完全理解 ggcor() 的作用原理及相关参数的设置,需要先讲讲 ggcor() 内部构成。 ggcor()本质上是调用了ggplot()来初始化, 然后根据相关系数图的样式添加了一些辅助的图层。
  • xymappingis.corshow.diag...参数均和数据预处理和映射相关。
    • x可以是cor_tbl、矩阵(数据框)。当为cor_tbl时直接作为data参数传递给ggplot();为矩阵(数据框)时,若是(is.cor = TRUE)相关系数矩阵(数据框)时,调用as_cor_tbl()函数处理成cor_tbl,若不是(is.cor = FALSE)相关系数矩阵(数据框)时,调用fortify_cor()函数处理成cor_tbl,此时xyshow.diag...均传递给as_cor_tbl()或者fortify_cor()
    • mapping对应ggplot()中的mapping参数,当为空(默认)时,根据cor_tbl中的变量情况添加,基础形式是aes(x = x, y = y, r = r, fill = r)。若cor_tbl包含“p”(进行了相关系数显著性检验),则最基础形式基础上额外添加p = p,若检验方法(cor.test.method = "pearson"),再加上low = lowupp = upp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值