Manually assigning weights to observations

21 views
Skip to first unread message

Annika Dean

unread,
Mar 4, 2026, 6:14:12 PM (13 days ago) Mar 4
to ctmm R user group
Hello! 

I am currently using ctmm to construct home ranges based on opportunistic survey data. I am really appreciating the ease of including hard boundaries into the estimate but hoping to also include uneven sampling effort in this model like done in the literature noted below. Is there a way to incorporate manual weighting in this package? I see previously studies have used ArcMap or the R spatialEco package to assign manual weights but I was enjoying the ctmm package. 

Horne, J. S., Garton, E. O., & Sager-Fradkin, K. A. (2007). Correcting Home-Range Models for Observation Bias. The Journal of Wildlife Management, 71(3), 996–1001. https://doi.org/10.2193/2005-678

Bennington, S., Guerra, M., Johnston, D., Currey, R., Brough, T., Corne, C., Johnson, D.,
Henderson, S., Slooten, E., Dawson, S., & Rayment, W. (2023). Decadal stability in the distribution of bottlenose dolphins in Dusky Sound/Tamatea, New Zealand. New Zealand Journal of Marine and Freshwater Research, 57(3), 411–424. https://doi.org/10.1080/00288330.2022.2038214

Thank you!
Annika 

Christen Fleming

unread,
Mar 4, 2026, 9:39:29 PM (12 days ago) Mar 4
to ctmm R user group
Hi Annika,

You should be able to feed a vector of manual weights into the weights argument of akde().

Best,
Chris

Annika Dean

unread,
Mar 14, 2026, 4:49:44 PM (3 days ago) Mar 14
to ctmm R user group
Hi Chris, 

Thank you for the speedy response! I just ran a test on one individual where each observation was weighted by the survey effort in the 100m^2 area the observation fell in (function call for akde below). I compared the output of akde home range estimates with weighted observations to unweighted observations and there was no difference in the area estimates for these two methods. How are the weights incorporated in the estimates? 

kde_weighted <-
  akde(
    telem_individual_a,
    SP = land_sp,
   
    # Locations expected to be outside of the polygon:
   
    SP.in = FALSE,
   
    # Don't include auto-correlation:
   
    CTMM = individual_a_iid_fit_list,
   
    # Include manual weights:
   
    weights = points_for_telem %>%
      filter(id == "individual_a") %>%
      pluck("weights_standardized")
  )

Thanks again!
Annika 

Reply all
Reply to author
Forward
0 new messages