banter is a package for creating hierarchical acoustic event classifiers out of multiple call type detectors.
To install the latest version from GitHub:
# make sure you have Rtools installed
if(!require('devtools')) install.packages('devtools')
# install from GitHub
devtools::install_github('ericarcher/banter')
The BANTER model is initialized with a data.frame of events. There is one row per event and it must have a column called event.id
which is a unique id for each event, and a column called species
which assigns each event to a given species. Every other column in the data.frame will be used as a predictor variable for the events.
In the package, an example data.frame is in the train.data
example data list as the $events
element.
Next, detector data is added to the initialized BANTER model object. Each detector is a data.frame with a column called event.id
that associates the detected call with an event that the model was initialized with, and a call.id
column that provides a unique identifier for each call. Every other column will be used as a predictor variable for the calls.
In the package, example data.frames for three detectors are provided in the $detectors
element of the train.data
example data list. Here is an example of adding the burst pulse (bp
) detector.
bant.mdl <- addBanterDetector(
bant.mdl,
data = train.data$detectors$bp,
name = "bp",
ntree = 10,
sampsize = 1
)
The addBanterDetector
function can be called repeatedly to add additional detectors. Alternatively, if the detectors are all in a named list, they can be added at once:
Once all of the detectors have been added, then the full BANTER model is run:
The model can be easily summarized:
The actual randomForest
model can be extracted for the event or detector models:
# extract event Random Forest model
event.rf <- getBanterModel(bant.mdl, "event")
# extract burst pulse (bp) Random Forest model
bp.rf <- getBanterModel(bant.mdl, "bp")
These can then be visualized using other tools, such as those in the rfPermute
package:
To predict novel data, it must be in a list with the event data in the $events
element, and the detector data in a named list called $detectors
:
Rankin, S., Archer, F., Keating, J. L., Oswald, J. N., Oswald, M., Curtis, A. and Barlow, J. (2017) Acoustic classification of dolphins in the California Current using whistles, echolocation clicks, and burst pulses. Mar Mam Sci, 33: 520-540. doi:10.1111/mms.12381