Mantel测试

概念

The Mantel test, named after Nathan Mantel, is a statistical test of the correlation between two matrices. The matrices must be of the same rank(2个相同满秩的方阵才可以); in most applications, they are matrices of interrelations between the same vectors of objects. The test was first published by Nathan Mantel, a biostatistician at the National Institutes of Health, in 1967.[1]
Accounts of it can be found in advanced statistics books (e.g., Sokal & Rohlf 1995[2]).

如何在R中执行Mantel测试?

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.0000000

as.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.htm

library(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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容