Universidad del Valle

Facultad de Ingeniería
Escuela de Ingeniería Civil y Geomática
Especialización en Geomática


Curso: Tratamiento de Datos Espaciales
Taller: Patrones Espaciales Puntuales
Docente: Miguel Andrés Idrobo Sánchez
Estudiante: Andrés Julián Escobar Cardona
Grupo: G-01
Fecha: 30 de octubre de 2025


1. Contexto del taller

El presente informe realiza un análisis espacial completo de la distribución de Mauritia flexuosa (Palma de Moriche) dentro de un morichal ubicado en el departamento de Vichada; en este sentido, se tiene un conjunto de 1829 puntos correspondientes a palma ‘Alt_palmas.shp’, dentro del dominio del ecosistema ‘Zona_morichal.shp’. El objetivo es determinar si la distribución observada corresponde a un patrón agrupado, aleatorio (CSR — Complete Spatial Randomness) o regular.

2. Hipótesis

La distribución espacial de Mauritia flexuosa en los morichales sigue un patrón agrupado debido a la reproducción clonal, la dispersión de semillas controlada por el agua y la preferencia por microhábitats húmedos y anegados.

2.1. Soporte bibliográfico

Narváez-Ortiz et al. (2021) encontraron una distribución agrupada de M. flexuosa en morichales restaurados en Colombia, lo cual refuerza la hipótesis de agregación en condiciones de regeneración activa.

Narváez-Ortiz, I., Ortíz Paz, R. A., & López Patarroyo, E. (2021). Regeneración pasiva de morichales (Mauritia flexuosa L.f.) en los llanos orientales de Colombia. Ecosistemas, 30(3), 2230. https://doi.org/10.7818/ECOS.2230

Acevedo y Zamora (2016) demostraron que la dispersión de semillas de M. flexuosa está fuertemente mediada por mamíferos en la Amazonía colombiana, lo cual favorece la acumulación próxima a la madre planta y sugiere agrupamientos espaciales.

Acevedo Quintero, J. F., & Zamora-Abrego, J. G. (2016). Role of mammals on seed dispersal and predation processes of Mauritia flexuosa (Arecaceae) in the Colombian Amazon. Revista de Biología Tropical, 64(1), 5–15. https://doi.org/10.15517/rbt.v64i1.18157

Quinteros-Gómez et al. (2021) reportaron que M. flexuosa domina “aguajales” en el piedemonte andino-amazónico peruano, señalando la presencia de altas densidades de individuos en estos microhábitats específicos.

Quinteros-Gómez, Y. M., Monroy-Vilchis, O., Zarco-González, M. M., Endara-Agramont, Á., & Pacheco, X. P. (2021). Floristic composition, structure and species conservation status of Mauritia flexuosa palm swamps in Andean–Amazonian piedmont in the Department of San Martín, Peru. Revista Mexicana de Biodiversidad, 92, e923186. https://doi.org/10.22201/ib.20078706e.2021.92.3186

3. Procesamiento

3.1. Importar librerías

Esta sección carga las librerías necesarias para el análisis espacial. De este modo, sf gestiona datos vectoriales; spatstat.geom y spatstat.explore permiten crear y analizar patrones puntuales (ppp); ggplot2 se usa para la visualización y spdep complementa con funciones de dependencia espacial.

library(sf)                # Manejo shapefiles
library(spatstat.geom)     # Objetos ppp y owin
library(spatstat.explore)  # Análisis exploratorio: Gest, Fest, fryplot
library(ggplot2)           # Visualización opcional
library(spdep)             # Dependencia espacial (por compatibilidad)

3.2. Cargar los archivos shp correspondientes al ecosistema y las palmas

En este paso se importan los archivos espaciales en formato Shapefile (.shp) que contienen la información geográfica del polígono del morichal (área de estudio) y de los puntos que representan las palmas de moriche registradas en campo. Estos datos corresponden la base para generar el patrón puntual (point pattern) a analizar.

morichal <- st_read("Zona_morichal.shp")  # Polígono del área de estudio
## Reading layer `Zona_morichal' from data source 
##   `C:\Users\servi\OneDrive\3. Actividades ESP-GEOMATICA\QUIZ 5 - PP TDE\Capas_Morichales\Zona_morichal.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 1 feature and 3 fields
## Geometry type: POLYGON
## Dimension:     XYZ
## Bounding box:  xmin: 461001.6 ymin: 482576.4 xmax: 461242.5 ymax: 483210.7
## z_range:       zmin: 92.54952 zmax: 95.89343
## Projected CRS: WGS 84 / UTM zone 19N
palmas <- st_read("Alt_palmas.shp")       # Puntos de las palmas registradas
## Reading layer `Alt_palmas' from data source 
##   `C:\Users\servi\OneDrive\3. Actividades ESP-GEOMATICA\QUIZ 5 - PP TDE\Capas_Morichales\Alt_palmas.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 1829 features and 4 fields
## Geometry type: POINT
## Dimension:     XYZ
## Bounding box:  xmin: 461024.4 ymin: 482606.2 xmax: 461224.9 ymax: 483188
## z_range:       zmin: 93.3844 zmax: 108.723
## Projected CRS: WGS 84 / UTM zone 19N

3.3. Limpieza y coherencia espacial

En esta etapa se eliminan las dimensiones innecesarias (Z/M), se validan las geometrías y se unifican los polígonos del morichal. Posteriormente, se verifica que ambos conjuntos de datos (palmas y morichal) compartan el mismo sistema de referencia espacial (CRS), garantizando coherencia topológica para el análisis posterior.

morichal <- st_zm(morichal, drop = TRUE, what = "ZM")
palmas <- st_zm(palmas, drop = TRUE, what = "ZM")

morichal <- st_make_valid(morichal)
morichal_union <- st_union(morichal)

# Asegurar mismo sistema de coordenadas
if (st_crs(palmas) != st_crs(morichal_union)) {
  palmas <- st_transform(palmas, st_crs(morichal_union))
}

3.4. Filtrar puntos dentro del morichal

Se seleccionan únicamente las palmas que se encuentran dentro del polígono del morichal, asegurando que el análisis se limite al área de estudio real. Esta operación espacial utiliza la función st_filter() con el predicado st_within, que mantiene solo los puntos contenidos en la geometría del ecosistema, en donde se evidencian 1829 palmas dentro del morichal.

# Filtrar palmas que están dentro del polígono del morichal
palmas_dentro <- st_filter(palmas, morichal_union, .predicate = st_within)

# Mostrar número de registros válidos
cat("Número de palmas dentro del morichal:", nrow(palmas_dentro), "\n")
## Número de palmas dentro del morichal: 1829

3.5. Crear la ventana espacial y el patrón de puntos

Se construye la ventana espacial a partir del polígono del morichal y se genera el patrón de puntos (ppp) con las coordenadas de las palmas que quedaron dentro del área de estudio. También se eliminan duplicados si existen.

# Crear ventana espacial a partir del polígono del morichal
morichal_owin <- as.owin(morichal_union)

# Obtener coordenadas de las palmas filtradas
coords <- st_coordinates(palmas_dentro)

# Crear patrón de puntos
palmas_ppp <- ppp(x = coords[,1],
                  y = coords[,2],
                  window = morichal_owin)

# Eliminar duplicados si existen
palmas_ppp <- unique(palmas_ppp)

3.6. Visualización inicial

Se realiza una visualización preliminar de la distribución de las palmas dentro del morichal. Se muestra la ventana espacial del morichal y se superponen los puntos correspondientes a cada palma.

# Convertir ppp a sf para ggplot
palmas_sf <- st_as_sf(data.frame(st_coordinates(palmas_dentro)), coords = c("X", "Y"), crs = st_crs(morichal_union))

# Plot con ggplot
ggplot() +
  geom_sf(data = morichal_union, fill = "lightgreen", color = "darkgreen", alpha = 0.4) +
  geom_sf(data = palmas_sf, color = "darkred", size = 1, alpha = 0.7) +
  coord_sf() +
  labs(x = "Longitud", y = "Latitud") +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)  # texto vertical en eje X
  )

3.7. Análisis por cuadrantes (VMR y χ² MULTIESCALA)

Este análisis examina la distribución espacial de las palmas mediante un enfoque de cuadrantes. Se calcula el VMR para evaluar la dispersión relativa y se realiza la prueba χ² multiescala para detectar agregaciones. Los gráficos muestran tendencias según la resolución, facilitando la interpretación visual de patrones espaciales y significancia estadística.

library(dplyr)
library(knitr)

# ------------------------------
# Configuración inicial
# ------------------------------

# Número total de palmas
n_total <- npoints(palmas_ppp)

# Rango de resoluciones (cuadrantes por eje)
k_min <- 2
k_max <- 10
k_values <- seq(k_min, k_max, by = 1)

# Crear data.frame vacío para resultados
resultados_cuadrantes <- data.frame(
  k = integer(),
  nx = integer(),
  ny = integer(),
  celdas = integer(),
  media_conteo = numeric(),
  varianza_conteo = numeric(),
  VMR = numeric(),
  esperado_por_celda = numeric(),
  chi2_stat = numeric(),
  p_value = numeric(),
  metodo = character(),
  stringsAsFactors = FALSE
)

for (k in k_values) {
  nx <- ny <- k
  # cat("Analizando cuadrícula de", nx, "x", ny, "...\n")
  
  # Conteo de eventos por cuadrante
  cuadrantes <- quadratcount(palmas_ppp, nx = nx, ny = ny)
  recuentos <- as.vector(cuadrantes)
  
  # Estadísticos básicos
  media_conteo <- mean(recuentos)
  varianza_conteo <- var(recuentos)
  VMR <- ifelse(media_conteo == 0, NA, varianza_conteo / media_conteo)
  
  # Conteo esperado por cuadrante
  num_celdas <- length(recuentos)
  esperado <- n_total / num_celdas
  
  # Prueba χ²
  if (esperado < 5) {
    prueba_chi <- quadrat.test(palmas_ppp, nx = nx, ny = ny, simulate = TRUE, nsim = 999)
    metodo <- "MonteCarlo"
  } else {
    prueba_chi <- quadrat.test(palmas_ppp, nx = nx, ny = ny, simulate = FALSE)
    metodo <- "Asintótica"
  }
  
  # Extraer resultados
  chi2_stat <- as.numeric(prueba_chi$statistic)
  p_value <- as.numeric(prueba_chi$p.value)
  
  # Guardar resultados
  resultados_cuadrantes <- rbind(
    resultados_cuadrantes,
    data.frame(
      k = k,
      nx = nx,
      ny = ny,
      celdas = nx * ny,
      media_conteo = media_conteo,
      varianza_conteo = varianza_conteo,
      VMR = VMR,
      esperado_por_celda = esperado,
      chi2_stat = chi2_stat,
      p_value = p_value,
      metodo = metodo,
      stringsAsFactors = FALSE
    )
  )
  
  # ------------------------------
  # Graficar mapa de puntos con cuadrícula y conteos
  # ------------------------------
  # plot(palmas_ppp, main = paste("k =", k, "(", nx, "x", ny, ")"))
  # plot(cuadrantes, add = TRUE, col = "blue", cex = 1.2)
}

# ------------------------------
# Tabla de resultados tabulada y legible
# ------------------------------
resultados_limpios <- resultados_cuadrantes %>%
  rename(
    Cuad = k,
    Celdas = celdas,
    Media = media_conteo,
    Var = varianza_conteo,
    VMR = VMR,
    Esperado = esperado_por_celda,
    Chi2 = chi2_stat,
    Pvalor = p_value,
    Metodo = metodo
  ) %>%
  mutate(
    Media = round(Media, 2),
    Var = round(Var, 2),
    VMR = round(VMR, 2),
    Esperado = round(Esperado, 2),
    Chi2 = round(Chi2, 2),
    Pvalor = format(Pvalor, scientific = TRUE, digits = 3)  # ← notación científica
  )

kable(resultados_limpios, caption = "Resultados del Análisis por Cuadrantes (VMR y χ² Multiescala)")
Resultados del Análisis por Cuadrantes (VMR y χ² Multiescala)
Cuad nx ny Celdas Media Var VMR Esperado Chi2 Pvalor Metodo
2 2 2 4 457.25 86834.25 189.91 457.25 68.28 2.00e-14 Asintótica
3 3 3 9 203.22 26393.94 129.88 203.22 159.72 3.65e-30 Asintótica
4 4 4 16 140.69 13498.73 95.95 140.69 308.32 1.68e-58 Asintótica
5 5 5 25 87.10 6499.99 74.63 87.10 433.34 4.83e-79 Asintótica
6 6 6 36 67.74 3364.05 49.66 67.74 466.55 5.60e-82 Asintótica
7 7 7 49 52.26 2146.84 41.08 52.26 556.24 2.12e-95 Asintótica
8 8 8 64 40.64 1501.05 36.93 40.64 649.54 2.09e-108 Asintótica
9 9 9 81 32.09 1117.08 34.81 32.09 817.20 2.21e-135 Asintótica
10 10 10 100 26.90 757.32 28.16 26.90 877.96 2.45e-141 Asintótica
# Crear tabla adicional de Chi-cuadrado
tabla_chi2 <- resultados_cuadrantes %>%
  mutate(
    GL = celdas - 1,  # grados de libertad
    Chi2_critico = qchisq(0.95, df = GL),  # valor crítico al 95%
    Zona = ifelse(chi2_stat > Chi2_critico, "Rechazo H0", "Aceptación H0")
  ) %>%
  rename(
    Cuad = k,
    Celdas = celdas,
    Chi2 = chi2_stat
  ) %>%
  select(Cuad, Celdas, GL, Chi2_critico, Chi2, Zona)

# Mostrar tabla limpia
kable(tabla_chi2, caption = "Chi-cuadrado observado vs crítico")
Chi-cuadrado observado vs crítico
Cuad Celdas GL Chi2_critico Chi2 Zona
2 4 3 7.814728 68.27695 Rechazo H0
3 9 8 15.507313 159.72387 Rechazo H0
4 16 15 24.995790 308.32166 Rechazo H0
5 25 24 36.415028 433.33503 Rechazo H0
6 36 35 49.801850 466.54850 Rechazo H0
7 49 48 65.170769 556.24228 Rechazo H0
8 64 63 82.528727 649.53559 Rechazo H0
9 81 80 101.879474 817.20442 Rechazo H0
10 100 99 123.225222 877.95879 Rechazo H0
# ------------------------------
# Visualización de tendencias mejorada
# ------------------------------

# Layout vertical: ahora ocupa más espacio vertical
par(mfrow=c(2,1), mar=c(5,5,4,2), oma=c(0,0,2,0), cex.lab=1.3, cex.axis=1.2)

# Gráfico VMR
plot(resultados_cuadrantes$k, resultados_cuadrantes$VMR,
     type="b", pch=19, col="#1f77b4", lwd=2, cex=1.2,
     xlab="Número de cuadrantes por eje (k)",
     ylab="VMR (Var/Media)",
     main="Tendencia del VMR según resolución",
     font.main=2,
     ylim=c(0, max(resultados_cuadrantes$VMR)*1.15))
abline(h=1, lty=2, col="gray40", lwd=2)
grid(col="gray90", lty="dotted")
box(lwd=1.5)

# Gráfico p-valor
p_max <- max(resultados_cuadrantes$p_value)
ylim_p <- c(0, max(0.0000000000000000000000000005, p_max * 1.5))  # dejar 50% más arriba

plot(resultados_cuadrantes$k, resultados_cuadrantes$p_value,
     type="b", pch=19, col="#ff7f0e", lwd=2, cex=1.2,
     xlab="Número de cuadrantes por eje (k)",
     ylab="p-valor",
     main="Tendencia del p-valor según resolución",
     font.main=2,
     ylim=ylim_p)
#abline(h=0.05, lty=2, col="red", lwd=2)
grid(col="gray90", lty="dotted")
box(lwd=1.5)

mtext("Análisis de VMR y p-valor según resolución de cuadrantes", outer=TRUE, cex=1.4, font=2)

Análisis VMR

El resultado del cálculo del VMR muestra que, incluso al cambiar la cantidad de celdas, los valores de este se mantienen muy por encima de 1. Con la menor cantidad de celdas evaluadas (Q=4) se obtuvo un VMR = 189.91, y con la mayor cantidad de celdas evaluada (Q=100) se obtuvo un VMR = 28.16. Esto indica que la varianza entre los cuadrantes es mucho mayor que la media, evidenciando que los eventos no se distribuyen de manera aleatoria, sino que tienden a concentrarse en zonas específicas mientras otras permanecen casi vacías.

De forma general, se puede apreciar que a medida que la cuadrícula se hace más pequeña, el VMR disminuye ligeramente, pero el patrón agregado persiste, mostrando que la distribución espacial sigue siendo heterogénea. En términos prácticos, esto sugiere que el territorio no es neutro: ciertas áreas favorecen la aparición de eventos y otras prácticamente no los registran, descartando un proceso de Poisson homogéneo y apuntando a la presencia de clústeres o condiciones espaciales variables que concentran los eventos.

Los valores del VMR observados son significativamente mayores que 1, lo que descarta tanto un patrón regular (<1) como un patrón aleatorio o HPP (~1). Esta desviación extrema indica que la varianza entre cuadrantes supera ampliamente la media, confirmando la presencia de agregación espacial. En un patrón regular, se esperaría que los puntos se repelen mutuamente y que la varianza sea menor que la media; en un HPP, la varianza sería aproximadamente igual a la media debido a la independencia de los eventos. En concordancia con lo anterior, la magnitud del VMR observado, evidencia que los eventos no siguen ninguna de estas estructuras, sino que presentan un patrón de agregación significativa, compatible con un proceso de Poisson No Homogéneo (IPP) donde la intensidad varía espacialmente y los eventos tienden a formar clústeres.

Análisis Chi-2

En el análisis espacial de las Palmas de Moriche mediante la prueba de Chi-cuadrado por cuadrantes, la hipótesis nula (H0) establece que los puntos se distribuyen aleatoriamente según un Proceso de Poisson Homogéneo (HPP), mientras que la hipótesis alternativa (H1) indica que existen concentraciones o vacíos significativos que rompen la aleatoriedad. Cada subdivisión del área en \(Q\) cuadrantes genera un estadístico \(\chi^2\) que se compara con su valor crítico correspondiente al 95% de confianza, calculado para \(GL = Q - 1\) grados de libertad. Si \(\chi^2\) calculado cae a la derecha del valor crítico, se encuentra en la zona de rechazo de H0, indicando que las diferencias observadas son demasiado grandes para atribuirlas al azar; si estuviera a la izquierda, permanecería en la zona de aceptación (no rechazo).

Los resultados multiescala muestran que para todas las subdivisiones de 2x2 hasta 10x10 cuadrantes, el \(\chi^2\) observado está muy por encima del valor crítico correspondiente a cada escala, situándose consistentemente en la zona de rechazo de H0. Por ejemplo:

  • Para 2x2 cuadrantes: \(\chi^2 = 68.28\) frente a \(\chi^2_{\text{crítico}} \approx 7.81\)
  • Para 5x5 cuadrantes: \(\chi^2 = 433.34\) frente a \(\chi^2_{\text{crítico}} \approx 36.42\)
  • Para 10x10 cuadrantes: \(\chi^2 = 877.96\) frente a \(\chi^2_{\text{crítico}} \approx 123.23\)

Esta tendencia indica un patrón fuertemente agregado en todas las escalas analizadas, con diferencias entre los conteos observados y los esperados mucho mayores que las que produciría un patrón aleatorio. Los p-valores asociados, con fuerte tendencia a cero, muestran que la probabilidad de que estas desviaciones ocurran por azar es muy baja.

Si bien la prueba de Chi-cuadrado demuestra que el patrón no es aleatorio, los resultados del VMR confirman y complementan esta evidencia, mostrando que la varianza entre cuadrantes es mucho mayor que la media en todas las escalas evaluadas. Esto sugiere que la agregación observada no es solo significativa estadísticamente, sino también consistente a distintas resoluciones espaciales. La ubicación de los cuadrantes con conteos extremos podría relacionarse con la influencia de factores ecológicos, hidrológicos o de dispersión de semillas que favorecen la concentración de palmas en ciertas zonas. Además, la dependencia espacial intrínseca de los puntos puede amplificar esta agregación. En este sentido, el VMR y Chi-2 convergen en que la distribución de Palmas de Moriche es heterogénea y fuertemente agregada, descartando un proceso de Poisson homogéneo y señalando la presencia de agrupaciones a lo largo del territorio.

3.7. Análisis exploratorio

En este bloque se realiza un análisis exploratorio de la distribución espacial de las Palmas de Moriche utilizando diferentes enfoques. Primero, se calculan las distancias entre cada par de puntos y se visualizan mediante un histograma, lo que permite identificar patrones de dispersión y concentraciones de individuos en el espacio.

# ------------------------------------------------------------
# Distancias entre cada par de puntos (Pairwise Distances)
# ------------------------------------------------------------

# Calcular las distancias entre cada par de palmas
pairwise_distances <- pairdist(palmas_ppp)

# Eliminar la diagonal de la matriz (distancia de cada punto consigo mismo es 0)
pairwise_distances <- pairwise_distances[pairwise_distances > 0]

# Crear el histograma de las distancias de pares
hist(pairwise_distances, 
     breaks = 50,                   # Número de bins para la resolución del histograma
     freq = FALSE,                  # Mostrar densidades en lugar de frecuencias
     col = "lightgreen", 
     main = "Histograma de Distancias entre Pares de Palmas de Moriche",
     xlab = "Distancia (metros)", 
     ylab = "Densidad")

Análisis HISTOGRAMA DE DISTANCIA ENTRE PARES

El Histograma de Distancias entre Pares de Palmas de Moriche indica un patrón espacial agrupado, el cual está fundamentado en la característica de la distribución que presenta un marcado sesgo a la izquierda, donde la máxima densidad de pares se localiza consistentemente en el rango de distancias más cortas (aproximadamente entre 50 y 75 metros). La concentración de la función de densidad de probabilidad en el extremo inferior del eje X (short-end) es la evidencia estadística de una alta frecuencia de pares de puntos en proximidad, lo que se traduce en la existencia de agregación espacial. La distribución también muestra una alta asimetría y una cola extendida hacia distancias mayores (hasta 600 metros [por SRC UTM]), representando la separación entre los grupos o los puntos más distantes, con una frecuencia decreciente.

Desde una perspectiva del análisis de procesos puntuales, esta morfología es indicativa de un fenómeno de Homogeneidad Negativa o Autocorrelación Espacial Positiva. El exceso de pares con distancias mínimas, mostrado por el pico modal en el inicio de la distribución, sugiere la existencia de un mecanismo subyacente de atracción o agregación de puntos. Si el patrón respondiera a una Aleatoriedad Espacial Completa (CSR), la distribución de distancias por pares teórica presentaría una densidad mucho menor en ese tramo inicial, ya que la probabilidad de que dos puntos estén extremadamente cerca es baja. Por lo tanto, el histograma empírico confirma que la proximidad de un individuo incrementa la probabilidad de encontrar otro individuo, lo cual es la definición operacional de un patrón agrupado.

Ahora bien, el patrón observado descarta la clasificación de Aleatorio (Independent) y Regular. Un patrón aleatorio típicamente resulta en una distribución sesgada a la derecha, donde el valor modal se desplaza hacia distancias medias a largas, indicando que la mayoría de los pares de puntos están separados por la distancia media del área de estudio. Por su parte, un patrón regular se caracteriza por una distribución unimodal y simétrica, con una varianza reducida y un pico centrado en una distancia característica, lo que refleja una uniformidad en la separación de los puntos (inhibición). Dado que el histograma de las palmas presenta una concentración de densidad máxima en las distancias mínimas, se refuta tanto la uniformidad de la regularidad como la distribución centrada de la aleatoriedad, confirmando la naturaleza agregada de la distribución espacial.

Luego, se calcula la distancia al vecino más cercano (Nearest Neighbor Distance, NND) para cada palma y se grafica, proporcionando información sobre la proximidad local de los individuos y posibles interacciones espaciales.

# ------------------------------------------------------------
# Distancias al vecino más cercano (Nearest Neighbor Distance)
# ------------------------------------------------------------

# Calcular las distancias al vecino más cercano
nndistances <- nndist(palmas_ppp)

# Crear un gráfico de las distancias al vecino más cercano
plot(nndistances, 
     main = "Distancias al Vecino Más Cercano (NN) para Palmas de Moriche", 
     xlab = "Índice del punto", 
     ylab = "Distancia al vecino más cercano (unidades)", 
     pch = 16, 
     cex = 0.8, 
     col = "darkgreen")

Análisis DIAGRAMA NND

El gráfico NND para las Palmas de Moriche evidencia de manera clara un patrón espacial agrupado (clustered). La mayor parte de las observaciones se concentra en el tramo inferior del eje Y, particularmente entre 0 y 5 metros, indicando distancias muy pequeñas entre individuos. Este comportamiento muestra una tendencia sifnificativa a la proximidad espacial, constituyendo la señal geométrica clásica de un proceso de agregación. La acumulación de valores cercanos a cero domina visualmente la distribución y representa la característica principal del patrón espacial evaluado.

Desde la perspectiva del análisis de procesos puntuales, esta configuración corresponde a una autocorrelación espacial positiva, también descrita como agrupamiento no aleatorio. La elevada frecuencia de distancias mínimas sugiere la existencia de mecanismos ecológicos que favorecen la co-ocurrencia de individuos en proximidad inmediata. Este comportamiento es incompatible con un patrón de Aleatoriedad Espacial Completa (CSR), donde la probabilidad teórica de encontrar distancias tan reducidas sería considerablemente menor y la distribución tendría mayor dispersión. En cambio, la evidencia empírica indica que la presencia de una palma incrementa la probabilidad de encontrar otra en sus cercanías, lo cual constituye el criterio operativo para identificar un patrón de agregación espacial.

Ahora bien, el patrón observado descarta la clasificación de Aleatorio (Independent) y Regular. Un patrón aleatorio típicamente resulta en una distribución sesgada a la derecha, donde el valor modal se desplaza hacia distancias medias a largas, indicando que la mayoría de los pares de puntos están separados por la distancia media del área de estudio. Por su parte, un patrón regular se caracteriza por una distribución unimodal y simétrica, con una varianza reducida y un pico centrado en una distancia característica, lo que refleja una uniformidad en la separación de los puntos (inhibición). Dado que el histograma de las palmas presenta una concentración de densidad máxima en las distancias mínimas, se refuta tanto la uniformidad de la regularidad como la distribución centrada de la aleatoriedad, confirmando la naturaleza agregada de la distribución espacial.

Finalmente, se genera un Fryplot a partir de una muestra de 300 puntos, que consiste en graficar los vectores de desplazamiento entre todos los pares de puntos. Este método permite visualizar patrones de repetición y simetría en la distribución espacial, ayudando a identificar estructuras agregadas o regulares dentro del conjunto de datos.

# ------------------------------------------------------------
# Fryplot (Método manual si la función original falla)
# ------------------------------------------------------------

# Seleccionar una muestra de 300 puntos para claridad
set.seed(123)
sub_coords <- st_coordinates(palmas_dentro[sample(1:nrow(palmas_dentro), 300), ])

# Calcular todos los vectores de desplazamiento entre pares de puntos
delta_x <- outer(sub_coords[,1], sub_coords[,1], "-")
delta_y <- outer(sub_coords[,2], sub_coords[,2], "-")

# Quitar la diagonal (pares consigo mismos)
delta_x <- delta_x[lower.tri(delta_x)]
delta_y <- delta_y[lower.tri(delta_y)]

# Crear el gráfico Fry
plot(delta_x, delta_y,
     pch = 20, col = adjustcolor("darkgreen", alpha.f = 0.3),
     main = "Fryplot (Método manual, 300 Palmas de Moriche)",
     xlab = "ΔX (m)", ylab = "ΔY (m)")
abline(h = 0, v = 0, col = "gray")

Análisis DIAGRAMA FRY

El gráfico de Fry para las Palmas de Moriche muestra un patrón espacial agrupado (clustered). Esto se aprecia en la notable concentración de puntos en las proximidades del origen del plano (\(\Delta X \approx 0, \Delta Y \approx 0\)), lo que representa una alta frecuencia de pares de individuos separados por distancias muy cortas. Este patrón es consistente con autocorrelación espacial positiva, es decir, la tendencia de los individuos a encontrarse próximos entre sí con mayor frecuencia que la esperada bajo un escenario aleatorio. Desde la perspectiva de los procesos puntuales, esta acumulación en torno al origen constituye evidencia de que la vecindad inmediata incrementa la probabilidad de ocurrencia de otro individuo, confirmando la presencia de un proceso de agregación dominante.

Adicionalmente, es importante mencionar que la estructura del diagrama muestra una configuración alargada y ligeramente asimétrica entre cuadrantes, lo cual puede atribuirse a la anisotropía del área de estudio. Debido a que el dominio de muestreo posee una geometría curvilínea y mayor extensión en sentido norte–sur, la dispersión de los vectores \(\Delta X\) y \(\Delta Y\) refleja esta orientación espacial, generando una mayor variabilidad en el eje correspondiente. Esta característica geométrica no afecta la interpretación del patrón, ya que la alta concentración de puntos en el origen persiste a pesar de las restricciones del dominio, reforzando la conclusión de agrupamiento espacial.

En concordancia con esto, los patrones regular o aleatorio quedan descartados. Un patrón regular se manifestaría mediante la ausencia de puntos cercanos al origen (efecto de vacío central), reflejando la existencia de repulsión espacial y distancias mínimas más homogéneas entre individuos. Por otro lado, un patrón aleatorio generaría una nube aproximadamente circular y uniforme alrededor del origen, sin una acumulación central marcada ni anisotropía significativa. La presencia de máxima densidad de puntos en \(\Delta X = 0, \Delta Y = 0\) resulta incompatible con estos escenarios, y sostiene de manera sólida la interpretación de un patrón espacial fuertemente agregado.

3.8. Función F(r)

La función \(F(r)\) cuantifica el espacio vacío en el patrón espacial, midiendo la probabilidad de que un punto aleatorio se encuentre a una distancia \(≤ r\) del evento más cercano. En este sentido, su comportamiento permite identificar acumulación o separación entre individuos.

F <- Fest(palmas_ppp)
plot(F, main = "Función F(r) - Puntos Aleatorios al Evento")

Análisis Función \(F(r)\)

La Función \(F(r)\), que describe la probabilidad de que la distancia desde un punto aleatorio del espacio hasta el evento más cercano sea \(\le r\), muestra evidencia concluyente de un patrón espacial agrupado (clustered). Este resultado se determina comparando la posición relativa de la curva empírica \(\hat{F}_{km}(r)\) (línea negra, estimada con la corrección de Kaplan–Meier) respecto a la curva teórica \(F_{poiss}(r)\) (línea azul punteada), correspondiente al supuesto de Aleatoriedad Espacial Completa (CSR). La curva \(\hat{F}_{km}(r)\) se sitúa de manera consistente por debajo y desplazada hacia la derecha de \(F_{poiss}(r)\) en todo el rango de distancias \(r\), indicando una dinámica espacial no aleatoria.

Desde una perspectiva específica, el hecho de que \(\hat{F}_{km}(r)\) permanezca por debajo de la curva teórica implica que, para cualquier distancia \(r\), la probabilidad acumulada \(P(D \le r)\) de encontrar el evento más cercano es menor que la esperada bajo un proceso de Poisson. Esto significa que la distancia promedio desde un punto aleatorio hasta el evento más próximo es mayor que la correspondiente bajo aleatoriedad. Aunque pueda parecer contraintuitivo, este comportamiento es característico de procesos agrupados, donde los individuos se concentran en clústeres y generan amplias zonas de espacio vacío entre ellos. En consecuencia, un punto de prueba aleatorio tiene mayor probabilidad de ubicarse en una de estas áreas inter–clúster, aumentando la distancia hasta el evento más cercano.

Es importante destacar que la forma de \(F(r)\) observada es incompatible tanto con un patrón aleatorio como con un patrón regular. Bajo aleatoriedad espacial, la curva empírica \(\hat{F}_{km}(r)\) coincidiría o se mantendría muy próxima a la curva teórica \(F_{poiss}(r)\). En contraste, un patrón regular o repulsivo presentaría una curva empírica situada por encima y hacia la izquierda de la curva de Poisson, reflejando distancias cortas y uniformes debido a la disposición ordenada de los puntos. La desviación consistente de \(\hat{F}_{km}(r)\) por debajo de \(F_{poiss}(r)\) en el caso de las Palmas de Moriche confirma la existencia de extensas zonas de espacio vacío y, con ello, un patrón espacial agregado.

3.9. Función G(r)

La función \(G(r)\) evalúa las distancias al vecino más cercano entre eventos, permitiendo identificar si los individuos tienden a aparecer muy próximos entre sí y mostrando patrones de agregación o repulsión local.

G <- Gest(palmas_ppp)
plot(G, main = "Función G(r) - Vecinos más Cercanos")

Análisis Función \(G(r)\)

La función \(G(r)\) establece la probabilidad acumulada de que un evento del patrón tenga a su vecino más cercano a una distancia \(\le r\), proporcionando una medida de la proximidad local. El gráfico empírico para las Palmas de Moriche indica un patrón espacial agregado (clustered). Esto se evidencia en la posición de la curva observada \(\hat{G}(r)\) (línea negra), que se ubica sistemáticamente por encima y hacia la izquierda de la curva teórica \(G_{poiss}(r)\) (línea azul punteada) a partir de \(r \approx 1.0\).

Desde una perspectiva específica, la elevación de \(\hat{G}(r)\) respecto a la curva teórica implica que, para cualquier distancia \(r\), la probabilidad de encontrar un vecino más cercano es mayor que la esperada bajo Aleatoriedad Espacial Completa (CSR). El rápido incremento inicial de \(\hat{G}(r)\) demuestra que la distancia media al vecino más próximo es sustancialmente menor de lo previsto bajo un proceso de Poisson, reflejando autocorrelación espacial positiva a corta distancia. En términos ecológicos, esto indica que las palmas tienden a ocurrir en grupos, con individuos ubicados muy próximos entre sí.

Es importante destacar que la función \(G(r)\) descarta tanto un patrón aleatorio como uno regular. En este sentido, bajo aleatoriedad, \(\hat{G}(r)\) se alinearía con \(G_{poiss}(r)\); en un patrón regular, estaría desplazada hacia la derecha, reflejando distancias mínimas mayores por repulsión entre individuos. La desviación significativa de \(\hat{G}(r)\) por encima de \(G_{poiss}(r)\), especialmente en \(r < 4.0\), confirma un patrón espacial significativamente agregado, consistente con la presencia de clústeres locales de Palmas de Moriche.

4. Conclusiones

En relación con el análisis abordado, se puede afirmar que la distribución espacial de Mauritia flexuosa en el morichal estudiado responde a un patrón de agregación estadísticamente significativo, en concordancia con la hipótesis planteada inicialmente. Los resultados del análisis por cuadrantes mostraron valores VMR > 1 en todas las escalas, con un valor que osciló entre 28.16 y 189.91 para \(N_x = N_y = [2,10] \cap \mathbb{Z}\), y pruebas χ² que mantuvieron \(p << 0.001\), indicando que la variabilidad observada en la abundancia por unidad espacial supera ampliamente la esperada bajo un modelo de aleatoriedad espacial completa (CSR). Estos resultados sugieren que los individuos no están distribuidos al azar, sino que se concentran en agrupaciones definidas dentro del paisaje.

El análisis basado en distancias confirmó este comportamiento, debido a que la distribución del vecino más cercano presentó valores predominantemente ≤ 5 m, reflejando proximidad estructurada entre individuos. La Función G(r) mostró una curva empírica consistentemente situada por encima y hacia la izquierda del modelo Poisson, lo cual indica mayor frecuencia de distancias cortas y por tanto atracción espacial a escala local. De manera complementaria, la Función F(r) se ubicó por debajo y desplazada hacia la derecha, evidenciando la presencia de vacíos ecológicos entre agregados, característica típica de sistemas con clústeres definidos. La coherencia entre estos dos enfoques sugiere que el proceso generador del patrón es compatible con un Proceso Poisson No Homogéneo con dependencia espacial positiva a pequeña escala.

El comportamiento espacial observado coincide con el descrito en estudios previos para morichales amazónico–orinoquenses, donde la agregación ha sido asociada con reclutamiento clonal, dispersión condicionada por flujos hídricos y preferencia por microhábitats hidromórficos (e.g., Narváez-Ortiz et al., 2021; Acevedo y Zamora, 2016). En particular, el patrón detectado se alinea con la idea de que el establecimiento y supervivencia de M. flexuosa ocurre preferentemente en zonas de mayor saturación edáfica, lo cual genera núcleos densos de regeneración rodeados por áreas con menor densidad. Por tanto, los resultados no solo refutan la hipótesis de aleatoriedad sino que también son consistentes con el marco ecológico planteado: la estructura espacial del morichal está guiada por gradientes ambientales e interacciones ecológicas que favorecen la formación de conglomerados locales.