¿Determinar si los árboles dentro de las brechas de bosque se agrupan usando R?

14

El conjunto de datos adjunto muestra aproximadamente 6000 brotes en aproximadamente 50 brechas de bosques de tamaño variable. Me interesa saber cómo están creciendo estos retoños dentro de sus respectivas lagunas (es decir, agrupados, aleatorios, dispersos). Como saben, un enfoque tradicional sería ejecutar la I de Moran global. Sin embargo, las agregaciones de árboles dentro de las agregaciones de brechas parecen ser un uso inapropiado de la I de Moran. Corrí algunas estadísticas de prueba con la I de Moran utilizando una distancia de umbral de 50 metros. que produjo resultados sin sentido (es decir, p-valor = 0.0000000 ...). La interacción entre las agregaciones de brechas es probable que produzca estos resultados. He considerado crear un script para recorrer las brechas de dosel individuales y determinar el agrupamiento dentro de cada brecha, aunque mostrar estos resultados al público sería problemático.

¿Cuál es el mejor enfoque para cuantificar la agrupación en clústeres dentro de los clústeres?

    
pregunta Aaron 28.11.2012 - 04:41

3 respuestas

7

No tiene un campo aleatorio uniforme, por lo que intentar analizar todos sus datos a la vez violará las suposiciones de cualquier estadística que elija para resolver el problema. No está claro de su publicación si sus datos son un proceso de puntos marcados (es decir, el diámetro o la altura asociados con cada ubicación del árbol). Si estos datos no representan un proceso de puntos marcados, no tengo idea de cómo aplicó un Moran's-I. Si los datos solo representan ubicaciones espaciales, recomendaría usar un Ripley's-K con la transformación Besag-L para estandarizar la expectativa nula en cero. Esto permite una evaluación de agrupamiento multiescala. Si sus datos tienen un valor asociado, entonces su mejor opción es un Moran's-I local (LISA). Realmente lo miraría con ambas estadísticas. Independientemente de su elección, aún tendrá que recorrer cada sitio individual para producir resultados válidos. Aquí hay un ejemplo de código R para una simulación de Monte Carlo de Ripley's-K / Besag's-L usando el conjunto de datos de pimpollos de Redwood incorporado. Debería ser bastante sencillo modificar esto para recorrer sus sitios y generar un gráfico para cada uno.

# ADD REQUIRED PACKAGES
require(sp)
require(spatstat)
options(scipen=5)

# USE REDWOOD SAPLING DATASET
spp <- SpatialPoints(coords(redwood))

###################################################
###### START BESAG'S-L MONTE CARLO  ANALYSUS ######
###################################################
# CREATE CONVEX HULL FOR ANALYSIS WINDOW                       
W=ripras(coordinates(spp)) 

# COERCE TO spatstat ppp OBJECT
spp.ppp=as.ppp(coordinates(spp), W)                     
  plot(spp.ppp) 

# ESTIMATE BANDWIDTH
area <- area.owin(W)
lambda <- spp.ppp$n/area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
bw <- seq(0, rmax, by=rmax/10)  

# CALCULATE PERMUTED CROSS-K AND PLOT RESULTS       
Lenv <- envelope(spp.ppp, fun="Kest", r=bw, i="1", j="2", nsim=99, nrank=5, 
                 transform=expression(sqrt(./pi)-bw), global=TRUE)            
plot(Lenv, main="Besag's-L", xlab="Distance", ylab="L(r)", legend=F, col=c("white","black","grey","grey"), 
    lty=c(1,2,2,2), lwd=c(2,1,1,1) )
     polygon( c(Lenv$r, rev(Lenv$r)), c(Lenv$lo, rev(Lenv$hi)), col="lightgrey", border="grey")
       lines(supsmu(bw, Lenv$obs), lwd=2)
       lines(bw, Lenv$theo, lwd=1, lty=2)
         legend("topleft", c(expression(hat(L)(r)), "Simulation Envelope", "theo"), pch=c(-32,22),
                col=c("black","grey"), lty=c(1,0,2), lwd=c(2,0,2), pt.bg=c("white","grey"))
    
respondido por el Jeffrey Evans 28.11.2012 - 18:35
4

Lo que tienes es un patrón de puntos con una ventana que es una cantidad de pequeñas regiones poligonales desconectadas.

Debería poder usar cualquiera de las pruebas en package:spatstat para CSR siempre que lo alimente con una ventana correcta. Puede ser una serie de conjuntos de (x, y) pares que definen cada compensación o una matriz binaria de (0,1) valores sobre el espacio.

Primero, definamos algo que se parezca un poco a tus datos:

set.seed(310366)
nclust <- function(x0, y0, radius, n) {
               return(runifdisc(n, radius, centre=c(x0, y0)))
             }
c = rPoissonCluster(15, 0.04, nclust, radius=0.02, n=5)
plot(c)

y simulemos que nuestros claros son celdas cuadradas que simplemente son:

m = matrix(0,20,20)
m[1+20*cbind(c$x,c$y)]=1
imask = owin(c(0,1),c(0,1),mask = t(m)==1 )
pp1 = ppp(x=c$x,y=c$y,window=imask)
plot(pp1)

Entonces podemos trazar la función K de esos puntos en esa ventana. Esperamos que esto no sea CSR porque los puntos parecen agrupados dentro de las celdas. Tenga en cuenta que tengo que cambiar el rango de distancias para que sea pequeño, del orden del tamaño de la celda, de lo contrario, la función K se evalúa en distancias con el tamaño del patrón completo.

plot(Kest(pp1,r=seq(0,.02,len=20)))

Si generamos algunos puntos de CSR en las mismas celdas, podemos comparar los gráficos de la función K. Este debería ser más como CSR:

ppSim = rpoispp(73/(24/400),win=imask)
plot(ppSim)
plot(Kest(ppSim,r=seq(0,.02,len=20)))

Realmente no puedes ver los puntos agrupados en las celdas en el primer patrón, pero si lo trazas solo en una ventana gráfica, es claro. Los puntos en el segundo patrón son uniformes dentro de las celdas (y no existen en la región negra) y la función K es claramente diferente de Kpois(r) , la función K de CSR para los datos agrupados y similar para los datos uniformes.

    
respondido por el Spacedman 28.11.2012 - 17:18
2

Además de la publicación de Andy:

Lo que desea calcular es una medida de homogeneidad espacial (ergo la hipótesis: "¿Están agrupados sus puntos?") como Las funciones L y K de Ripley .

Esta publicación del blog explica cómo hacerlo. R bastante bien. De acuerdo con el código descrito, primero etiquetaría cada grupo en su conjunto de datos y luego calcularía en un bucle para cada grupo el sobre crítico a través de la K de Ripley

    
respondido por el Curlew 28.11.2012 - 17:00

Lea otras preguntas en las etiquetas