Module 14 — Ecology, Telemetry, and the Honest Frontier
Part III · Modern Practice Across Domains · Status: Draft v0.1 Scope: moveHMM telemetry, activity-recognition baselines, and unverified domains · Verdict: thriving · Prerequisites: Module 00
Overview
A telemetry HMM turns an animal track into a sequence of behavioral states. Each GPS fix yields a step length and a turning angle, and hidden states such as foraging and traveling emit different movement signatures. You fit the model, decode the states, and read behavior off the map without watching the animal.
This module carries a split verdict, stated up front. Animal-movement modeling with moveHMM is thriving: a peer-reviewed method with a CRAN-maintained package (Michelot et al. 2016, Methods in Ecology and Evolution; CRAN project page, retrieved 2026-09-17). Human activity recognition from wearable sensors is legacy-but-alive: HMMs survive only as lightweight embedded baselines while the 2023-2025 literature is dominated by convolutional, recurrent, and transformer models. Four further domains are unverified and listed as open questions, never as practice.
In this module you learn the movement-ecology success, the baseline-only survival in activity recognition, the checklist of domains this curriculum has not passed, and the recipe for running your own domain-status pass.
The header verdict reads thriving because the module’s primary surveyed domain, movement ecology, clears the thriving bar. Read it as shorthand for the split stated here: thriving for telemetry, legacy-but-alive for activity-recognition baselines, unverified for everything on the checklist. A single label cannot hold three verdicts, so this paragraph carries the full picture.
How It Works
Movement data arrives as a regular time series of positions, and each consecutive pair of fixes produces two observations: how far the animal moved and how sharply it turned. The modeling assumption is that behavior persists across fixes, so a hidden Markov chain over behavioral states with state-dependent step and turn distributions fits naturally. Short steps with wide turns spell foraging; long steps with narrow turns spell traveling.
How to read this: boxes run from raw fixes to ecological conclusions, arrows show the pipeline order, and the final box names the package that implements the middle three stages.
flowchart TD
F[GPS fixes] --> S[Step length turning angle]
S --> M[Fit state distributions]
M --> D[Decode behavioral states]
D --> E[Ecological conclusions]
M --> P[moveHMM package]
D --> PThe pipeline is short and every stage is inspectable, which is why ecologists trust it. You see the fitted distributions per state, you see the decoded track colored by behavior, and you can argue with both. A black-box classifier cannot offer that argument surface.
| Domain | Verdict in this module | Evidence |
|---|---|---|
| Animal telemetry | thriving | Peer-reviewed method, CRAN-maintained |
| Activity recognition | legacy-but-alive | Baseline-only in recent literature |
| Epidemiology and others | unverified | No primary-source pass completed |
[!NOTE] Step length is the distance between consecutive fixes and turning angle is the change in heading. moveHMM models steps with gamma or Weibull laws and turns with circular laws such as the von Mises (Michelot et al. 2016, Survey).
What Thrives and What Is Only a Baseline
moveHMM is the thriving case. Michelot and colleagues published the method with its R package in Methods in Ecology and Evolution in 2016, and the package remains CRAN-maintained with documentation and vignettes on its CRAN page (retrieved 2026-09-17). Peer-reviewed method plus maintained distribution channel plus continued applied use is exactly the thriving bar, and movement ecology clears it.
The structural fit explains why. Telemetry datasets are small, irregular, and expensively collected; a two- or three-state HMM trains where deep networks starve. The states mean something a biologist already believes in, and the emission distributions are checkable against field knowledge. Small data plus meaningful states plus interpretable emissions is HMM home ground.
There is also an institutional reason worth naming. Ecology publishes methods with maintained R packages as first-class outputs, and CRAN enforces documentation and checks that keep packages alive. A domain whose publication norms reward maintained software will keep its HMM tooling working. Domains without that norm let equivalent code rot on personal web pages.
Human activity recognition from body-worn inertial sensors is the contrast case. The 2023-2025 literature surveyed in this curriculum’s 2026-09-17 pass is dominated by convolutional, recurrent, and transformer architectures, with HMMs appearing as lightweight or embedded baselines rather than competing methods. That is the legacy-but-alive pattern: named niche, real use, no flagship claim.
The baseline role is honest work, not a consolation prize. Every activity-recognition paper needs a cheap interpretable reference point to prove its deep model earns its complexity, and HMMs fill that slot because they train fast and their failures are legible. Baselines that every paper cites are infrastructure, even when they never win.
The toy below decodes five movement steps into forage and travel states with Viterbi over hand-set scores. Real moveHMM fits its distributions by maximum likelihood; your toy takes them as given and teaches the decoding half.
# Toy telemetry decoder: 5 steps into FORAGE vs TRAVEL.
states = ["FORAGE", "TRAVEL"]
start = {"FORAGE": 0.5, "TRAVEL": 0.5}
trans = {"FORAGE": {"FORAGE": 0.8, "TRAVEL": 0.2},
"TRAVEL": {"FORAGE": 0.3, "TRAVEL": 0.7}}
emit = [ # short steps favor forage, long ones travel
{"FORAGE": 0.8, "TRAVEL": 0.2},
{"FORAGE": 0.7, "TRAVEL": 0.3},
{"FORAGE": 0.2, "TRAVEL": 0.8},
{"FORAGE": 0.1, "TRAVEL": 0.9},
{"FORAGE": 0.6, "TRAVEL": 0.4},
]
def decode_track(emissions):
prev = {s: (start[s] * emissions[0][s], [s]) for s in states}
for frame in emissions[1:]:
nxt = {}
for tag in states:
back = max(states,
key=lambda s: prev[s][0] * trans[s][tag])
score = prev[back][0] * trans[back][tag] * frame[tag]
nxt[tag] = (score, prev[back][1] + [tag])
prev = nxt
return max(prev.values(), key=lambda item: item[0])[1]
print(decode_track(emit))
['FORAGE', 'FORAGE', 'TRAVEL', 'TRAVEL', 'TRAVEL']
The output shows the first two frames decoded as forage and the rest as travel. Note the final frame: its emission mildly favors forage (0.6 versus 0.4), yet transition persistence keeps it in travel. That override, context beating a weak local signal, is exactly what the transition table is for. Remove the persistence by flattening transitions and watch the decoded track flicker. That flicker-versus-persistence trade is the same regime-lag problem finance modules fight in Part IV.
[!WARNING] State labels are your interpretation, not the model’s discovery. The fit returns state 1 and state 2; calling them forage and travel is justified only by the emission distributions matching field knowledge.
The Unverified-Domains Checklist and How to Check Them
Four domains carry formulations but no verdict in this curriculum, because no primary-source pass is complete. Epidemiology: HMM-style outbreak and transmission-state models exist in the literature. Cybersecurity anomaly detection: sequence-of-events formulations with hidden compromise states exist. Music and audio alignment: score-following with HMM ancestry exists. Meteorology: regime and precipitation-state formulations exist. Every item on this list is unverified, and repeating any of them as current practice would be fabrication.
The honest move is a recipe you can run yourself. First, locate the project’s own channel: package repository, documentation site, or vendor page, never a blog summary. Second, date-stamp everything: retrieval date plus the project’s own release or publication date. Third, demand dated production evidence: a maintained release, a deployment note, or an applied paper with real data. Fourth, assign one of the five fixed labels and write the exclusion log for everything you rejected. Fifth, publish the retrieval date beside the verdict so the next reader knows when it expires.
Run one domain per sitting and stop at the first missing link. A method paper with no maintained implementation is background, not practice. A maintained package with no dated applied use is infrastructure awaiting evidence. Only the full chain of paper, package, and dated use earns thriving, and most candidate domains will fail somewhere along it.
Keep an exclusion log as you go, because rejections are findings too. Note each rejected source with the contract clause it violates: a tutorial without deployment evidence, a paper without an implementation, a vendor claim without a date. Your log is what lets the next reader trust that unverified means checked-and-incomplete rather than never-examined.
[!TIP] Start your first pass with the CRAN page of any ecology-adjacent package: CRAN shows version history, maintenance status, and vignettes on one page, which makes it the fastest complete evidence chain to practice on.
Why It Survives or Died
Movement ecology keeps HMMs because telemetry data is scarce and expensive while behavioral states are few, persistent, and already meaningful to biologists, so a small interpretable model trains where neural models starve; activity recognition demoted them because abundant labeled sensor data plus an accuracy metric lets deep architectures win, leaving HMMs the cheap embedded baseline rather than the method of record.
Testing It Honestly
Re-verify the thriving half by opening the moveHMM CRAN page and confirming maintained status, documentation, and vignettes (retrieved 2026-09-17 here; use your own date), then confirm the Michelot et al. 2016 paper anchors the method in peer review. Re-verify the baseline half by sampling recent human-activity-recognition literature and confirming HMM placement: cited as baseline or embedded alternative, not as the competing method. Record both searches with dates. The moveHMM side should take minutes; the literature-sampling side takes the hour, and both belong in your notebook with retrieval dates attached.
Treat the hour you spend sampling activity-recognition papers as calibration for every other verdict in Part III. Once you have seen what baseline-only placement looks like in the wild, you will recognize the pattern instantly in the next domain you survey.
For each checklist domain, run the recipe above and write the verdict down even when it fails. A dated unverified that stays unverified after your pass is a successful honest result, not a wasted hour. The frontier advances one primary-source pass at a time, and your notebook entry for a single domain is a genuine contribution.
Hands-On Project
Fit a two-state movement model to a fifty-fix track you simulate yourself with known state-dependent step distributions, then decode and score state recovery. Reproduction card: data source is your own simulation script with fixed seed 7 (commit it); library and version are whatever you fit with, recorded exactly (expected: R moveHMM from CRAN or your own Python Viterbi); expected output is state recovery above 80 percent on well-separated states and graceful degradation as you shrink the separation.
Then pick one checklist domain and run the five-step recipe on it for one hour. Write the verdict, the sources checked with retrieval dates, and the exclusion log. Your deliverable is the simulation experiment plus a one-page domain-status note, which together practice both halves of this module: using a thriving tool and policing an unverified frontier.
Key Takeaways
- Telemetry HMMs turn step lengths and turning angles into decoded behavioral states.
- moveHMM is thriving: peer-reviewed method plus CRAN-maintained package (retrieved 2026-09-17).
- Small expensive datasets with meaningful persistent states are HMM home ground.
- Activity recognition keeps HMMs only as lightweight baselines against deep architectures.
- Epidemiology, cybersecurity, music alignment, and meteorology are unverified: formulations exist, verdicts do not.
- The five-step recipe turns any frontier domain into a dated, labeled verdict.
- State labels are interpretations justified by emissions, never model discoveries.
- A failed verification pass honestly recorded beats an asserted verdict every time.
References
- Michelot, Langrock, and Patterson, “moveHMM: an R package for the statistical modelling of animal movement data using hidden Markov models,” Methods in Ecology and Evolution 2016 (Survey; method anchor).
- moveHMM CRAN project page, documentation and vignettes (Survey; retrieved 2026-09-17).
- Human activity recognition literature 2023-2025, convolutional/recurrent/transformer dominance with HMM baselines (Survey; sampled in the 2026-09-17 pass; re-sample before print).
- Zucchini, MacDonald, and Langrock, Hidden Markov Models for Time Series, 2nd ed., CRC Press 2016 (Mechanics; state decoding and model-checking background).
- Exclusion log: no primary-source pass was completed for epidemiology, cybersecurity, music alignment, or meteorology; candidate papers seen during scoping were not admitted as status evidence.