La prueba de Mantel se usa ampliamente en estudios biológicos para examinar la correlación entre la distribución espacial de los animales (posición en el espacio) con, por ejemplo, su relación genética, tasa de agresión o algún otro atributo. Muchas buenas revistas lo están utilizando ( PNAS, Animal Behavior, Molecular Ecology ... ).
He fabricado algunos patrones que pueden ocurrir en la naturaleza, pero la prueba de Mantel parece ser bastante inútil para detectarlos. Por otro lado, Moran's tuve mejores resultados (ver valores p debajo de cada gráfico) .
¿Por qué los científicos no usan el yo de Moran? ¿Hay alguna razón oculta que no veo? Y si hay alguna razón, ¿cómo puedo saber (cómo se deben construir las hipótesis de manera diferente) para usar adecuadamente la prueba I de Mantel o Moran? Un ejemplo de la vida real será útil.
Imagine esta situación: hay un huerto (17 x 17 árboles) con un cuervo sentado en cada árbol. Los niveles de "ruido" para cada cuervo están disponibles y usted desea saber si la distribución espacial de los cuervos está determinada por el ruido que hacen.
Hay (al menos) 5 posibilidades:
"Dios los cría y ellos se juntan." Los cuervos más similares son, menor es la distancia geográfica entre ellos (grupo único) .
"Dios los cría y ellos se juntan." Una vez más, cuanto más parecidos son los cuervos, menor es la distancia geográfica entre ellos (varios grupos), pero un grupo de cuervos ruidosos no tiene conocimiento de la existencia de un segundo grupo (de lo contrario, se fusionarían en un gran grupo).
"Tendencia monotónica".
"Los opuestos se atraen." Cuervos similares no se soportan entre sí.
"Patrón aleatorio." El nivel de ruido no tiene un efecto significativo en la distribución espacial.
Para cada caso, creé una gráfica de puntos y usé la prueba de Mantel para calcular una correlación (no es sorprendente que sus resultados no sean significativos, nunca trataría de encontrar una asociación lineal entre tales patrones de puntos).
Datos de ejemplo: (comprimido como sea posible)
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))]
La creación de la matriz de distancias geográficas (por I de Moran se invierte):
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
creación Terreno:
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 en los ejemplos en el sitio web de Ayuda de Estadísticas de la UCLA, ambas pruebas son usados en los mismos datos exacta y la misma hipótesis exacta, que es no es muy útil (véase, prueba de Mantel , de Moran I ).
Respuesta a la IM Tiene escritura:
... es [Mantel] Comprueba si cuervos tranquilas se encuentra cerca de otros cuervos tranquilas, mientras que los cuervos ruidosos tienen vecinos ruidosos.
Creo que tal hipótesis NO podría ser probada por la prueba de Mantel . En ambas parcelas la hipótesis es válida. Pero si supone que un grupo de cuervos no ruidosos puede no tener conocimiento sobre la existencia de un segundo grupo de cuervos no ruidosos, la prueba de Mantels es nuevamente inútil. Dicha separación debería ser muy probable en la naturaleza (principalmente cuando se realiza la recopilación de datos a mayor escala).