Lower DOF with mean UD

40 views
Skip to first unread message

Amelia J

unread,
Jun 7, 2025, 11:03:09 AMJun 7
to ctmm R user group
Hi there,

I have split my GPS data into months for all 11 individuals, and excluded months where the data was not range resident (based on segmentation). I created unique individual-month-year IDs (e.g Bob_Jan21, Bob_Apr22, Zac_Aug23, etc.) - creating 82 IDs.

For every unique individual-month-year ID I calculated UDs, and then after that I used mean() to calculate the mean UDs per individual, to get an idea of their UD across the entire tracking period. While the UDs of the 82 IDs all had plenty of DOF (>50), the mean UD for each of the 11 individuals typically has DOF < 5 each.

Apologies if this is a silly question, but why have the degrees of freedom become drastically smaller? Does the DOF now represent the effective sample size of UDs available to that individual, rather than the effective sample size of datapoints?

I assume the only 'solution' is bootstrapping to try account for the low DOF values but I just wanted to understand first where those values are coming from.

My code:

# Fit models
fit_list <- list()
for (name in names(telemetry)) {
  data <- telemetry[[name]]
  GUESS <- ctmm.guess(data, interactive = FALSE)
  fit_list[[name]] <- ctmm.select(data, GUESS, method = "pHREML")
}

# Calculate AKDEs in one call
UDs_all <- akde(telemetry, fit_list)

# Average UD by individual ID
individual_ids <- sapply(names(UDs_all), function(x) sub("_[^_]+$", "", x))
UDs_by_individual <- split(UDs_all, individual_ids)
mean_UDs <- lapply(UDs_by_individual, mean)

# Output for one individual
DOF[area] for individual-month-year UDs:
SLX1501_Apr22 =  193
SLX1501_Aug22 = 212
SLX1501_Jul22 = 441
SLX1501_Jun22 = 246

DOF[area] for mean UD:
SLX1501 = 1.4

Any help would be really appreciated :) 
Thanks so much!

Christen Fleming

unread,
Jul 27, 2025, 12:54:21 PMJul 27
to ctmm R user group
Hi Amelia,

In the default mean() with sample=TRUE, the uncertainty relations assume a larger number of unknown ranges that weren't sampled. If you use sample=FALSE, then the uncertainty relations assume that you sampled all of the ranges of that individual. I think this is the issue - the number of unique ranges per individual with sample=TRUE.

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