Zonación de caracoles en Playa Tamarindo, Guánica

Datos desde csv

Cargamos los datos a un data frame a partir de un archivo .csv

zonai <- read.csv("caracoles.imaginarios.csv")
# primeras 6 filas de datos
head(zonai)

Estadísticas descriptivas para gráfica de barras

A continuación vamos a transformar los datos de conteo (abundancia) a frecuencias relativas de cada especie. Luego calcularemos algunas estadísticas descriptivas, incluyendo media y error estándar de la media de las frecuencias relativas por especie, a lo largo de las transectas.

# pasar abundancias a frecuencias relativas
library(dplyr)
zonaif <- zonai %>% 
  mutate(total = car_1 + car_2 +car_3) %>% 
  mutate(fcar_1 = car_1/total, fcar_2 = car_2/total, fcar_3 = car_3/total)
# estad´siticas descriptivas
library(Rmisc)
library(tidyverse)
est_car_1 <- summarySE(zonaif, measurevar="fcar_1", groupvars="cuadrado")
colnames(est_car_1)[3] <- "media"
est_car_1
est_car_2 <- summarySE(zonaif, measurevar="fcar_2", groupvars="cuadrado")
colnames(est_car_2)[3] <- "media"
est_car_2
est_car_3 <- summarySE(zonaif, measurevar="fcar_3", groupvars="cuadrado")
colnames(est_car_3)[3] <- "media"
est_car_3

Gráfica de zonación por especie

library(ggplot2)
barras <- rbind(est_car_1, est_car_2, est_car_3)
spp <- c("car_1","car_1","car_1",
         "car_2","car_2","car_2",
         "car_3","car_3","car_3")
barras <- cbind(barras, spp)
barras
# gráfica de baras
ggplot(barras, aes(x = cuadrado, y = media, 
                        fill = spp)) +
  geom_bar(position=position_dodge(), stat="identity") +
  geom_errorbar(aes(ymin=media-se, ymax=media+se), width=.2,
                position=position_dodge(.9)) +
  xlab("Zona") + ylab("Frecuencia Relativa")

Prueba de asociación entre transectas y la zonación

Construimos una tabla de contingencia para cada especie con los datos originales de abundancia.

# separamos los datos por especie
C_1_car_1 <- zonai[zonai$cuadrado==1, 3]
C_2_car_1 <- zonai[zonai$cuadrado==2, 3]
C_3_car_1 <- zonai[zonai$cuadrado==3, 3]
# especie car_1
asoc_car_1 <- rbind(C_1_car_1,C_2_car_1,C_3_car_1)
rownames(asoc_car_1) <- c("C1","C2","C3")
colnames(asoc_car_1) <- c("tA","tB","tC","tD","tE")
# tabla de contingencia
library(gt)
tab_asoc_1 <- as.data.frame(asoc_car_1)
tab_asoc_1 %>% 
gt(rownames_to_stub = TRUE) %>%
  tab_header(
    title = "Tabla 1. Abundancia de car_1 en cinco transectas (tA-tE) 
    de la costa rocosa desde la zona de marea alta (C1) 
    hasta la zona de marea baja (C3)",
    subtitle = "Transectas"
  )
Tabla 1. Abundancia de car_1 en cinco transectas (tA-tE) de la costa rocosa desde la zona de marea alta (C1) hasta la zona de marea baja (C3)
Transectas
tA tB tC tD tE
C1 20 10 100 30 13
C2 50 20 30 50 33
C3 30 2 10 10 23
# repetir para cada especie

Ahora una prueba de \(\chi^2\) para cada especie:

chisq.test(asoc_car_1)
## 
##  Pearson's Chi-squared test
## 
## data:  asoc_car_1
## X-squared = 108.76, df = 8, p-value < 2.2e-16

Visualización de la prueba de asociación

La prueba de \(\chi^2\) indica si existe o no independencia (o al contrario, asociación) entre las variables categóricas, en este caso transecta y zona, pero no nos indica cuáles valores determinan la no-independencia. Una gráfica de mosaico nos indica cuáles valores están significativamente por debajo (rojo) o por encima (azul) de lo esperado.

# especie 1
library(vcd)
mosaic(asoc_car_1, shade = TRUE, legend = FALSE, 
       labeling_args = list(set_varnames = c(A = "zona", B = "transecta")),
       set_labels = list(A = c("C1","C2","C3"), 
                         B = c("t1","t2","t3","t4","t5")))