Error Modelling, no HDOP

65 views
Skip to first unread message

abern...@gmail.com

unread,
Apr 14, 2023, 3:16:24 PM4/14/23
to ctmm R user group
Hi Chris, I have a question about the error modelling step in the CTMM workflow.  My species of interest are caribou and wolves that move vast distances, and my sampling frequency ranges from 1hr to 3 locations a day.  I am using Telonics GPS/Irridium collars (Gen 4), however, I do not receive an HDOP value with each location.  I do have access to calibration datasets, but without the HDOP value, It my understanding that I can't calibrate the error (is that correct). It's not clear why we don't receive HDOP values, we do receive the GPS horizontal error metric. 

As my animals are relatively big movers (compared to an estimated GPS error of around 10m), I thought it was reasonable to follow the vignettes instruction to fit with uncalibrated data under a prior.  I used the 10 recommended for GPS data (is this a unitless number, or does it mean 10m).  I used the 2 functions below to then convert the data to a trajectory, and fit models (the whole workflow works with lists as i have numerous animals).  
#convert to Data.trj lists
prepare_ctmm_data<-function(x){
  #convert to movestack
  DATA<-move(x=x$longitude,y=x$latitude,
             time=as.POSIXct(x$observationDate, format="%Y-%m-%d %H:%M:%OS", tz="UTC"),
             proj=CRS("+proj=longlat"), data=x,animal=x$filter)
  #convert to ctmm telemetry object
  DATA.trj<-as.telemetry(DATA,timeformat = "auto",timezone="UTC", projection=TPEQD)
  #assign UERE error priori
  for (e in 1:length(DATA.trj)){
    print(paste("applying error prior to Data.trj object",e))
    uere(DATA.trj[[e]])<-10
    UERE<-uere(DATA.trj[[e]])
    UERE$DOF[]<-2
    DATA.trj[[e]]@UERE<-UERE
  }
  return(DATA.trj)
}

fitting_function<-function(i){
  B.GUESS<-ctmm.guess(DATA.trj[[i]],CTMM=ctmm(error=T,range=FALSE),interactive=F)
  ctmm.select(DATA.trj[[i]],B.GUESS,verbose=F,trace=2)}

My questions:
-is this a reasonable approach?  
- As you know (being the author) the appendix of "A comprehensive framework for handling location error in animal tracking data" provides the following for the Telonics gen 4 sensors.  Based on this, should I update my code to  uere(DATA.trj[[e]])<-6.9? 

Thanks!  Robin

Screenshot 2023-04-14 at 12.53.56 PM.png

Christen Fleming

unread,
Apr 15, 2023, 5:13:37 PM4/15/23
to ctmm R user group
Hi Robin,

With, at most, 1-hour data on caribou and wolves, I really doubt that you will need to worry about location error unless the occasional fix comes in very quickly after another.

But if necessary, I would try with and without the horizontal error estimates. I have seen those error estimates work well on some Telonics datasets. You can perform model selection (and calibration) on the horizontal error estimates versus the homoskedastic error model. At present, you can perform model selection on any univariate, linear model of the location error's standard deviation, which could be HDOP, or a horizontal error estimate, or a function of the number of satellites, or nothing. You just have to make sure that the horizontal error estimate is detected and imported correctly by as.telemetry().

Calibration data aside, for no HDOP value, I would use ~20 meters as the "point estimate" of the prior. The units of this value depend on the units of the predictor being scaled. So if you import the horizontal error estimate, then that already has units of meters, and you would use something like ~1 (unitless) for the "point estimate".

If you believe your collars are functioning the same as those in the manuscript, you could actually pull those data from Movebank for the calibration data. But give that you have calibration data and that it's formatted differently, I would use yours instead.

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