R语言|Mantel Test 热图相关性分析(极致详细版)

一、R语言下载安装及环境配置

1.1 R语言介绍

R是用于统计分析绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。(可以画出很多好看且逻辑性极强的图)

1.2 R语言下载

网络搜索“R语言”,点击进入官网

或者直接访问官网链接

R: The R Project for Statistical Computingicon-default.png?t=O83Ahttps://www.r-project.org/

点击CRAN
选择一个国内镜像源下载链接(这样下载会更快一些)
选择自己合适的电脑系统下载相对应的R语言版本

1.3 R语言安装

双击安装包打开

 

选择安装位置,最后的位置会自动出现下载的R语言版本号

 

R语言主要是为了配置运行环境,后面采用Rstudio进行代码编辑,所以不用添加快捷方式
稍事等待

1.4 R语言环境配置

为什么需要配置环境变量

  1. ‌确保R命令可以被系统识别‌:通过配置环境变量,系统可以在任何目录下识别R命令,方便用户随时启动R会话。

  2. ‌加载R包和库‌:配置正确的路径可以确保R能够找到并加载安装的包和库,避免加载失败的问题。

进入设置,搜索“环境变量”,点击“编辑系统环境变量”

新建R语言的环境变量
输入自己的R语言bin文件夹安装位置
打开系统CMD,输入“r”,出现以上内容,说明环境配置成功。如果不知道如何打开CMD,可以自行度娘。

二、RStudio下载安装

RStudio 是一个流行的集成开发环境(IDE),专门用于使用 R 语言进行数据分析、统计建模、可视化和报告。RStudio 提供了一个用户友好的界面,使得编写 R 代码、管理数据和输出结果变得更加容易。

下载网址

RStudio Desktop - Positicon-default.png?t=O83Ahttps://posit.co/download/rstudio-desktop

确保R语言已经安装

 

建议和R语言安装在同一路径下,且路径中最好不要有中文,否则可能会报错

 

 


三、Mantel Test 代码运行

Mantel 测试(Mantel Test)是一种统计方法,用于评估两个距离矩阵之间的相关性。这种方法在生态学、遗传学、流行病学和其他领域中广泛应用,用于探究不同变量间的相关性,比如物种之间的相似性与环境变量之间的相似性。

基本思想

Mantel 测试的基本思想是比较两个距离矩阵:一个表示变量间的不相似性(如遗传距离、功能性状距离等),另一个表示观测到的或计算得到的距离(如地理距离、环境变量距离等)。如果两个矩阵之间的相关性显著,则表明变量间存在一定的关联性。

计算步骤

  1. 计算距离矩阵:首先,需要为两组数据计算距离矩阵。距离矩阵中的每个元素表示相应行和列变量之间的距离或不相似度。
  2. 应用Mantel 公式:使用公式计算两个矩阵之间的相关性统计量。该统计量反映了两个矩阵间的线性关系。
  3. 确定显著性:通过比较该统计量与在零假设下的期望分布来确定相关性是否显著。零假设通常表示两个矩阵间没有相关性。
    数据集介绍:
  • varespec 描述了24块样地中44种植物的丰度信息
  • varechem 描述了这24块样地土壤的14个性质参数。

3.1 相关代码

# 更新linkET包
## install.packages("devtools")
# devtools::install_github("Hy4m/linkET", force = TRUE)

# if (!require(package_name)) {
#   install.packages("package_name")
#   library(package_name)
# }
# 这段代码首先尝试加载包,如果包没有安装,它会自动安装并加载该包


# 导入R包
library(linkET)
library(dplyr)
library(ggplot2)

# 读取R语言自带的两个数据库作为示范案例
data("varechem", package = "vegan")
data("varespec", package = "vegan")

#把varechem拆分为4个类别的矩阵,分别与varespec的每列进行mantel_test
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")))

# 开始画图
qcorrplot(correlate(varechem), # 相关性分析
          type = "lower", #热图展示下半部分
          diag = FALSE) +  #不展示对角线
 
  # 函数在热图上添加方格,每个方格代表一个相关性值
  geom_square() +

  geom_couple(aes(colour = pd, #网络线的颜色映射mantel_test结果的显著性
                  size = rd), #网络线的粗细映射mantel_test结果的相关性
              data = mantel,
              curvature = 0.1) +  #基于起点或终点绘制最合适的曲线
  # 添加显著性标志
  # geom_mark 函数在热图上添加显著性标记。sep = '\n' 指定了显著性标记之间的分隔符,
  # size = 3 指定了标记的大小,
  # sig_level = c(0.05, 0.01, 0.001) 指定了显著性水平,
  # sig_thres = 0.05 指定了显著性阈值。
  geom_mark(sep = '\n',size =3, sig_level = c(0.05, 0.01, 0.001),
            sig_thres = 0.05,only_mark = TRUE, color = 'black',) + # only_mark: 是否只显示标记而不显示数字。

  scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "PuOr")) +  # 设置热图填充颜色

  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))+

  # theme 函数用于设置图表的主题,包括文本大小、颜色、对齐方式等。
  theme(
    text = element_text(size = 14, family = "serif"),
    plot.title = element_text(size = 14, colour = "pink", hjust = 0.5),
    legend.title = element_text(color = "black", size = 14),
    legend.text = element_text(color = "black", size = 14),
    axis.text.y = element_text(size = 14, color = "black", vjust = 0.5, hjust = 1, angle = 0),
    axis.text.x = element_text(size = 14, color = "black", vjust = 0.5, hjust = 0.5, angle = 45)
)

3.2 出图效果

 网络线的颜色映射mantel_test结果的显著性                 网络线的粗细映射mantel_test结果的相关性
### DeepSeek R1 模型复现代码 GitHub 仓库实现 对于希望获取 DeepSeek R1 模型或项目复现代码的开发者而言,GitHub 是一个重要的资源平台。通常情况下,开源社区会提供官方或其他贡献者的实现本。 许多研究团队会在论文发布的同时公开相应的源码链接,方便其他研究人员验证实验结果并进一步改进算法。如果 DeepSeek R1 已经发布了对应的预训练模型或是详细的架构描述,则很可能存在配套的开源实现[^1]。 为了找到特定于 DeepSeek R1 的 GitHub 实现库,建议采取以下方式搜索: - 使用关键词 `DeepSeek R1` 结合 `reproduction`, `implementation` 或者 `source code` 进行组合查询; - 查看是否有来自作者所在机构发布的官方存储库; - 浏览 Issues 和 Pull Requests 页面了解最新动态以及潜在问题解决方案; 值得注意的是,并不是所有的研究成果都会立即开放其完整的工程化实现细节。因此,在某些时候可能需要等待一段时间直到更多资料被公布出来,或者是通过阅读原始文献来尝试自行构建类似的系统结构[^2]。 ```python import requests from bs4 import BeautifulSoup def search_github_repos(query): url = f"https://github.com/search?q={query}&type=repositories" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') repos_info = [] items = soup.select('.repo-list-item') for item in items[:5]: # 获取前五个匹配项作为示例展示 title = item.h3.a['href'].split('/')[-1] link = "https://github.com" + item.h3.a['href'] description_tag = item.find('p', class_='mb-1') desc = description_tag.text.strip() if description_tag else '' repo_data = { "title": title, "link": link, "description": desc } repos_info.append(repo_data) return repos_info search_query = "DeepSeek R1 reproduction OR implementation" results = search_github_repos(search_query) for result in results: print(f"{result['title']}\n{result['link']}\nDescription: {result['description']}\n") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值