Applications to detect stopover sites

64 views
Skip to first unread message

Adelaida Pérez Cadavid

unread,
Apr 24, 2024, 4:03:43 PMApr 24
to ctmm R user group

Hello Chris,

I am currently working with large datasets of migrating raptors and would like to know if this package has been applied or could be modified to detect stopover sites.

I greatly appreciate any help you can offer.

Best,

Adelaida

adrian...@gmail.com

unread,
Apr 25, 2024, 3:47:12 PMApr 25
to ctmm R user group
Hola Adelaida,
I used occurrence() for this purpose with migratory TUVU's. I also tried a recursion analysis but you may need to define some threshold for space and time. You can try the recursion analysis, not in ctmm but in recurse
Best,
Adrian

Adelaida Pérez Cadavid

unread,
Apr 25, 2024, 7:47:22 PMApr 25
to ctmm R user group

Hola Adrian,

Thank you very much for your response. I have already reviewed the resource you sent me, although I couldn't access the supplementary material, but I am waiting for a response from the authors. In the meantime, I am trying with 'occurrence()' following this script.

 

# Load package and data

library(ctmm)

data(buffalo)

Cilla <- buffalo$Cilla 

GUESS <- ctmm.guess(Cilla,interactive=FALSE)

FIT <- ctmm.fit(Cilla,GUESS)

# Compute occurence distribution

UD <- occurrence(Cilla,FIT)

# Plot occurrence UD

plot(UD,col.level=NA)



However, I am having trouble reading the data as it is showing this error

ts<- read.csv("C:/STOPOVER/BRHAHMSLAST.csv")

data<-as.data.frame(ts)

> DATA <- data$Jennifer

> DATA

NULL

>as.telemetry(DATA,timeformat="%d%m%Y%H:%M:%S",timezone="UTC",projection=NULL,datum="WGS84", dt.hot=NA,timeout=Inf,na.rm="row",mark.rm=FALSE,keep=FALSE,drop=TRUE)

Error in UseMethod("as.telemetry") :

  no applicable method for 'as.telemetry' applied to an object of class "NULL"

 

Any suggestions?

Many thanks

Adelaida

adrian...@gmail.com

unread,
Apr 26, 2024, 11:21:45 AMApr 26
to ctmm R user group
Hola Adelaida,
I think the error is because the data input format. If the data is already in movebank format, load it as.telemetry rather than csv. 

If you still need to load as csv, you need to define the timestamp format before passing it as.telemetry. I would try this


ts<- read.csv("C:/STOPOVER/BRHAHMSLAST.csv")

ts$timestapm<-as.POSIXct(ts$timestamp, format =%Y-%m-%d %H:%M, TZ="UTC") #change timestamp format as needed

ts<-as.telemetry(ts)

DATA<-ts$Jennifer


Sandra Cuadros

unread,
Apr 26, 2024, 6:42:17 PMApr 26
to ctmm R user group
Hi both,

I've used occurrence in the past, but I don't see how this can be applied to identifying stopovers? To the best of my knowledge, occurrence only gives you a model of high concentration of points and a model with a probability of use around these points, but how could you determine this to be an official stopover based on that? I would imagine you need some sort of threshold, otherwise its somewhat arbitrary?

adrian...@gmail.com

unread,
Apr 29, 2024, 11:44:23 AMApr 29
to ctmm R user group
Sandra,
Yes, you would need to stablish thresholds. occurrence() provide a UD and you can use the isopleth of your choice. Using the standard 50% and 95% isopleth you can have an idea of where this stopover are. See figures attached with an exampleusing David, a migrant vulture. In Figure David 1, you can see the full migratory path for David during the outbound migration of 2015. Figure David 2 is a zoom in of the migratory path, black and red lines correspond to the 50% and 95% occurrence contours. Figure David 3 shows the contours and the telemetry fixes, here you can see a concentration of points and probability of use around these points as you said. Of course, the duty-cycle of your transmitters is going to affect any results. In this case, the transmitter was programmed to record 1fix hour between 05:00-10:00. In Figure David 4, all the points withing the 50% occurrence contour span three days.

It is probably not the best method but I think other methods such as first passage time and recursion would require setting some arbitrary threshold in defining the search area. Other option could be a segmentation analysis and then estimate space use in those areas where the segmentation analysis is suggesting range residency behavior. 

Best,
Adrian
David3.jpg
David4.jpg
David2.jpg
David1.jpg

Jesse Alston

unread,
Apr 29, 2024, 1:34:14 PMApr 29
to adrian...@gmail.com, ctmm R user group
Yes, unfortunately there is no good way to delineate stopovers on a migration path right now. This is something we are working on, but is likely a few years out. Clustering algorithms like folks use to detect kill sites might be your best bet at the moment.

Because the areas of occurrence() are explicitly dependent on the sampling regime, and individual stopover sites are likely to contain little data on movement paths, occurrence() is not great for estimating the areas of stopover sites, either. If the animal is range-resident within stopovers and your effective sample sizes are >2-3, I would recommend running AKDEs on individual stopovers, with bootstrapping if ESSs are <5.

If all you are interested in is animal resource use within stopovers, though, occurrence() might be useful for estimating that.

Good use-cases for occurrence() are explained in more detail in this preprint: https://doi.org/10.1101/2022.09.29.509951

Jesse

--
You received this message because you are subscribed to the Google Groups "ctmm R user group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ctmm-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ctmm-user/f4178fd0-9cdb-4c63-a14f-6c7823aad799n%40googlegroups.com.


--

Adelaida Pérez Cadavid

unread,
Apr 30, 2024, 3:14:49 PMApr 30
to ctmm R user group

Hello everyone,

It has been quite enriching for me to read all your ideas, as well as to know the applicability of each of these methodologies and how they could help delineate a stopover. It's also interesting to know the discussions surrounding the conceptual definition of stopovers within movement models.

In the project I am working on, my main question is related to the use of resources on stopovers, so from what you have shared, it seems that 'Occurrence' could be a viable option, despite the inherent arbitrariness in defining the threshold. The question of how to define a stopover is quite interesting, especially considering species-specific variations in movement patterns, variations in telemetry data resolution (in this case), and the model that best fits.

Thanks, Jesse, for sharing your work. It's quite interesting to learn about these conceptual clarifications, the discussion, and examples of its applicability.

Thank you very much for your responses.

Best,

Adelaida

Christen Fleming

unread,
May 1, 2024, 12:38:22 AMMay 1
to ctmm R user group
Hi All,

For estimating the stop-over area, the occurrence distribution would be a poor choice, but for just identifying when and where stopovers are (i.e., their modes) the occurrence distribution would do a much better job, though it's not really built for that task and requires an arbitrary threshold, as mentioned. After the stopover period is segmented out, then you should switch to AKDE on that segment, as Jesse has detailed.

Best,
Chris
Reply all
Reply to author
Forward
0 new messages