Mantel test 是对两个矩阵相关关系的检验,由Nathan Mantel在1976年提出。之所以抛开相关系数发展这样一种方法,是因为相关系数只能处理两列数据之间的相关性,而在面对两个矩阵之间的相关性时就束手无策。Mantel检验专治这种不服。

这种方法多用于生态学上,不同的样本case对应不同的变量,而不同的变量可以分属不同的类别,对case有不同角度的刻画。如基于不同植物种类数量可以建立样本间的两两距离矩阵,只需套用距离计算公式即可;不同样本的微生物clone序列,通过Unifrac方法也可以计算得到样本间距离矩阵;不同位置,两两间距离也可以用距离表示。所得到这些矩阵,如果希望验证两类描述间有没有相关关系,就非常有用了。比如我希望检验微生物群落是否和植被群落有对应关系,就可以将微生物Unifrac矩阵对植物的比如Bray-Curtis距离矩阵做个相关分析,由得到的结果得出自己的推论。这种方法的好处在于,不管你是什么数据,只要能计算有距离属性的值,都可以转化为距离矩阵进行分析。本人《空间方法在微生物生态学中的应用》(好像是生态学报2010年2月)一文中已有提及,在此延伸到实际应用。

Mantel test,顾名思义,是一种检验。既然是检验就得有原假设,它的原假设是两个矩阵见没有相关关系。检验过程如下:两个矩阵都对应展开,变量两列,计算相关系数(理论上什么相关系数都可以计算,但常用pearson相关系数),然后其中一列或两列同时置换,再计算一个值,permutation 成千上万次,看实际的r值在所得r值分布中的位置,如果跟随机置换得到的结果站队较近,则不大相关,如果远远比随机由此得到显著性。

Mantel测试测量通常包含距离测量的两个矩阵之间的相关性。 Mantel测试是一种测试空间自相关的方法。 在ade4库使用功能,我们可以在河进行Mantel检测要下载和加载这个库,输入install.packages(“ade4”),然后library(ade4)。 在其他R库中还有其他Mantel测试功能,我们对这个库的选择不应该被视为任何方式的认可。
让我们看一个例子。 我们的数据集中, 臭氧 ,含有在聚合一个月以上洛杉矶地区32的位置臭氧测量。 该数据集包括的站号( ),车站的纬度和经度(纬度经度 ),最高8小时每日平均值(Av8top)的平均值。 我们将有兴趣测试是否距离较近的站相对于相距较远的站,臭氧测量的差异更小。 这些数据和其他空间数据集可以从伊利诺伊大学的空间分析实验室下载。 我们可以查看位置变量的摘要,以查看所考虑的位置范围。

ozone<-read.table("http://www.ats.ucla.edu/stat/r/faq/ozone.csv", sep=",", header=T)
head(ozone, n=10)Station   Av8top      Lat       Lon
1       60 7.225806 34.13583 -117.9236
2       69 5.899194 34.17611 -118.3153
3       72 4.052885 33.82361 -118.1875
4       74 7.181452 34.19944 -118.5347
5       75 6.076613 34.06694 -117.7514
6       84 3.157258 33.92917 -118.2097
7       85 5.201613 34.01500 -118.0597
8       87 4.717742 34.06722 -118.2264
9       88 6.532258 34.08333 -118.1069
10      89 7.540323 34.38750 -118.5347

要运行Mantel测试,我们需要生成两个距离矩阵:一个包含空间距离,一个包含在给定点的测量结果之间的距离。 在空间距离矩阵中,靠近在一起的点对的条目低于远离的点对的条目。 在测量的结果矩阵中,具有类似结果的位置对的条目低于具有不同结果的点对的条目。 我们今天使用DIST功能做的。 Mantel测试函数将需要此“距离”类的对象。

station.dists <- dist(cbind(ozone$Lon, ozone$Lat))
ozone.dists <- dist(ozone$Av8top)as.matrix(station.dists)[1:5, 1:5]1         2         3         4         5
1 0.0000000 0.3937326 0.4088031 0.6144127 0.1854888
2 0.3937326 0.0000000 0.3749446 0.2206810 0.5743590
3 0.4088031 0.3749446 0.0000000 0.5116772 0.4994034
4 0.6144127 0.2206810 0.5116772 0.0000000 0.7944601
5 0.1854888 0.5743590 0.4994034 0.7944601 0.0000000as.matrix(ozone.dists)[1:5, 1:5]1        2        3        4        5
1 0.000000 1.326612 3.172921 0.044354 1.149193
2 1.326612 0.000000 1.846309 1.282258 0.177419
3 3.172921 1.846309 0.000000 3.128567 2.023728
4 0.044354 1.282258 3.128567 0.000000 1.104839
5 1.149193 0.177419 2.023728 1.104839 0.000000

这些是函数将要测试相关性的两个矩阵。 该测试包括计算矩阵中的条目的相关性,然后置换矩阵并且在每个置换下计算相同的测试统计量,并且将原始测试统计量与来自置换的测试统计量的分布进行比较以生成p值。 置换的数量定义了可以计算p值的精度。 进行Mantel检验的功能是mantel.rtest和必需的参数是两个距离矩阵。 排列数也可以由用户指定,但默认为99。

mantel.rtest(station.dists, ozone.dists, nrepet = 9999)Monte-Carlo test
Observation: 0.1636308
Call: mantel.rtest(m1 = station.dists, m2 = ozone.dists, nrepet = 9999)
Based on 9999 replicates
Simulated p-value: 0.0312

基于这些结果,我们可以拒绝零假设,这两个矩阵,空间距离和臭氧距离是无关的 ****其中α= 0.05。 观察到的相关性,r = 0.1636308,表明矩阵条目是正相关的。 因此,在彼此靠近而彼此远离的站之间通常看到较小的臭氧差异。 注意,由于该测试是基于随机排列,所以相同的代码将总是达到相同的观察到的相关性,但很少具有相同的p值。

代码


# Mantel test -------------------------------------------------------------# example from "ape"
library("ape", lib.loc="D:/Program Files/R/R-3.1.2/library")q1 <- matrix(runif(36), nrow = 12)
q2 <- matrix(runif(36), nrow = 6)
mantel.test(q1, q2, graph = TRUE,main = "Mantel test: a random example with 6 X 6 matrices",xlab = "z-statistic", ylab = "Density",sub = "The vertical line shows the observed z-statistic")# example from http://www.ats.ucla.edu/stat/r/faq/mantel_test.htmlibrary(ade4)
ozone<-read.table("http://www.ats.ucla.edu/stat/r/faq/ozone.csv", sep=",", header=T)station.dists <- dist(cbind(ozone$Lon, ozone$Lat))
dim(station.dists)
ozone.dists <- dist(ozone$Av8top)as.matrix(station.dists)[1:5, 1:5]as.matrix(ozone.dists)[1:5, 1:5]# 2个结果不一样
mantel.rtest(station.dists, ozone.dists, nrepet = 10000)
mantel.test(as.matrix(station.dists), as.matrix(ozone.dists),nperm = 10000)

ref:Mantel Test_王强_新浪博客 (sina.com.cn)

Mantel test的R实现相关推荐

  1. R包vegan的Mantel tests探索群落物种组成是否与环境相关

    R包vegan的Mantel tests Mantel tests是确定两组距离测度矩阵(而非两组变量矩阵)之间相关性的相关性测试方法,用于判断一个矩阵中的样本距离与另一矩阵中的样本距离是否相关.Ma ...

  2. MPB:西农焦硕组-微生物生物地理学研究方法

    微生物生物地理学研究方法 Research Methods of Microbial Biogeography 彭子恒1,焦硕1, *,韦革宏1 1西北农林科技大学生命科学学院,旱区作物逆境生物学国家 ...

  3. GPB|农业生产活动对水体微生态的重要影响(一作解读)

    GPB最新专辑Microbiome and Health在线发表华中科技大学生命科学与技术学院宁康课题组.中国科学院测量与地球物理研究所王智课题组和美国芝加哥大学微生物中心Jack A Gilbert ...

  4. 秀一下以前搜房soufun发贴机的发帖群发日志!!呵呵..

    秀一下以前搜房soufun论坛发贴机的发帖群发日志!!呵呵.. QQ 1163551688 "2009-11-28 18:00:06 562","qwerty00789& ...

  5. mantelhean.test r语言_请教如何将mantel test报告性的结果转化为表格。

    用R同时做了好几个mantel test,输出的结果如下: 结果一: Mantel statistic based on Pearson's product-moment correlation Ca ...

  6. 在线作图丨做一张叠加mantel test的相关性热图

    下边这张图摘自2015年的Science(暂且叫他Mantel test和相关性热图的组合图吧),这张图在各大论坛都有R语言的教程,今天小编教大家如何不使用R语言,分分钟在线做出这样的高水平图片.参考 ...

  7. 价值1143元的《R语言统计分析微生物组数据(Statistical Analysis of Microbiome Data with R)》系列图书

    文章目录 <R语言统计分析微生物组数据> 本书简介 作者简介 章节简介 猜你喜欢 写在后面 <R语言统计分析微生物组数据> Statistical Analysis of Mi ...

  8. R语言系统自带及附属包开元可用数据集汇总

    R语言系统自带及附属包开元可用数据集汇总 目录 R语言系统自带及附属包开元可用数据集汇总 #R自带数据集 #R的各种包自带数据集 #R自带数据集 向量 euro #欧元汇率,长度为11,每个元素都有命 ...

  9. 《R语言实战》第7章

    # 第七章 基本统计分析 # 本章内容 # 描述性统计分析 # 频数表和列联表 # 相关系数和协方差 # t检验 # 非参数统计# 7.1 描述性统计分析 # 本节中,我们将关注分析连续型变量的中心趋 ...

最新文章

  1. Cell子刊:特异靶向病原菌致病力的植物天然产物的作用机制
  2. android手机界面管理系统的设计与实现(硕士学位论文).pdf,基于Android系统的手机文件管理器的设计与实现...
  3. linux 解压war到root_部署War包到Tomcat根目录位置(Ubuntu/CentOS)
  4. 图像对象paip.Image对象出现“对象当前正在其他地方使用或者GDI+中发生一般性错误的解决...
  5. 404页面 3秒后跳到首页 实现
  6. python数据库实例_Python操作MySQL数据库9个实用实例
  7. java怎么判断一个char是汉字_JAVA中判断char是否是中文的几种方法
  8. 常态化防疫加码!防疫健康提示宣传海报设计模板,请收好psd分层格式!
  9. javascript第三节
  10. MATLAB学习八(二):标准差std
  11. ElasticJob‐Lite:扩展作业类型
  12. 背诵考研英语单词计划总览
  13. php调用nexmo发送短信,在 Laravel 中 “规范” 的开发短信验证码发送功能
  14. 上班族用哪个邮箱好用,如何正确使用邮件工作?...
  15. 4.根据提示,完成下面的程序。#include<stdio.h>typedef struct date {int year;int month;int day;} Date;void
  16. Java工厂方法---Factory Method
  17. 时间序列分析的基本思路与步骤
  18. 课时23:递归:这帮小兔崽子
  19. 讲真,java学习是有些困难,但迎难而上正是男儿本色(附学习资料) !
  20. UML类图-软件需求分析与设计(很详细,很详细,很详细)

热门文章

  1. Unity精华☀️ 面试官眼中的「设计模式」
  2. 2022-3-1 effective C++中关于 typename 的解释,解决了我好久的困惑,无知还是看书少的缘故
  3. 安卓虚拟键盘_逍遥安卓模拟器工作室版下载-逍遥安卓模拟器工作室版PC版下载v7.2.8...
  4. 客观的评价西北工业大学
  5. 内容运营专家认证考试
  6. 《Web前端开发技术(HTML+CSS+JavaScript)》题库附答案
  7. ATmega16开发板仿真教程——前言
  8. 微信绑定了信用卡,为什么吃饭用微信支付只能用零钱而不能用信用卡里面的钱?
  9. java webapprootkey_web.xml中的webAppRootKey
  10. OpenWrt wifi设置