Repository navigation
Observation points are site starts with no counts: test how location and abundance bias the threshold evidence #294
Description
If we do it: the habitat thresholds and validation scores rest on a tested assumption about where fish were caught and how many, and we know whether either moves a verdict. If we never do: every gradient and width taken at an observation point assumes one fish at the downstream end of a site, which is not how sampling works, and the size and direction of the error stay unknown.
The data
- bcfishobs holds one presence record per species per site per date (mean 1.0 per point-date for BT, DV and CH; at most 7), located at a single point.
- For stream sampling, that point is usually the downstream end of a site 100–500 m long, and fish are caught throughout it. The records carry no site length and no count.
- 52 % of BT, DV and CH records (72 % of BT) carry an FDIS fish-collection ID in
source(FDIS Database: fshclctn_id …). That key reaches collection-level catch, effort, fished length and measured habitat.
What link assumes today
- Streams are broken at each retained observation (
break_order: observations). - Research: calibrate CH and BT gradient and channel-width thresholds from observations #284 reads the gradient and width of the one segment that starts at the point and runs upstream to the next break. Validate modelled habitat against fish observations per species and watershed group #283 does the same, with an optional
buffer_mthat credits habitat starting up to 100 m upstream (it moved capture by 0.4–2.8 points). - Segment length is set by neighbouring breaks, not by the site.
- Every statistic is presence-weighted: a site with one fish counts the same as a site with a hundred. That also holds after locations are collapsed to one per species × stream × metre.
- Research: calibrate CH and BT gradient and channel-width thresholds from observations #284's 100 m window-gradient check already diverges from the segment gradient in some evidence sets: BT pooled P95 is 0.131 by segment and 0.145 by window.
Input
A derived site table, built outside this repo and read with credentials, from provincial FDIS electrofishing visits keyed on fshclctn_id. Per site visit it holds:
- placement on the FWA network: the downstream point, plus the fished length as a site span;
- number caught per species and age class, with effort (fishing time and fished area);
- measured gradient and channel and wetted width.
Only aggregates are committed here.
Questions
- Site span. How different is the gradient over the fished span (and over 100, 200 and 500 m upstream where no length exists) from the gradient of the single segment link uses? Per evidence set, and especially in the 10–15 % band that BT rearing turns on.
- Measured vs segment gradient. Where a site has measured gradient, how does it compare with the segment's modelled gradient? This is the comparison that makes the evidence side's point-measure summaries decision-grade.
- Abundance. Compare presence-weighted and catch-per-effort-weighted BT and CH gradient P95s and selection ratios. In which direction, and by how much?
- Verdicts. Does any Research: calibrate CH and BT gradient and channel-width thresholds from observations #284 threshold verdict or Validate modelled habitat against fish observations per species and watershed group #283 capture figure move under 1–3? If not, document the assumption and its measured effect in
research/habitat_thresholds.mdandresearch/habitat_validation.md. If so, carry a site-span or abundance attribute in the evidence.
Scope limits
- Electrofishing only (no traps, angling or snorkel), so large rivers and lakes are under-represented. Adult CH especially.
- The export covers sampling to about 2022.
- The snapping error itself (distance to stream, match class) is a separate question.
Status (2026-10-01): parked before branching
Order decided: both, in sequence. First a small knowledge PR finishes the missing part of NewGraphEnvironment/knowledge#23. Then all of this issue runs in link on the finished table.
s3://fresh-bc/fdis/derived/fdis_sites.csv(knowledge#18,scripts/0230, 2026-09-26) already holds, per site visit: FWA placement (blue_line_key,downstream_route_measure,distance_to_stream),fished_length_m,fishing_time_s,area_m2,n_bt/n_dv/n_ch, zero catch (catch_status), and measured gradient and width.- What is missing is listed in knowledge#23.
- On the link side, the 100 m window in
data-raw/query_habitat_thresholds_obs.R(t_obs_w100) extends to 200 m, 500 m and the fished span.- The step-5 band re-check reads the kept
score284_*schemas throughdata-raw/habitat_variants_score.Randlnk_habitat_validate_band(). - The Validate modelled habitat against fish observations per species and watershed group #283 capture re-check goes through
lnk_habitat_validate(observations = ).
- The step-5 band re-check reads the kept
Activity