Acoustic data wrangling
acoustic-data-wrangling.Rmd
The recommended workflow to wrangle together data for analysis in
wildrtrax
is as follows. Once you have your data from
wt_download_report()
.
- Remove unneeded species:
wt_tidy_species()
- Convert TMTT counts to numeric:
wt_replace_tmtt()
- Convert the species to a wide format:
wt_make_wide()
- Calculate statistical offsets to account for imperfection detection
following the QPAD
method:
wt_qpad_offsets()
# Start by getting everything you need
Sys.setenv(WT_USERNAME = 'guest', WT_PASSWORD = 'Apple123')
wt_auth()
my_report <- wt_download_report(project_id = 620, sensor_id = 'ARU', reports = "main", weather_cols = F) |>
tibble::as_tibble()
Data wrangling
Now let’s start cleaning things up a bit. We don’t need certain
abiotic and mammal codes so let’s remove those with
wt_tidy_species()
,
my_tidy_data <- wt_tidy_species(my_report, remove = c("mammal"), zerofill=F)
# Difference in rows
round((nrow(my_tidy_data)/nrow(my_report)),2)
#> [1] 0.85
So about 15% of detections were mammals. Next, convert TMTT (too many to tag) counts to numeric:
my_tmtt_data <- wt_replace_tmtt(data = my_tidy_data, calc = "round")
and finally, widen the data into a species matrix.
my_wide_data <- wt_make_wide(data = my_tmtt_data, sound = "all")
head(my_wide_data)
#> # A tibble: 6 × 77
#> organization project_id location location_id location_buffer_m longitude
#> <chr> <dbl> <chr> <dbl> <lgl> <dbl>
#> 1 BU 620 CHPP-WP-1 94515 NA -110.
#> 2 BU 620 CHPP-WP-1 94515 NA -110.
#> 3 BU 620 CHPP-WP-1 94515 NA -110.
#> 4 BU 620 CHPP-WP-1 94515 NA -110.
#> 5 BU 620 CHPP-WP-2 94518 NA -110.
#> 6 BU 620 CHPP-WP-2 94518 NA -110.
#> # ℹ 71 more variables: latitude <dbl>, equipment_make <lgl>,
#> # equipment_model <lgl>, recording_id <dbl>, recording_date_time <dttm>,
#> # task_id <dbl>, aru_task_status <chr>, task_duration <dbl>,
#> # task_method <chr>, AMCR <dbl>, AMRE <dbl>, AMRO <dbl>, BAOR <dbl>,
#> # BBMA <dbl>, BCCH <dbl>, BHCO <dbl>, BHGR <dbl>, CANG <dbl>, CEDW <dbl>,
#> # CHSP <dbl>, CONI <dbl>, COPO <dbl>, CORA <dbl>, COYE <dbl>, DEJU <dbl>,
#> # DUFL <dbl>, EAPH <dbl>, GCKI <dbl>, GHOW <dbl>, HAWO <dbl>, LAZB <dbl>, …
Offsets
Now you can calculate statistical offsets to account for imperfect detection following the QPAD method.
my_offset_data <- wt_qpad_offsets(data = my_wide_data, species = "all", version = 3, together = TRUE)
#> Extracting covariates for offset calculation. This may take a moment.
#>
#> Loading QPAD estimates... BAM QPAD parameter estimates loaded, version 3
#>
#> Calculating offsets...
#> AMCR
#> AMRE
#> AMRO
#> BAOR
#> BBMA
#> BCCH
#> BHCO
#> CEDW
#> CHSP
#> CORA
#> COYE
#> DEJU
#> DUFL
#> EAPH
#> GCKI
#> HAWO
#> LEFL
#> LISP
#> MODO
#> OCWA
#> PISI
#> RBNU
#> RCKI
#> RECR
#> RTHU
#> SAVS
#> SWTH
#> TEWA
#> TRES
#> VEER
#> WAVI
#> WBNU
#> WCSP
#> WEWP
#> WISN
#> YBSA
#> YEWA
#> YRWA
head(my_offset_data)
#> organization project_id location location_id location_buffer_m longitude
#> 1 BU 620 CHPP-WP-1 94515 NA -110.2968
#> 2 BU 620 CHPP-WP-1 94515 NA -110.2968
#> 3 BU 620 CHPP-WP-1 94515 NA -110.2968
#> 4 BU 620 CHPP-WP-1 94515 NA -110.2968
#> 5 BU 620 CHPP-WP-2 94518 NA -110.2974
#> 6 BU 620 CHPP-WP-2 94518 NA -110.2974
#> latitude equipment_make equipment_model recording_id recording_date_time
#> 1 49.65529 NA NA 211651 2021-07-05 04:32:00
#> 2 49.65529 NA NA 211677 2021-07-09 06:06:00
#> 3 49.65529 NA NA 211676 2021-07-10 05:07:00
#> 4 49.65529 NA NA 211662 2021-07-10 22:10:00
#> 5 49.65272 NA NA 211669 2021-07-04 02:40:00
#> 6 49.65272 NA NA 285273 2021-07-05 02:40:00
#> task_id aru_task_status task_duration task_method AMCR AMRE AMRO BAOR BBMA
#> 1 180890 Transcribed 180 1SPT 0 0 0 0 0
#> 2 180916 Transcribed 180 1SPT 0 0 0 0 0
#> 3 180915 Transcribed 180 1SPT 1 1 4 0 1
#> 4 180901 Transcribed 180 1SPT 0 0 1 0 0
#> 5 180908 Transcribed 180 1SPT 0 0 0 0 0
#> 6 264441 Transcribed 180 1SPT 0 0 0 0 0
#> BCCH BHCO BHGR CANG CEDW CHSP CONI COPO CORA COYE DEJU DUFL EAPH GCKI GHOW
#> 1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1
#> 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0
#> 3 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0
#> 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> HAWO LAZB LEFL LIBA LIRA LISP LITF LIWI MGWA MOBA MODO MORA MOWI NHWR OCWA
#> 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0
#> 2 0 1 2 0 0 0 0 0 0 0 0 0 0 3 0
#> 3 0 0 1 0 0 0 0 0 0 0 1 0 0 2 0
#> 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
#> 6 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0
#> PISI RBNU RCKI RECR RNSA RTHU SAVS SWTH TEWA TRES UNBI UNKN UNPA UNSA UNTR
#> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> 4 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
#> 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#> UNWA UNWX UPCH VEER WAVI WBNU WCSP WEWP WISN YBSA YEWA YRWA AMCR.off
#> 1 0 0 0 1 0 0 2 1 1 0 0 0 2.370102
#> 2 0 0 0 1 0 0 2 1 0 0 2 0 2.370102
#> 3 0 0 0 1 1 0 1 1 0 0 1 0 2.370102
#> 4 0 0 0 0 0 0 0 0 0 0 0 0 2.369905
#> 5 0 0 0 0 0 0 0 0 0 0 0 0 2.370102
#> 6 0 0 0 0 0 0 0 0 0 0 0 0 2.370102
#> AMRE.off AMRO.off BAOR.off BBMA.off BCCH.off BHCO.off CEDW.off
#> 1 0.4167774 1.0271415 0.7239005 2.542484 0.3703048 0.1061239 0.05242081
#> 2 0.4167774 1.0271415 0.7239005 2.542484 0.3703048 0.1061239 0.05242081
#> 3 0.4167774 1.0271415 0.7239005 2.542484 0.3703048 0.1061239 0.05242081
#> 4 0.4078807 0.3843135 0.7239005 -14.091866 0.3703048 0.1061239 0.05242081
#> 5 0.4167774 1.0271415 0.7239005 2.537825 0.3703048 0.1061239 0.05242081
#> 6 0.4167774 1.0271415 0.7239005 2.537478 0.3703048 0.1061239 0.05242081
#> CHSP.off CORA.off COYE.off DEJU.off DUFL.off EAPH.off GCKI.off
#> 1 0.5916778 1.972791 0.8977079 0.9107690 0.1678111 0.9805074 -0.5905164
#> 2 0.5916778 1.972791 0.8977079 0.9107690 0.1678111 0.9805074 -0.5905164
#> 3 0.5916778 1.972791 0.8977079 0.9107690 0.1678111 0.9805074 -0.5905164
#> 4 0.5916778 -1.506756 0.8976880 -0.2123905 0.1678111 0.9805074 -1.2850892
#> 5 0.5916778 1.972791 0.8977079 0.9107690 0.1678111 0.9805074 -0.5905167
#> 6 0.5916778 1.972791 0.8977079 0.9107690 0.1678111 0.9805074 -0.5905167
#> HAWO.off LEFL.off LISP.off MODO.off OCWA.off PISI.off RBNU.off
#> 1 0.4959508 0.06602909 0.8481771 1.195639 0.6732180 0.1894495 0.7345163
#> 2 0.4959508 0.06602909 0.8481771 1.195639 0.6732178 0.1894495 0.7345163
#> 3 0.4959508 0.06602909 0.8481771 1.195639 0.6732158 0.1894495 0.7345163
#> 4 0.4959508 0.06590519 -2.3580608 1.109186 0.6732180 -5.6283000 0.7345163
#> 5 0.4959508 0.06602909 0.8481771 1.195639 0.6732178 0.1894495 0.7345163
#> 6 0.4959508 0.06602909 0.8481771 1.195639 0.6732176 0.1894495 0.7345163
#> RCKI.off RECR.off RTHU.off SAVS.off SWTH.off TEWA.off TRES.off
#> 1 1.092762 0.08661238 -2.474842 0.9633483 1.1630042 0.271135 1.020597
#> 2 1.092710 0.08661238 -2.474842 0.9633483 1.1630042 0.271135 1.020597
#> 3 1.092650 0.08661238 -2.474842 0.9633483 1.1630042 0.271135 1.020597
#> 4 1.090702 0.08661238 -2.474842 -1.3818771 0.8410931 0.271135 -3.446437
#> 5 1.092762 0.08661238 -2.474842 0.9633483 1.1630042 0.271135 1.020597
#> 6 1.092762 0.08661238 -2.474842 0.9633483 1.1630042 0.271135 1.020597
#> VEER.off WAVI.off WBNU.off WCSP.off WEWP.off WISN.off YBSA.off YEWA.off
#> 1 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460558 0.441793
#> 2 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460558 0.441793
#> 3 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460558 0.441793
#> 4 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460557 -4.234049
#> 5 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460558 0.441793
#> 6 1.310133 0.3371337 0.6905176 1.277016 0.8691736 1.917213 0.8460558 0.441793
#> YRWA.off
#> 1 0.3537681
#> 2 0.3537681
#> 3 0.3537681
#> 4 0.2395314
#> 5 0.3537681
#> 6 0.3537681
Occupancy modelling
You can also perform a single-season, single-species occupancy work
flow using wt_format_occupancy()
once the data is
downloaded.
dat.occu <- wt_format_occupancy(my_report, species="OVEN", siteCovs=NULL)
mod <- unmarked::occu(~ 1 ~ 1, dat.occu)
mod
#>
#> Call:
#> unmarked::occu(formula = ~1 ~ 1, data = dat.occu)
#> Occupancy:
#> Estimate SE z P(>|z|)
#> -16.7 NaN NaN NaN
#> Detection:
#> Estimate SE z P(>|z|)
#> -6.46 NaN NaN NaN
#>
#> AIC: 4