Introducción

Actualmente las cámaras-trampa son uno de los métodos más populares para obtener diferente información de la fauna, principalmente de mamíferos y aves de talla mediana y grande. En particular, con el fototrampeo es muy frecuente calcular el IAR (O’Brien 2011). En el Capítulo 8 del libro “Fototrampeo en R: Vol.I”, Mandujano (2019) describe el paquete RAI para calcular este índice de la manera tradicional donde se agrupan todos los datos de las cámaras; y de una manera alternativa donde el IAR se estima para cada especie en cada cámara. Esto permite probar estadísticamente posibles diferencias en el IAR entre especies. Sin embargo, para analizar los datos, el paquete RAI requiere que la información se ingrese con un formato definido. En esta viñeta describimos un procedimiento muy sencillo para preparar la base de datos para luego ser empleada con la función RAI(). El procedimiento aquí descrito se basa en el empleo de camtrapR para etiquetar, organizar y realizar análisis preliminares (Niedballa et al. 2016).

Procedimiento

Se carga la librería:

library(camtrapR)

Luego se leen los archivos previamente guardados en formato .csv que contienen los regitros independientes y la operatividad de las cámaras, por ejemplo:

registros <- read.csv("datos.csv", header = T)
head(registros)
##   Station Tipo_monitoreo Species DateTimeOriginal       Date     Time
## 1    B1C2      Monitoreo  Conejo 15/06/2018 21:14 15/06/2018 21:14:35
## 2    B1C2      Monitoreo  Conejo 16/06/2018 02:14 16/06/2018 02:14:50
## 3    B1C3      Monitoreo  Conejo 28/02/2018 23:26 28/02/2018 23:26:38
## 4    B1C3      Monitoreo  Conejo 03/03/2018 00:20 03/03/2018 00:20:30
## 5    B1C3      Monitoreo  Conejo 04/03/2018 05:05 04/03/2018 05:05:21
## 6    B1C3      Monitoreo  Conejo 04/03/2018 21:28 04/03/2018 21:28:37
##   delta.time.secs delta.time.mins delta.time.hours delta.time.days
## 1          534158            8903            148.4             6.2
## 2           17634             294              4.9             0.2
## 3               0               0              0.0             0.0
## 4          176028            2934             48.9             2.0
## 5          103464            1724             28.7             1.2
## 6           58602             977             16.3             0.7
##        metadata_Species
## 1 Sylvilagus floridanus
## 2 Sylvilagus floridanus
## 3 Sylvilagus floridanus
## 4 Sylvilagus floridanus
## 5 Sylvilagus floridanus
## 6 Sylvilagus floridanus
operatividad_cam <- read.csv("Operatividad_Camaras.csv", header = T)
head(operatividad_cam)
##        X       Y Station Tipo_Monitoreo Localidad Fecha_colocacion
## 1 692889 2007473    CB41      Monitoreo        CB       01/01/2014
## 2 692190 2007979    CB42      Monitoreo        CB       01/02/2014
## 3 692339 2007458    CB43      Monitoreo        CB       01/02/2014
## 4 692187 2007655    CB44      Monitoreo        CB       01/01/2014
## 5 692102 2007846    CB45      Monitoreo        CB       01/02/2014
## 6 693065 2007297    CB46      Monitoreo        CB       01/09/2015
##   Fecha_retiro Problem1_from Problem1_to
## 1   31/08/2014                          
## 2   31/05/2016    01/09/2014  08/02/2016
## 3   09/06/2016    01/09/2014  08/02/2016
## 4   31/08/2014                          
## 5   09/06/2016    01/09/2014  31/08/2015
## 6   02/06/2016    01/12/2015  31/01/2016

Para obtener el número de registros y el esfuerzo de muestreo por cámara, se emplea la función surveyReport como:

reporte <- surveyReport (recordTable = registros, 
      CTtable = operatividad_cam,
      speciesCol = "Species",
      stationCol = "Station", 
      setupCol = "Fecha_colocacion",
      retrievalCol = "Fecha_retiro",
      CTDateFormat = "%d/%m/%Y",
      recordDateTimeCol = "DateTimeOriginal",
      recordDateTimeFormat = "%d/%m/%Y %H:%M", 
      CTHasProblems = T)
## 
## -------------------------------------------------------
## [1] "Total number of stations:  24"
## 
## -------------------------------------------------------
## [1] "Number of operational stations:  24"
## 
## -------------------------------------------------------
## [1] "n nights with cameras set up (operational or not. NOTE: only correct if 1 camera per station): 5678"
## 
## -------------------------------------------------------
## [1] "n nights with cameras set up and active (trap nights. NOTE: only correct if 1 camera per station): 4138"
## 
## -------------------------------------------------------
## [1] "total trapping period:  2014-01-01 - 2018-06-17"

Los datos del esfuerzo de muestreo se pueden extraer como:

head(esfuerzo_muestreo <- reporte [[1]])
##   Station setup_date first_image_date last_image_date retrieval_date
## 1    B1C1 2018-02-23             <NA>            <NA>     2018-03-20
## 2    B1C2 2018-02-23       2018-02-24      2018-06-16     2018-06-17
## 3    B1C3 2018-02-23       2018-02-28      2018-06-10     2018-06-17
## 4    B1C4 2018-02-23       2018-02-24      2018-06-17     2018-06-17
## 5    B1C5 2018-02-23       2018-03-23      2018-06-15     2018-06-17
## 6    B1C6 2018-03-20       2018-03-22      2018-06-14     2018-06-17
##   n_nights_total n_nights_active n_cameras
## 1             25              25         1
## 2            114             114         1
## 3            114             114         1
## 4            114             114         1
## 5            114              93         1
## 6             89              89         1

Asimismo podemos extraer información como:

n_activas <- esfuerzo_muestreo [c("Station", "n_nights_active")]
head(n_activas)
##   Station n_nights_active
## 1    B1C1              25
## 2    B1C2             114
## 3    B1C3             114
## 4    B1C4             114
## 5    B1C5              93
## 6    B1C6              89
registros_especies <- reporte[[4]]
head(registros_especies)
##   Station  Species n_events
## 1    B1C2   Conejo        2
## 2    B1C2    Lince        3
## 3    B1C2 Mephitis        8
## 4    B1C2   Venado        7
## 5    B1C2    Zorra       13
## 6    B1C3   Conejo       15

Luego unimos las columnas en una sola data.frame como:

wildlife.data <- merge(registros_especies, n_activas, all.y = T)
head(wildlife.data)
##   Station  Species n_events n_nights_active
## 1    B1C1     <NA>       NA              25
## 2    B1C2   Conejo        2             114
## 3    B1C2    Lince        3             114
## 4    B1C2 Mephitis        8             114
## 5    B1C2   Venado        7             114
## 6    B1C2    Zorra       13             114

De acuerdo al paquete RAI se debe nombrar cada columna de una manera específica, esto lo hacemos con el siguiente código:

colnames(wildlife.data)
## [1] "Station"         "Species"         "n_events"        "n_nights_active"
names(wildlife.data)[names(wildlife.data) == "Station"] <- "Camera"
names(wildlife.data)[names(wildlife.data) == "n_events"] <- "Events"
names(wildlife.data)[names(wildlife.data) == "n_nights_active"] <- "Effort"
colnames(wildlife.data)
## [1] "Camera"  "Species" "Events"  "Effort"
head(wildlife.data)
##   Camera  Species Events Effort
## 1   B1C1     <NA>     NA     25
## 2   B1C2   Conejo      2    114
## 3   B1C2    Lince      3    114
## 4   B1C2 Mephitis      8    114
## 5   B1C2   Venado      7    114
## 6   B1C2    Zorra     13    114

Finalmente, debemos guardar el objeto nuevo para posteriormente utilizarlo en el paquete RAI, como:

write.csv(wildlife.data, "wildlife.data.csv")

Aplicación del paquete RAI

Una vez preparados los datos y de acuerdo a las instrucciones detalladas en el Capítulo 8 del libro “Fototrampeo en R: Vol.I”, se puede calcular el IAR primero cargando el paquete y los datos como:

source("pkgRAI_1.R")
wildlife.data <- read.csv("wildlife.data.csv", header = T)

IAR clásico, es decir el que se calcula agrupando toda la información de las cámaras por especie, se obtiene con la función RAIgral() como:

RAIgral <- (n/days)*100

La cual genera en automático la siguiente tabla con los datos específicos para cada especie, incluido la estimación del IAR y de la ocupación naive:

##           cameras days   n RAIgral OccNaive
## Spilogale       3  302   9    2.98        1
## Lince          11 1060  52    4.91        1
## Conepatus       8  718  48    6.69        1
## Coyote          3  299  13    4.35        1
## Venado          5  524  30    5.73        1
## Tlacuache       1   99   1    1.01        1
## Mephitis        6  616  17    2.76        1
## Conejo          6  641 176   27.46        1
## Pecari          1  111   1    0.90        1
## Mapache         1  111   1    0.90        1
## Zorra          10  952 300   31.51        1

Conviene guardar esta tabla como:

write.csv(table1, "Tabla_IARgral.csv") 

Observe que en esta tabla además se presenta lo que se conoce como ocupación naive (OccNaive) la cual simplemente se refiere a la proporción de sitios (cámaras) donde aparece al menos una vez la especie.

También se puede calcular el IAR alternativo, es decir el que considera el número de registros de cada especie por cámara, con la función RAIalt() el cual genera la siguiente tabla la cual difiere de la previa respecto a que en este caso se calcula el IAR para para cada especie en cada cámara. Por ejemplo, a continuación se presentan los primeros 25 renglones (de un total de 68), se obtiene:

##    Camera   Species Events Effort RAIalt
## 1    B1C1      <NA>     NA     25     NA
## 2    B1C2    Conejo      2    114   1.75
## 3    B1C2     Lince      3    114   2.63
## 4    B1C2  Mephitis      8    114   7.02
## 5    B1C2    Venado      7    114   6.14
## 6    B1C2     Zorra     13    114  11.40
## 7    B1C3    Conejo     15    114  13.16
## 8    B1C3     Lince      2    114   1.75
## 9    B1C3    Venado      4    114   3.51
## 10   B1C3     Zorra     29    114  25.44
## 11   B1C4     Lince      4    114   3.51
## 12   B1C4  Mephitis      1    114   0.88
## 13   B1C4    Venado      7    114   6.14
## 14   B1C4     Zorra     51    114  44.74
## 15   B1C5 Conepatus     10     93  10.75
## 16   B1C5     Lince      2     93   2.15
## 17   B1C5    Venado      8     93   8.60
## 18   B1C5     Zorra     80     93  86.02
## 19   B1C6 Conepatus     16     89  17.98
## 20   B1C6     Lince      7     89   7.87
## 21   B1C6  Mephitis      5     89   5.62
## 22   B1C6    Venado      4     89   4.49
## 23   B1C6     Zorra     63     89  70.79
## 24   B2C1 Conepatus      5    108   4.63
## 25   B2C1    Coyote      5    108   4.63

Nuevamente, se sugiere guardar la tabla como:

write.csv(table2, "Tabla_IARalt.csv") 

En la Figura 1 se presenta la estimación del IAR para cada especie en formato bloxplot. Observe que con el procedimiento alternativo de calcular el IAR para cada especie por cámara, se puede generar intervalos de confianza sobre la estimación del IAR. En ese sentido, el paquete RAI tiene otras funciones para probar y graficar las posibles diferencias estadísticas del IAR entre especies.

Figura 1. Gráfico del índice de abundancia relativa (RAI) para cada especie a partir de la estimación del IAR por especie en cada cámara.

Figura 1. Gráfico del índice de abundancia relativa (RAI) para cada especie a partir de la estimación del IAR por especie en cada cámara.

Limitaciones del IAR

Es muy común calcular el IAR e interpretarlo de manera simple considerando que a mayor valor del índice la especie será más abundante. En sentido estricto, esta interpretación es incorrecta pues se basa en el supuesto de que la probabilidad de detección es la misma para todas las especies, o bien para la misma especie en diferente época del año, hábitats, sexo, edad u otro). Por tal motivo, los IAR se deben nombrar como tasa de captura de fotos, no como índice de abundancia.

Afortunadamente, alternativo al IAR existen otras aproximaciones las cuales consideran simultáneamente los datos de conteo (tasa de captura de fotos) calibrados por la probabilidad de detección. Los más populares y recientes son los modelos de ocupación, modelos N-mixtos y el modelo de Royle-Nichols (Kéry y Royle 2015). Además si simultáneamente se obtiene otra información para cada avistamiento, como por ejemplo la distancia, se pueden emplear los métodos y modelos de distancia (para cámaras trampa se están desarrollando algunos modelos) (Howe et al. 2017). Otra variable asociada al avistamiento (o foto) es la identidad del individuo para aquellas especies donde esto es posible y entonces se pueden emplear modelos de captura-recaptura (Royle et al. 2014). Es decir, con las cámaras-trampa se obtiene información que puede ser analizada de una manera más robusta para calcular el tamaño poblacional, más allá del simple y sesgado IAR.

Sumario

En esta viñeta se describe un procedimiento sencillo para preparar la base de datos empleando el paquete camtrapR y luego calcular el índice de abundancia relativo (IAR) con el paquete RAI. Sin embargo, es conveniente comentar que un procedimiento distinto al aquí presentado, es a partir de una base generada con el programa Wild.ID descrito por Rovero y Spitale (2016). En cualquier caso, se sugiere consultar las viñetas y actualizaciones de camtrapR y Wild.ID. Una descripción general y sencilla de éstos, se puede consultar en los capítulos 3 y 4 en “Fototrampeo en R: Vol.I”.

Bibliografía

Este documento fue generado en RMarkdown

sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] camtrapR_1.1
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1        highr_0.8         pillar_1.3.1     
##  [4] compiler_3.6.0    plyr_1.8.4        ritis_0.7.6      
##  [7] iterators_1.0.10  tools_3.6.0       digest_0.6.18    
## [10] tibble_2.1.1      jsonlite_1.6      evaluate_0.13    
## [13] nlme_3.1-139      lattice_0.20-38   mgcv_1.8-28      
## [16] pkgconfig_2.0.2   rlang_0.4.1       Matrix_1.2-17    
## [19] foreach_1.4.4     crul_0.7.4        curl_3.3         
## [22] yaml_2.2.0        rgdal_1.4-3       parallel_3.6.0   
## [25] xfun_0.6          dplyr_0.8.0.1     secr_3.2.0       
## [28] stringr_1.4.0     raster_2.8-19     knitr_1.22       
## [31] xml2_1.2.0        tidyselect_0.2.5  grid_3.6.0       
## [34] glue_1.3.1        reshape_0.8.8     httpcode_0.2.0   
## [37] data.table_1.12.2 R6_2.4.0          solrium_1.0.2    
## [40] rmarkdown_1.12    sp_1.3-1          overlap_0.3.2    
## [43] purrr_0.3.2       reshape2_1.4.3    magrittr_1.5     
## [46] codetools_0.2-16  htmltools_0.3.6   MASS_7.3-51.4    
## [49] splines_3.6.0     assertthat_0.2.1  abind_1.4-5      
## [52] bold_0.8.6        taxize_0.9.6      ape_5.3          
## [55] stringi_1.4.3     crayon_1.3.4      zoo_1.8-5