Thử nghiệm của Mantel được sử dụng rộng rãi trong các nghiên cứu sinh học để kiểm tra mối tương quan giữa sự phân bố không gian của động vật (vị trí trong không gian), ví dụ, liên quan đến di truyền, tốc độ xâm lược của chúng hoặc một số thuộc tính khác. Rất nhiều tạp chí hay đang sử dụng nó ( PNAS, Hành vi động vật, Sinh thái học phân tử ... ).
Tôi đã chế tạo một số mẫu có thể xảy ra trong tự nhiên, nhưng thử nghiệm của Mantel dường như khá vô dụng để phát hiện ra chúng. Mặt khác, Moran's I có kết quả tốt hơn (xem giá trị p dưới mỗi ô) .
Tại sao các nhà khoa học không sử dụng I của Moran? Có một số lý do ẩn tôi không nhìn thấy? Và nếu có một số lý do, làm thế nào tôi có thể biết (làm thế nào các giả thuyết phải được xây dựng khác nhau) để sử dụng một cách thích hợp bài kiểm tra của Mantel hoặc Moran? Một ví dụ thực tế sẽ hữu ích.
Hãy tưởng tượng tình huống này: Có một vườn cây (17 x 17 cây) với một con quạ đang ngồi trên mỗi cây. Mức độ "tiếng ồn" cho mỗi con quạ có sẵn và bạn muốn biết liệu sự phân bố không gian của quạ được xác định bởi tiếng ồn mà chúng tạo ra.
Có (ít nhất) 5 khả năng:
"Chim lông đổ xô lại với nhau." Những con quạ càng giống nhau, khoảng cách địa lý giữa chúng càng nhỏ (cụm đơn) .
"Chim lông đổ xô lại với nhau." Một lần nữa, những con quạ càng giống nhau thì khoảng cách địa lý giữa chúng càng nhỏ, (nhiều cụm) nhưng một cụm quạ ồn ào không có kiến thức về sự tồn tại của cụm thứ hai (nếu không chúng sẽ hợp nhất thành một cụm lớn).
"Xu hướng đơn điệu."
"Sự thu hút đối diện." Những con quạ tương tự không thể đứng lẫn nhau.
"Mẫu ngẫu nhiên." Mức độ tiếng ồn không có ảnh hưởng đáng kể đến phân bố không gian.
Đối với mỗi trường hợp, tôi đã tạo ra một biểu đồ các điểm và sử dụng phép thử Mantel để tính toán một mối tương quan (không có gì ngạc nhiên khi kết quả của nó là không đáng kể, tôi sẽ không bao giờ cố gắng tìm mối liên hệ tuyến tính giữa các mẫu điểm như vậy).
Dữ liệu ví dụ: (nén càng tốt)
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))]
Tạo ma trận khoảng cách địa lý (đối với I của Moran là đảo ngược):
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
Tạo cốt truyện:
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")
}
PS trong các ví dụ trên trang web trợ giúp thống kê của UCLA, cả hai bài kiểm tra đều được sử dụng trên cùng một dữ liệu và cùng một giả thuyết, điều này không hữu ích lắm (xem, bài kiểm tra của Mantel , I của Moran ).
Trả lời IM Bạn đã viết:
... nó [Thần chú] kiểm tra xem những con quạ yên tĩnh có nằm gần những con quạ yên tĩnh khác hay không, trong khi những con quạ ồn ào có hàng xóm ồn ào.
Tôi nghĩ rằng giả thuyết đó KHÔNG thể được kiểm tra bằng phép thử Mantel . Trên cả hai lô giả thuyết hợp lệ. Nhưng nếu bạn cho rằng một cụm những con quạ không ồn ào có thể không có kiến thức về sự tồn tại của cụm thứ hai của những con quạ không ồn ào - bài kiểm tra Thần chú lại vô dụng. Việc phân tách như vậy sẽ rất có thể xảy ra trong tự nhiên (chủ yếu là khi bạn thực hiện thu thập dữ liệu ở quy mô lớn hơn).