Syllabus
Animal Tracking in Conservation Biology — 2026-2027
Learning outcomes
By the end of the course you should be able to:
- Explain movement through the movement-ecology paradigm, and name the ecological drivers and trade-offs behind a path.
- Choose a tracking design — technology, fix interval, duration — for a species and a question, and state its biases.
- Handle spatial data in R — import, reproject, overlay, map — without hand-waving about coordinate reference systems.
- Turn fixes into a defensible trajectory: clean it, regularise it, and annotate it with environmental data matched in space and time.
- Quantify and classify movement with path descriptors, first-passage time and change-point methods, and test whether the result depends on the sampling.
- Simulate movement with random-walk models and use simulations as null models and as ground truth for estimators.
- Estimate space use with MCP, KDE, Brownian bridges and AKDE, and say which question each estimate answers.
- Fit and interpret resource and step selection functions, including integrated step selection analysis.
- Infer behavioural states with hidden Markov models, with covariates on the switching between them.
- Work reproducibly: scripted analyses that another person — including future you — can rerun.
The spine: the movement-ecology paradigm
Nathan et al. (2008) proposed that every movement path is the joint outcome of four components: the animal’s internal state (why move?), its motion capacity (how?), its navigation capacity (where to?), and the external factors acting on it. Tracking data record only the path. Every session opens by showing which of the four components its methods try to reach.
Eight sessions
| # | Session | Theory | Practical | Core packages |
|---|---|---|---|---|
| 1 | Foundations | paradigm; drivers and trade-offs; technologies; fix interval | load a track; fixes per day, daily distance, gaps | readr, ggplot2 |
| 2 | Spatial data in R | vector/raster; CRS and projections; the R spatial stack; remote sensing | sf verbs; NDVI; a publication map |
sf, terra |
| 3 | From fixes to trajectories | location error; bursts, gaps, truncation; regularity | clean, resample, interpolate; NDVI matched in time | amt, adehabitatLT |
| 4 | Quantifying movement | NSD, straightness, FPT, fractal dimension; behavioural modes | NSD classification; FPT; BCPA and fix rate | adehabitatLT, bcpa |
| 5 | Movement models | RW, CRW, BCRW, Lévy walks; simulation as a test | write a simulator; MSD; homing; a null for buffalo | circular |
| 6 | Home ranges | UD; KDE bandwidth; Brownian bridges; AKDE; stationarity | four estimators; variograms; ground truth | adehabitatHR, ctmm |
| 7 | Habitat selection | RSF, RSPF, SSF, iSSA; relative selection strength | fisher RSF and iSSA; ground truth | amt, survival |
| 8 | Hidden Markov models | HMMs; covariates on switching; the frontier | 2 vs 3 states; diel rhythm; pitches | momentuHMM |
Dates are on the calendar.
Structure of a session
| Minutes | What |
|---|---|
| 0–5 | Recap, and where today sits on the paradigm |
| 5–50 | Theory, with at least three pop quizzes |
| 50–55 | Break |
| 55–120 | Practical in R — you type, I circulate |
Session 8 ends with mini-project pitches: its practical is shorter (~50 minutes) to leave ~20 minutes for them.
Pop quizzes
Multiple-choice questions are embedded in the slides. Click an option and the deck reveals the correct answer and a short explanation. They are not graded — they exist so that you, and I, find out in real time whether an idea landed.
Practicals
Every session has a practical page with the full R code. Solutions are in collapsible blocks: try first, then unfold. The practicals are cumulative — the track you clean in Session 3 is the one you classify in Session 4 and model in Session 8, and the animal you simulate in Session 5 is the ground truth for Sessions 6 and 7.
The worked examples are starting points. Extending them to another animal, another dataset or another parameter value is exactly what the weekly submissions ask you to do.
Assessment
| Component | Weight | What |
|---|---|---|
| Reproducible report | 50% | Your mini-project, as a Quarto (or R Markdown) document |
| Weekly practical submissions | 30% | The “To hand in” item at the end of each practical |
| Participation | 20% | Quizzes, practicals, and your Session 8 pitch |
The report
- Pick one of the course datasets (or bring your own, with my approval).
- Pose one clear question the data can answer, and pitch it in Session 8.
- Produce a Quarto document (~4–6 pages rendered) with the question, the cleaning steps, one or two analyses from the course, the figures, and an honest paragraph on the limitations.
- Submit the
.qmdand the rendered HTML, so the analysis can be rerun.
Within the report: correctness of the analysis (40%), justification of the methodological choices (30%), reproducibility and code clarity (20%), clarity of figures and writing (10%).
Keeping your project in Git is strongly encouraged: a history of commits is the best evidence that your analysis is reproducible, and it is a skill worth having regardless of this course.
The commonest way to lose marks is to run an analysis whose assumptions the data violate — fitting an HMM to wildly irregular data, or estimating a home range for an animal that is not range-resident. Saying “this is a limitation because X” earns marks; silently ignoring it does not. If you can, test your method on simulated data with a known answer first.
Weekly submissions
Each practical ends with a short To hand in item: a figure, a table or a paragraph that extends the worked example. Submit it before the next session. They are marked for completion and understanding, not for polish.
Prerequisites
No prior R experience is assumed, but the pace is brisk. If you have never opened R, work through the setup page before Session 1 and budget an evening for the linked introductory tutorial. Basic ecology and statistics (regression, likelihood, the idea of a probability distribution) are assumed.
Office hours and contact
By appointment — write to giuliano.colosimo@uniroma2.it. For anything about the material itself (typos, broken code, a figure that does not render), please open an issue on GitHub.