Uji Mantel digunakan secara luas dalam penelitian biologi untuk menguji korelasi antara distribusi spasial hewan (posisi dalam ruang) dengan, misalnya, keterkaitan genetiknya, tingkat agresi atau beberapa atribut lainnya. Banyak jurnal yang baik menggunakannya ( PNAS, Perilaku Hewan, Ekologi Molekuler ... ).
Saya membuat beberapa pola yang mungkin terjadi di alam, tetapi tes Mantel tampaknya tidak berguna untuk mendeteksi mereka. Di sisi lain, Moran's I memiliki hasil yang lebih baik (lihat nilai-p di bawah setiap plot) .
Mengapa para ilmuwan tidak menggunakan Moran's I sebagai gantinya? Apakah ada alasan tersembunyi yang tidak saya lihat? Dan jika ada beberapa alasan, bagaimana saya bisa tahu (bagaimana hipotesis harus dikonstruksi secara berbeda) untuk secara tepat menggunakan uji Mantel atau Moran? Contoh kehidupan nyata akan sangat membantu.
Bayangkan situasi ini: Ada kebun (17 x 17 pohon) dengan seekor gagak duduk di setiap pohon. Tingkat "kebisingan" untuk setiap gagak tersedia dan Anda ingin tahu apakah distribusi spasial gagak ditentukan oleh kebisingan yang dihasilkannya.
Ada (setidaknya) 5 kemungkinan:
"Burung-burung dari bulu berkumpul bersama." Semakin mirip burung gagak, semakin kecil jarak geografis di antara mereka (satu kelompok) .
"Burung-burung dari bulu berkumpul bersama." Sekali lagi, semakin mirip gagak, semakin kecil jarak geografis di antara mereka, (beberapa kluster) tetapi satu kluster gagak berisik tidak memiliki pengetahuan tentang keberadaan kluster kedua (jika tidak mereka akan bergabung menjadi satu kluster besar).
"Tren monoton."
"Ketertarikan yang berlawanan." Gagak yang serupa tidak dapat saling berdiri.
"Pola acak." Tingkat kebisingan tidak berpengaruh signifikan terhadap distribusi spasial.
Untuk setiap kasus, saya membuat plot poin dan menggunakan tes Mantel untuk menghitung korelasi (tidak mengherankan bahwa hasilnya tidak signifikan, saya tidak akan pernah mencoba menemukan hubungan linier di antara pola-pola poin tersebut).
Contoh data: (dikompresi mungkin)
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))]
Membuat matriks jarak geografis (untuk Moran's I terbalik):
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
Pembuatan plot:
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 dalam contoh-contoh di situs bantuan statistik UCLA, kedua tes digunakan pada data yang sama persis dan hipotesis yang sama persis, yang tidak terlalu membantu (lih., Uji Mantel , Moran's I ).
Tanggapan untuk IM Anda telah menulis:
... itu [Mantel] menguji apakah gagak yang tenang terletak di dekat gagak yang tenang lainnya, sementara gagak yang bising memiliki tetangga yang berisik.
Saya pikir hipotesis seperti itu TIDAK bisa diuji dengan uji Mantel . Pada kedua plot hipotesis tersebut valid. Tetapi jika Anda mengira bahwa satu kelompok gagak yang tidak berisik mungkin tidak memiliki pengetahuan tentang keberadaan kelompok kedua gagak yang tidak berisik - Tes mantel tidak lagi berguna. Pemisahan seperti itu harus sangat mungkin terjadi (terutama ketika Anda melakukan pengumpulan data dalam skala yang lebih besar).