Low DOF

44 views
Skip to first unread message

Kelsey C

unread,
Mar 13, 2026, 6:43:25 PMMar 13
to ctmm R user group
Hi all, 

Chris, I was first introduced to your package at the TWS conference last year. I am excited to try to implement it on my data!

I am working on collared ungulates that show highly annual migratory behaviour. We were hoping to fit ADKE for the different seasons (i.e., winter, summer, calving). 

My data are not reaching an asymptote, or they appear to reach one, but the model has a very poor DOF. I have filtered the data to these seasonal dates, looking closely at an NSD plot to find periods where they are not moving much, indicating each season they are in.

Below is an example of what I am working with. We can see, based on the NSD, that this individual is not moving around much and looks like they would be in winter residency. The dotted lines show where I cut the data (essentially Jan 1 to March 31)
NSD plot.jpeg
The plot seems to show they are moving around this area and not drifting

plot(tel_winter_list[[2]], col=rainbow(length(tel_winter_list[[2]])))
plot.jpeg

This is the resulting variogram, which looks like a weak asymptote 

plot(variogram(tel_winter_list[[2]]))
variogram_model.jpeg
But atlas, the DOF is 3.39. 

guess <- ctmm.guess(tel_winter_list[[2]], interactive = FALSE)
winter_fit <- ctmm.select(tel_winter_list[[2]], guess)

$name
[1] "OUF anisotropic"

$DOF
      mean       area  diffusion      speed
  3.393894   3.931521 294.348787 107.354005

$CI
                                        low        est       high
area (square kilometers)          86.471551 322.135496 709.909469
τ[position] (days)                 4.953645  18.736642  70.869389
τ[velocity] (minutes)             32.367775  42.999965  57.124623
speed (kilometers/day)             7.108179   7.850595   8.592105
diffusion (square kilometers/day)  1.615627   1.817330   2.030725

Is there anything I can be doing better here to improve this? Is it still ok to use this model for an ADKE with the caution that these are largely underestimated, or would an ADKE with such poor DOF be unusable? I have tried bootstrapping, but as the data is being split per individual, per year, per season, the pure volume of ADKEs needed makes bootstrapping computationally impossible. 

Ultimately, I want to make sure my use of this model in an ADKE would be acceptable to look at space use during these seasons, even with a low DOF. I plan on pooling all adkes per season per individual using pdke, and then combining all individuals eventually using pdke as well to get population-level space use. 

Absolutely any advice or insight would be greatly appreciated. Thank you!

Jelena Belojevic

unread,
Mar 27, 2026, 5:16:19 AM (10 days ago) Mar 27
to ctmm R user group
Hi, Kelsey and Chris,

I am so grateful on such amazingly annotated package and functions!

I have an exact problem with DOF as Kelsey and thought that it's best to write here as a follow up.

In my example I have an individual with around 400 fixes over 8 days. They are tagged with GPS tags with 5 mins sampling frequency between locations for >200 locations (the rest is coarser). It's nothing new that their movements are autocorrelated since they move very little/make small steps while having chicks, but DOF = 2 seems very low and unreliable (my AKDE confidence intervals for this female are wide!). I am wondering (like Kelsey) if I can still somehow make use of these individuals for calculating population home ranges or is it better to exclude these individuals. Excluding seems like a shame since their tracks look biologically informative.

Thanks a lot in advance, and below is my example: 

GUESS <- ctmm.guess(tel_one, interactive = FALSE)
FIT <- ctmm.select(tel_one, GUESS, trace = 3)
summary(FIT)

$name
[1] "OUF anisotropic"

$DOF
      mean       area  diffusion      speed
  2.380897   2.548236 141.908060 440.961357

$CI
                                low       est      high
area (square kilometers)  0.3684202  2.163059  5.513789
τ[position] (days)        0.4843412  2.902587 17.394791
τ[velocity] (minutes)    11.7181571 13.605725 15.797343
speed (kilometers/day)    2.7672348  2.902716  3.038112
diffusion (hectares/day)  6.5771232  7.809058  9.145182

wAKDE_one <- akde(tel_one, FIT, weights = TRUE, fast = FALSE)
summary(wAKDE_one)
$DOF
     area bandwidth
 2.548236  3.558240

$CI
                               low      est     high
area (square kilometers) 0.3822667 2.244355 5.721017

Jelena Belojevic

unread,
Mar 27, 2026, 5:46:29 AM (10 days ago) Mar 27
to ctmm R user group
P.S here are some screenshots of variograms and data 
veriogram_example_zoomed_out.png
data.png
fitted_example.png

Christen Fleming

unread,
Apr 5, 2026, 12:39:59 AM (yesterday) Apr 5
to ctmm R user group
Hi Kelsey & Jelena,

If bootstrapping is too slow, then you could report that you expect there to be negative bias on the order of 1/DOF^2 percent. I think its better to report something than not.
The AKDE bias will propagate into PKDE bias, and you can report that as well.

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