Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

An R package that facilitates the identification of animal aggregations of potential conservation significance based on individual tracking data. Key functions include utilities to identify and summarise individual foraging trips, estimate utilisation distributions, and overlay distributions to identify important aggregation areas.

License

NotificationsYou must be signed in to change notification settings

BirdLifeInternational/track2kba

Repository files navigation

DOI

R-CMD-checkCoverage StatusCRAN_Status_BadgeCRAN_Status_Badge

This package is comprised of functions that facilitate theidentification of areas of importance for biodiversity, such as KeyBiodiversity Areas (KBAs), based on individual tracking data. Forfurther detail concerning the method itself, please refer to thispaper by Beal et al. (2021).

Key functions include utilities to estimate individual core use areas,the level of representativeness of the tracked sample, and overlayindividual distributions to identify important sites at the populationlevel. Other functions assist in plotting the results, formatting yourdata set, and splitting and summarizing individual foraging trips.

Installation


You can download the stable version from CRAN with:

install.packages("track2KBA")

Or you can download the development version fromGitHub with:

install.packages("devtools",dependencies=TRUE)devtools::install_github("BirdLifeInternational/track2kba",dependencies=TRUE)# development version - add argument 'build_vignettes = FALSE' to speed it up

Example


Now we will use tracking data collected at a seabird breeding colony toillustrate atrack2KBA workflow for identifying important sites. It isimportant to note that the specific workflow you use (i.e., whichfunctions and in what order) will depend on the species of interest andthe associated data at hand.

First, in order for the data to work intrack2KBA functions, we canuse theformatFields function to format the important data columnsneeded for analysis. These are: a DateTime field, Latitude and Longitudefields, and an ID field (i.e. individual animal, track, or trip).

library(track2KBA)# load packagedata(boobies)# ?boobies  # for some background info on the example data setdataGroup<- formatFields(dataGroup=boobies,fieldID="track_id",fieldDate="date_gmt",fieldTime="time_gmt",fieldLon="longitude",fieldLat="latitude"  )str(dataGroup)

If your data come from a central-place foraging species (i.e. one whichmakes trips out from a centrally-located place, such as a nest in thecase of a bird), you can usetripSplit to split up the data intodiscrete trips.

In order to do this, you must identify the location(s) of the centralplace(s) (e.g. colony-center, or nest sites).

library(dplyr)# here we know that the first points in the data set are from the colony centercolony<-dataGroup %>%   summarise(Longitude= first(Longitude),Latitude= first(Latitude)    )

Ourcolony dataframe tells us where trips originate from. Then we canset some parameters to decide what constitutes a trip. To do that weshould use our understanding of the movement ecology of the studyspecies. In this case we know our seabird travels out to sea on thescale of tens of kilometers, so we setinnerBuff (the minimum distancefrom the colony) to 3 km, andduration (minimum trip duration) to 1hour.returnBuff can be set further out in order to catch incompletetrips, where the animal began returning, but perhaps due to devicefailure the full trip wasn’t captured.

Optionally, we can setrmNonTrip to TRUE which will remove the periodswhen the animals were not on trips. The results oftripSplit can beplotted usingmapTrips to see some examples of trips.

str(dataGroup)trips<- tripSplit(dataGroup=dataGroup,colony=colony,innerBuff=3,# kilometersreturnBuff=10,duration=1,# hoursrmNonTrip=TRUE  )mapTrips(trips=trips,colony=colony)

Then we can summarize the trip movements, usingtripSummary. First, wecan filter out data from trips that did not return to the vicinity ofthe colony (i.e. withinreturnBuff), so they don’t skew the estimates.

trips<- subset(trips,trips$Returns=="Yes" )sumTrips<- tripSummary(trips=trips,colony=colony)sumTrips

Now that we have an idea how the animals are moving, we can start withthe process of estimating their space use areas, and identifyingpotentially important sites for the population!

track2KBA uses Kernel Density Estimation (KDE) to produce space useestimates for each individual track. In order for these to be accurate,we need to transform the tracking data to an equal-area projection. Wecan use the convenience functionprojectTracks to perform thisprojection. We can select between an azimuthal or cylindricalprojection, and decide whether to center the projection on the dataitself. Custom-centering is generally a good idea for quick analyses asthis will minimize distortion, however it is important to remember thatthe resulting projection will be data specific. So if you remove evenone track and re-analyze, the projection will differ between datasets.For formal analysis, the best solution is to find a standard projectionthat is appropriate for your study region.

tracks<- projectTracks(dataGroup=trips,projType='azim',custom=TRUE )class(tracks)

findScale provides options for setting the all-important smoothingparameter in the KDE. This parameter decisions is of the utmostimportance, as it determines the scale at which the tracking locationswill be ‘smoothed’ into an estimate of the probability of use of spaceby the animal.findScale calculates candidate smoothing parametervalues using several different methods.

If we know our animal uses an area-restricted search (ARS) strategy tolocate prey, then we can set thescaleARS=TRUE. This uses FirstPassage Time analysis to identify the spatial scale at whicharea-restricted search is occuring, which may then be used as thesmoothing parameter value.

hVals<- findScale(tracks=tracks,scaleARS=TRUE,sumTrips=sumTrips)hVals

The other values provided byfindScale are more simplistic methods ofcalculating the smoothing parameter.href is the canonical referencemethod, and relates to the number of points in the data and theirspatial variance.mag is the log of the average foraging range(med_max_dist in thesumTrips output); this methods only works forcentral-place foragers.

Next, we must select a smoothing parameter value. To inform ourdecision, we ought to use our understanding of the species’ movementecology to guide our decision about what scale make sense. That is, fromthefindScale output, we want to avoid using values which may under-or over-represent the area used by the animals while foraging.

Once we have chosen a smoothing value, we can produce KDEs for eachindividual, usingestSpaceUse. By default this function isolates thecore range of each track (i.e. the 50% utilization distribution, orwhere the animal spends about half of its time) which is a commonly usedstandard (Lascelles et al. 2016). However, another quantile can be choseusing thelevelUD argument, or the full utilization distritbution canbe returned usingpolyOut=FALSE.

The resulting KDEs can be plotted using mapKDE, which ifpolyOut=TRUEshows each tracks’s core range in a different color.

Note: here we might want to remove the trip start and end points thatfall within theinnerBuff (i.e. 3 km) we set intripSplit, so thatthey don’t skew the at-sea distribution towards to colony.

tracks<-tracks[tracks$ColDist>3, ]# remove trip start and end points near colonyKDE<- estSpaceUse(tracks=tracks,scale=hVals$mag,levelUD=50,polyOut=TRUE  )mapKDE(KDE=KDE$UDPolygons,colony=colony)

At this step we should verify that the smoothing parameter value weselected is producing reasonable space use estimates, given what we knowabout our study animals. Are the core areas much larger than expected?Much smaller? If so, consider using a different value for the `scale`parameter.

The next step is to estimate how representative this sample of animalsis of the population. That is, how well does the variation in space useof this sample of tracks encapsulate variation in the wider population?To do this we can use therepAssess function. This function repeatedlysamples a subset of track core ranges, averages them together, andquantifies how many points from the unselected tracks fall within thiscombined core range area. This process is run across the range of thesample size, and iterated a chosen number of times.

To do this, we need to supply Utilization Distributions torepAssess(e.g., the output ofestSpaceUse) and the tracking data. We can choosethe number of times we want to re-sample at each sample size by settingtheiteration argument. The higher the number the more confident wecan be in the results, but the longer it will take to compute.

repr<- repAssess(tracks=tracks,KDE=KDE$KDE.Surface,levelUD=50,iteration=1,bootTable=FALSE)

The output is a dataframe, with the estimated percentage ofrepresentativeness given in theout column.

The relationship between sample size and the percent coverage ofun-tested animals’ space use areas (i.e. Inclusion) is visualized inthe output plot seen below.

By quantifying this relationship, we can estimate how close we are to aninformation asymptote. Put another way, we have estimated how much newspace use information would be added by tracking more animals. In thecase of this seabird dataset, we estimate that ~98% of the core areasused by this population are captured by the sample of 39 individuals.Highly representative!

Now, usingfindSite we can identify areas where animals areoverlapping in space and delineate sites that meet some criteria ofimportance. Using the core area estimates of each individual track wecan calculate where they overlap. Then, we estimate the proportion ofthe larger population in a given area by adjusting our overlap estimatebased on the degree of representativeness.

Here, if we have population size estimates, we can include this value(using thepopSize argument) to estimate the number of individualsusing a space, which can then use to compare against population-levelimportance criteria (e.g. KBA criteria). If we don’t have populationsize estimates to provide,findSite this will output a proportion ofthe population instead.

If you desire polygon output of the overlap areas, instead of a griddedsurface, you can indicate this using thepolyOut argument.

Site<- findSite(KDE=KDE$KDE.Surface,represent=repr$out,levelUD=50,popSize=500,# 500 individual seabirds breed one the islandpolyOut=TRUE  )class(Site)

If we specifiedpolyOut=TRUE, then the output will be of SimpleFeatures class, which allows us to easily take advantage of theggplot2 plotting syntax to make an attractive map usingmapSite!

Sitemap<- mapSite(Site,colony=colony)## in case you want to save the plot# ggplot2::ggsave("KBAmap", device="png")

This map shows the number or proportion of individual animals in thepopulation overlapping in space. The red lines indicate the ‘potentialsite’; that is, the areas used by a significant proportion of the localpopulation, given the representativeness of the sample of trackedindividuals. In this case, since representativeness is >90%, any areaused by 10% or more of the population is considered important (seeLascelles et al. 2016 for details). The orange dot is the colonylocation and the black line is the coastline.

Note: it is possible to set the threshold of importance at thepopulation level yourself, using thethresh argument. Just be awarethat this is a crucial threshold parameter that will need justifying ifyou are to eventually recommend a site for formal acknowledgement as animportant site for conservation.

Then, we can combine all the polygons within the ‘potentialSite’ area,and use, for example, the maximum number of individuals present in thatarea to assess whether it may merits identification as a KeyBiodiversity Area according to the KBA standard.

potSite<-Site %>%dplyr::filter(.data$potentialSite==TRUE) %>%    summarise(max_animals= max(na.omit(N_animals)),# maximum number of animals aggregating in the sitemin_animals= min(na.omit(N_animals))# minimum number using the site   )

If infindSite we instead specifypolyOut=FALSE, our output will bea spatial grid of animal densities, with each cell representing theestimated number, or percentage of animals using that area. So thisoutput is independent of the representativness-based importancethreshold.

mapSite(Site,colony=colony)

This plot shows the minimum estimated number of birds using the spacearound the breeding island.


Package reference

If you use any functions in this package for your work, please use thefollowing citation:

Beal, M., Oppel, S., Handley, J., Pearmain, E. J., Morera-Pujol, V.,Carneiro, A. P. B., Davies, T. E., Phillips, R. A., Taylor, P. R.,Miller, M. G. R., Franco, A. M. A., Catry, I., Patrício, A. R., Regalla,A., Staniland, I., Boyd, C., Catry, P., & Dias, M. P. (2021). track2KBA:An R package for identifying important sites for biodiversity fromtracking data. Methods in Ecology and Evolution, 12(12), 2372-2378.https://doi.org/10.1111/2041-210X.13713

Example data reference

Oppel, S., Beard, A., Fox, D., Mackley, E., Leat, E., Henry, L.,Clingham, E., Fowler, N., Sim, J., Sommerfeld, J., Weber, N., Weber, S.,Bolton, M., 2015.Foraging distribution of a tropical seabird supportsAshmole’s hypothesis of population regulation. Behav Ecol Sociobiol 69,915–926.https://doi.org/10.1007/s00265-015-1903-3

Other references

Lascelles, B. G., Taylor, P. R., Miller, M. G. R., Dias, M. P., Oppel,S., Torres, L., Hedd, A., Corre, M. L., Phillips, R. A., Shaffer, S. A.,Weimerskirch, H., & Small, C. (2016). Applying global criteria totracking data to define important areas for marine conservation.Diversity and Distributions, 22(4), 422–431.https://doi.org/10.1111/ddi.12411

Acknowledgements

Thanks to Annalea Beard for kindly sharing these example data for use inthe package.

This project has received funding from the European Union’s Horizon 2020research and innovation programme under the Marie Skłodowska-Curie grantagreement No 766417.

About

An R package that facilitates the identification of animal aggregations of potential conservation significance based on individual tracking data. Key functions include utilities to identify and summarise individual foraging trips, estimate utilisation distributions, and overlay distributions to identify important aggregation areas.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors6

Languages


[8]ページ先頭

©2009-2025 Movatter.jp