El Melocactus intortus es un cactus distribuido principalmente en la zona Sur-Oeste de Puerto Rico. Las poblaciones del cactus se encuentran amenazadas por insectos que les producen daños y transmiten infecciones de hongos; además los seres humanos son un factor de amenaza para la especie. Estaremos analizando la distribución de los individuos en una población localizada en el Bosque Estatal de Guánica.
En este estudio estamos interesados en la ubicación de los individuos, su tamaño y longitud de la inflorescencia, y su estado. Para la localización de los individuos utilizamos el método de azimuto y distancia (equivalente a coordenadas polares). El tamaño de los individuos se mide como la altura desde el suelo al punto más alto del individuo. La inflorescencia se mide desde su base hasta el ápice de la misma. El estado de los individuos se categoriza en saludable, enfermo y muerto.
Las coordenadas polares se transforman a coordenadas cartesiana utilizando las fórmulas para un triángulo rectángulo (seno y coseno). Los análisis para determinar el tipo de distribución y gráficas de los datos se realizarán utilizando R.
# con datos csv usando paquete readr
library(readr)
melodata <- read_csv("data/melocactus2016.csv")
head(melodata)
## # A tibble: 6 x 5
## Xtran Ytran altura inflor Status
## <dbl> <dbl> <dbl> <dbl> <chr>
## 1 99.1 105. 45 17 S
## 2 99.1 105. 42 17 S
## 3 99.0 106. 40 18 X
## 4 97.7 104. 29 0 S
## 5 93.5 107. 26 0 E
## 6 93.4 107. 43 12 S
dim(melodata)
## [1] 113 5
plot(melodata$Xtran, melodata$Ytran, type = "p", asp=1)
Figura 1. Mapa de distribución de individuos de Melocactus intortus en el área de Bosque Enano del bosque de Guánica.
library(ggplot2)
melo = ggplot(melodata, aes(Xtran, Ytran, color = Status, size = altura)) +
geom_point()
melo
Figura 2. Mapa de distribución de individuos de Melocactus intortus en el área de Bosque Enano del bosque de Guánica. Los colores indican el estado de los individuos (S: sano, E: enfermo, X: muerto) y el tamaño de los círculos es proporcional a la altura total (cm) de los individuos.
library(spatstat)
NN1 <- nndist(melodata$Xtran, melodata$Ytran)
NN1
## [1] 0.00000000 0.00000000 1.35624482 1.61623018 0.55578773 0.55578773
## [7] 1.99077874 1.99077874 1.54042202 0.49040799 0.43185646 0.43185646
## [13] 0.45254834 2.38648277 1.61276161 0.86683332 0.00000000 0.00000000
## [19] 0.00000000 0.02828427 0.00000000 0.00000000 0.00000000 0.00000000
## [25] 1.60801119 0.00000000 0.00000000 3.96570296 0.42801869 1.09772492
## [31] 1.09772492 0.32140317 1.52013157 0.42801869 1.30969462 1.30969462
## [37] 2.17423550 2.20002273 1.69434353 0.36496575 0.36496575 1.20307938
## [43] 0.84970583 0.97493590 0.97493590 0.84970583 1.02649890 0.00000000
## [49] 0.00000000 1.02649890 1.17426573 1.17426573 1.12271991 1.12271991
## [55] 2.09121974 2.09066975 2.09066975 0.20099751 0.16278821 0.16278821
## [61] 0.54230987 0.14000000 0.14000000 0.95131488 0.55081757 0.19416488
## [67] 0.35510562 0.19416488 0.34132096 0.27513633 0.25317978 0.25317978
## [73] 2.07099010 0.54424259 0.54424259 0.78771822 0.02000000 0.02000000
## [79] 0.30016662 0.49244289 0.14317821 0.14317821 0.27730849 0.27730849
## [85] 0.59236813 0.03605551 0.03605551 1.30751673 1.09444050 1.08406642
## [91] 1.84808008 0.53037722 0.53037722 6.07461933 2.25219893 5.64745075
## [97] 6.30051585 1.92841904 1.92841904 0.00000000 0.00000000 2.96219513
## [103] 2.25219893 0.34985711 0.34985711 3.43292878 0.12165525 0.10198039
## [109] 0.10198039 0.42059482 0.10198039 0.11180340 0.18973666
Utilizamos la metodología de Clark y Evans (1954):
\[\bar{r}_A = \frac{\sum r_i}{n}\] donde \(\bar{r}_A\) es la distancia media al vecino más cercano, \(r_i\) es cada distancia al vecino más cercano, y \(n\) la cantidad de puntos.
Calculamos la densidad de organismos \(\rho\):
\[\rho = \frac{n}{área\ de\ estudio}\]
La distancia esperada al vecino más cercano, \(\bar{r}_E\):
\[\bar{r}_E = \frac{1}{2\sqrt{\rho}}\]
Ahora podemos calcular el índice de agregación, \(R\):
\[R = \frac{\bar{r}_A}{\bar{r}_E}\]
De manera general, si el patrón espacial es al azar, entonces \(R\) = 1, cuando ocurre agregación \(R\) tiende a cero, y cuando el patrón es regular \(R\) se acerca al valor de 2.15.
Podemos realizar una prueba de hipótesis para \(H_0\): “el patrón de distribución es al azar y las distancias tienen una distribución normal”.
Calculamos el valor de \(z\) para las distancias observadas: \[z = \frac{\bar{r}_A - \bar{r}_E}{s_r}\]
El error estándar de la distancia esperada, (\(s_r\)), se obtiene de la geometría plana, y es:
\[s_r = \frac{0.26136}{\sqrt{n\rho}}\]
El valor de \(z\) calculado, se compara con el valor de la tabla de la distribución normal, correspondiente a un \(\alpha\) = 0.05, y si el valor calculado es mayor que el de la tabla, se puede rechazar la \(H_0\) de distribución al azar.
#sumatoria distancias NN
sd <- sum(NN1)
sprintf("Sumatoria de distancias: %.2f m", sd)
## [1] "Sumatoria de distancias: 105.99 m"
#número de distancias NN
n <- length(NN1)
sprintf("Número de distancias: %1.f",n)
## [1] "Número de distancias: 113"
#distancia media NN: rA
rA <- sd/n
sprintf("Distancia media: %.2f m",rA)
## [1] "Distancia media: 0.94 m"
#densidad real
#Ra: radio del circulo
Ra <- 25
N <- length(melodata$Xtran)
d <- N/(pi*Ra^2)
sprintf("Densidad real: %.3f individuos/m^2",d)
## [1] "Densidad real: 0.058 individuos/m^2"
#distancia nn esperada: rE
rE <- 1/(2*sqrt(d))
sprintf("Distancia esperada: %.2f m",rE)
## [1] "Distancia esperada: 2.08 m"
# R: indice de agregación
R <- rA/rE
sprintf("Indice de agregación: %.3f",R)
## [1] "Indice de agregación: 0.450"
#prueba de significancia Ho:random
#sr: error estandar de rE
sr <- 0.26136/sqrt(N*d)
sprintf("Error estándar de la distancia esperada: %.3f m",sr)
## [1] "Error estándar de la distancia esperada: 0.102 m"
z <- abs((rA - rE)/sr)
sprintf("Estadístico Z: %.3f",z)
## [1] "Estadístico Z: 11.184"
vc <- abs(qnorm(0.05))
sprintf("Valor crítico distribución normal (p=0.05): %.3f",vc)
## [1] "Valor crítico distribución normal (p=0.05): 1.645"