linkET 简单教程

之前写了一篇文章mantel test 简单教程 - (jianshu.com)但是最后的ggcor部分作者弃坑了,后来发现原作者做了一个新包Hy4m/linkET (github.com)用法一样,因此这里考虑写一下使用感受

linkET直接将vegan包的mantel函数内置了,并且能够直接得出多组mantel_test的结果的表格,如图:
示例文件mantel_test的结果

这无疑是很方便的,但是我这里发现在做dist向量的步骤,linkET默认:
第一个参数为spec(species),使用bray法计算
第二个参数为env(environmental factor),分割为单列向量,使用euclidean计算距离
这里是作者给的例子:

library(dplyr)
#> 
#> 载入程辑包:'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
data("varechem", package = "vegan")
data("varespec", package = "vegan")

mantel <- mantel_test(varespec, varechem,
                      spec_select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37,
                                         Spec04 = 38:44)) %>% 
  mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
                  labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
         pd = cut(p, breaks = c(-Inf, 0.01, 0.05, Inf),
                  labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))
#> `mantel_test()` using 'bray' dist method for 'spec'.
#> `mantel_test()` using 'euclidean' dist method for 'env'.

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature()) +
  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "RdBu")) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = color_pal(3)) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

特别注意
目前来看这种做法不够精细,因为在计算环境变量时,有些研究需求将环境因子看作一个整体,然后mantel检验两个矩阵之间的相关性,同时这种需求在计算距离矩阵时需要先将原始矩阵进行缩放:

scale.env = scale(env, center = TRUE, scale = TRUE)

只有经过类似这样的操作,才能较为可靠的计算环境因子的距离矩阵。


所以我们需要详细的看linkET::mantel_test的帮助文档:

mantel_test(
  spec,
  env,
  group = NULL,
  env_ctrl = NULL,
  mantel_fun = "mantel",
  spec_select = NULL,
  env_select = NULL,
  na_omit = TRUE,
  spec_dist = NULL,
  env_dist = NULL,
  env_ctrl_dist = NULL,
  seed = 123,
  ...)

image.png

也就是说:
spec_select和env_select可以进行两个矩阵的分割,然后计算分割后的mantel的R和P值
mantel_fun可以选择使用那么函数进行mantel计算
但是针对mantel()函数的常用参数,好像没有看到接口......这里没有看作者的源代码,因此也不好理解


总结:

如果希望使用linkET做图,还是使用作者本身给的可视化流程最好用,但如果希望得到矩阵间的mantel检验的值用以证明结论,考虑自己分割矩阵用vegan::mental算吧,比较方便
另外lingkET同时提供了相关性热图和圈图的可视化方法,具体细节需要自己研究啦!Hy4m/linkET (github.com)
PS:图真好看

示例数据图

image.png

image.png

你可能感兴趣的:(linkET 简单教程)