Mantel의 시험 은 생물학적 연구 , 예를 들어, 유전 적 관련성, 침략 속도 또는 다른 특성과 동물의 공간 분포 (공간에서의 위치) 사이의 상관 관계를 조사하기 위해 생물학적 연구에서 널리 사용됩니다 . 많은 좋은 저널들이 그것을 사용하고 있습니다 ( PNAS, Animal Behaviour, Molecular Ecology ... ).
자연에서 발생할 수있는 몇 가지 패턴을 만들었지 만 Mantel의 테스트 는 그 패턴 을 감지하는 데 매우 쓸모없는 것으로 보입니다. 반면에, Moran 's 는 더 나은 결과를 얻었습니다 (각 도표의 p- 값 참조) .
과학자들은 왜 대신 Moran 's I를 사용하지 않습니까? 보이지 않는 숨겨진 이유가 있습니까? 그리고 어떤 이유가 있다면 Mantel 또는 Moran의 I 테스트를 적절하게 사용하기 위해 어떻게 (가설이 다르게 구성되어야 하는지를) 알 수 있습니까? 실제 사례가 도움이 될 것입니다.
이 상황을 상상해보십시오 . 까마귀가 각 나무에 앉아있는 과수원 (17 x 17 나무)이 있습니다. 각 까마귀에 대한 "소음"수준을 사용할 수 있으며 까마귀의 공간 분포가 소음에 의해 결정되는지 알고 싶습니다.
5 가지 가능성이 있습니다 :
"유유상종." 더 유사한 까마귀는 그들 사이의 지리적 거리가 더 작습니다 (단일 군집) .
"유유상종." 다시 말하지만, 비슷한 까마귀가 많을수록 그들 사이의 지리적 거리는 더 적지 만 (여러 개의 클러스터) 시끄러운 까마귀의 한 클러스터는 두 번째 클러스터의 존재에 대해 알지 못합니다 (그렇지 않으면 하나의 큰 클러스터로 통합됨).
"모노 닉 트렌드."
"상대방은 매력적이다." 비슷한 까마귀는 서로 설 수 없습니다.
"임의 패턴" 소음 수준은 공간 분포에 큰 영향을 미치지 않습니다.
각각의 경우에 대해 점의 그림을 만들고 Mantel 테스트를 사용하여 상관 관계를 계산했습니다 (결과가 중요하지 않다는 것은 놀라운 일이 아닙니다. 그런 점의 패턴 사이에서 선형 연관성을 찾지 않으려 고 시도하지는 않습니다).
예시 데이터 : (가능한 압축)
r.gen <- seq(-100,100,5)
r.val <- sample(r.gen, 289, replace=TRUE)
z10 <- rep(0, times=10)
z11 <- rep(0, times=11)
r5 <- c(5,15,25,15,5)
r71 <- c(5,20,40,50,40,20,5)
r72 <- c(15,40,60,75,60,40,15)
r73 <- c(25,50,75,100,75,50,25)
rbPal <- colorRampPalette(c("blue","red"))
my.data <- data.frame(x = rep(1:17, times=17),y = rep(1:17, each=17),
c1=c(rep(0,times=155),r5,z11,r71,z10,r72,z10,r73,z10,r72,z10,r71,
z11,r5,rep(0, times=27)),c2 = c(rep(0,times=19),r5,z11,r71,z10,r72,
z10,r73,z10,r72,z10,r71,z11,r5,rep(0, times=29),r5,z11,r71,z10,r72,
z10,r73,z10,r72,z10,r71,z11,r5,rep(0, times=27)),c3 = c(seq(20,100,5),
seq(15,95,5),seq(10,90,5),seq(5,85,5),seq(0,80,5),seq(-5,75,5),
seq(-10,70,5),seq(-15,65,5),seq(-20,60,5),seq(-25,55,5),seq(-30,50,5),
seq(-35,45,5),seq(-40,40,5),seq(-45,35,5),seq(-50,30,5),seq(-55,25,5),
seq(-60,20,5)),c4 = rep(c(0,100), length=289),c5 = sample(r.gen, 289,
replace=TRUE))
# adding colors
my.data$Col1 <- rbPal(10)[as.numeric(cut(my.data$c1,breaks = 10))]
my.data$Col2 <- rbPal(10)[as.numeric(cut(my.data$c2,breaks = 10))]
my.data$Col3 <- rbPal(10)[as.numeric(cut(my.data$c3,breaks = 10))]
my.data$Col4 <- rbPal(10)[as.numeric(cut(my.data$c4,breaks = 10))]
my.data$Col5 <- rbPal(10)[as.numeric(cut(my.data$c5,breaks = 10))]
지리적 거리의 행렬 만들기 (Moran 's I의 경우 반대) :
point.dists <- dist(cbind(my.data$x, my.data$y))
point.dists.inv <- 1/point.dists
point.dists.inv <- as.matrix(point.dists.inv)
diag(point.dists.inv) <- 0
플롯 생성 :
X11(width=12, height=6)
par(mfrow=c(2,5))
par(mar=c(1,1,1,1))
library(ape)
for (i in 3:7) {
my.res <- mantel.test(as.matrix(dist(my.data[ ,i])), as.matrix(point.dists))
plot(my.data$x,my.data$y,pch=20,col=my.data[ ,c(i+5)], cex=2.5, xlab="",
ylab="", xaxt="n", yaxt="n", ylim=c(-4.5,17))
text(4.5, -2.25, paste("Mantel's test", "\n z.stat =", round(my.res$z.stat,
2), "\n p.value =", round(my.res$p, 3)))
my.res <- Moran.I(my.data[ ,i], point.dists.inv)
text(12.5, -2.25, paste("Moran's I", "\n observed =", round(my.res$observed,
3), "\n expected =",round(my.res$expected,3), "\n std.dev =",
round(my.res$sd,3), "\n p.value =", round(my.res$p.value, 3)))
}
par(mar=c(5,4,4,2)+0.1)
for (i in 3:7) {
plot(dist(my.data[ ,i]), point.dists,pch = 20, xlab="geographical distance",
ylab="behavioural distance")
}
UCLA의 통계 도움말 웹 사이트의 예에서 PS는 두 테스트 모두 정확히 동일한 데이터와 정확히 동일한 가설에 사용되며 그다지 도움 이 되지 않습니다 (참조 : Mantel test , Moran 's I ).
IM에 응답 당신은 쓰기가 :
... [Mantel]은 조용한 까마귀가 다른 조용한 까마귀 근처에 위치하고 있는지, 시끄러운 까마귀에는 시끄러운 이웃이 있는지 테스트합니다.
그런 가설은 Mantel test로는 테스트 할 수 없다고 생각합니다 . 두 음모 모두 가설이 유효합니다. 그러나 시끄러운 까마귀의 한 클러스터가 시끄러운 까마귀의 두 번째 클러스터의 존재에 대한 지식을 가지고 있지 않다고 가정하면 Mantels 테스트는 다시 쓸모가 없습니다. 이러한 분리는 본질적으로 매우 가능해야합니다 (주로 대규모로 데이터 수집을 수행하는 경우).