Skip to content

tidycreel

8.0.0Package record

Tidy Interface for Creel Survey Design and Analysis

0packages depend
168downloads / year
90.1%test coverage
12/12flavors OK

Overview

About

Provides a tidy, pipe-friendly interface for creel survey design, data management, estimation, visualisation, and reporting. A creel survey interviews anglers on site to estimate fishing effort, catch, and harvest for a water body. Built on the 'survey' package for design-based inference, with support for instantaneous, bus-route, ice, camera, and aerial designs. Catch-rate estimators follow Hoenig, Jones, Pollock, Robson and Wade (1997) doi:10.2307/2533116; bus-route designs follow Kinloch, McGlennon, Nicoll and Pike (1997) doi:10.1016/s0165-7836(97)00068-4.

Changes in 8.0.0

Breaking changes

  • estimate_effort_aerial_glmm() now reports a total across the sampled days, the same basis estimate_effort() uses, instead of a single average day (#363). The two functions could be called on one design and returned quantities that differed by a factor of the number of sampled days, with nothing in either signature or either result to say so. On the package's own aerial fixture that was 378.6 against 5092.5 — a gap a reader would naturally attribute to the diurnal correction the GLMM exists to apply. It is now 4728.6 against 5092.5, and the 7% between them is that correction. target = "mean_day" restores the single-day figure for anyone who wants it, and the basis is recorded on the result as effort_target, so which question was answered can be read off the object rather than inferred. Both targets are expectations, and both now carry a retransformation factor the previous code did not apply. The fitted curve is a fixed-effects prediction — the day whose random intercept is zero — which on a log link is the *median* day, not the mean. Reporting it as a mean understates by exp(sigma^2 / 2): 4% on the package fixture, more where days vary more. A mean_day estimate is therefore about 4% higher than the old return value, not identical to it. The standard error scales with the expansion, so the CV is unchanged. It does not carry the uncertainty in the variance component itself, which makes it mildly optimistic; that is documented rather than hidden, and closing it needs a variance method neither the delta nor the bootstrap path offers. This does not make the GLMM usable by the total estimators. They take no effort argument, and every design carries strata, so they always multiply per-stratum effort by per-stratum CPUE while this function returns one ungrouped row. Connecting the two needs stratified GLMM estimation, which is a modelling change and is tracked separately.
Show all changes in 8.0.0Hide the rest of the changes in 8.0.0
  • estimate_effort_aerial_glmm(boot = TRUE) now returns NA confidence interval bounds when a multiplier's uncertainty was declared unknown, instead of an interval that quietly left it out. The total carries uncertainty from three places: the GLMM fit, the visibility correction, and the angler-to-people ratio. Declaring one unknown — visibility_correction = "none", or an NA angler_ratio_se — makes the bootstrap skip that component, because there is nothing to draw from. The standard error already went NA for precisely that reason. The interval did not: it was built independently from the bootstrap quantiles and kept a value. What that value described was an interval conditional on the unknown multiplier being exact. Measured, with the same data and the same seed: declaring the visibility correction unknown and declaring it known with zero uncertainty produced bit-for-bit identical bounds of [322.920, 449.732], distinguished only by se being NA in one and 33.98 in the other. "Never studied" was reported exactly as "studied, and found no uncertainty" — the one equivalence this package must never assert. The interval now goes NA alongside the standard error. The delta path already behaved this way, because its interval is derived from the SE and inherited the NA for free; the bootstrap path built quantiles independently and had to say so explicitly. The two paths now agree. The point estimate is untouched — this is a reporting change, not an estimation one. To get an interval back, state the correction's uncertainty (visibility_se, angler_ratio_se). Declaring it known and zero is a claim you can make deliberately; it is just no longer what silence means.

Documentation

  • Examples no longer contain commented-out code. The estimate_total_catch(), estimate_total_harvest() and estimate_harvest_rate() examples now run the lines they previously only showed, and get_site_contributions(), which had no runnable example, now has one. CRAN's review of 7.0.0 asked for this.
  • The validate_incomplete_trips() example and the incomplete-trips vignette restore the equivalence-threshold option they change.
  • Four vignettes described behaviour the package does not have. Each was found by running the vignette and reading its own output, not by reading the source. incomplete-trips.Rmd told a reader whose validation had just **failed** to "stick with use_trips = "complete" (default)". The default is NULL, and on a roving design — which is what that vignette is about — an unspecified use_trips selects the all-trip mean-of-ratios estimator of Hoenig et al. (1997), not complete trips. Following the parenthetical produced the estimator the line above it warned against. Measured on the example data, catch rate differs by 30% between the two (mean-of-ratios-cpue at 1.257 against ratio-of-means-cpue at 0.967). The same claim appeared twice more, once in a code comment. All three are corrected, and a new section demonstrates the routing with a runnable example rather than asserting it. aerial-glmm.Rmd compared a one-day GLMM total against a twelve-day total in a table headed "side-by-side comparison", and attributed the resulting 13.5x gap to the diurnal correction. The table now states each row's basis, and the like-for-like rows differ by 10.8%, which is the diurnal correction the prose actually describes. Its "Downstream Estimation" section also claimed that GLMM effort "feeds directly into the standard downstream estimators"; it does not — estimate_total_catch() takes no effort argument and derives effort itself, so the section now says what the code does. aerial-surveys.Rmd explained that ci_lower / ci_upper "give the 95% confidence interval" directly beneath output where both were NA, because the design declares visibility_correction = "none". Both aerial vignettes now explain why an undeclared correction yields NA rather than a number, and where to supply visibility_se to get an interval. camera-surveys.Rmd said negative-duration rows are "set to NA and excluded from the daily sum". They are excluded, but the day reports a smaller number rather than NA — on the package fixture one flipped ingress/egress pair takes a day from 11 hours to 7.75 — so the warning is the only place the exclusion is visible.
  • The PDF reference manual builds again. Six characters across four help pages had no LaTeX definition under pdflatex — tau, kappa, pi, a combining macron, U+2212 minus and U+1D62 subscript i — and stopped R CMD check from producing the manual at all. They are now \eqn{} math.
  • The README names vignettes rather than linking to the published article pages. Those vignettes ship inside the tarball, so vignette("bus-route-surveys") works from an installed package where a link to the website only works with a network. It also means the README no longer depends on a checking machine being able to reach the documentation host.
  • Every exported function now has a runnable example, and nothing is wrapped in \dontrun{}. Seventeen exported functions had no example at all, and fourteen help pages wrapped theirs in \dontrun{}. Most of those wrappers were not protecting anything: six ran as written once unwrapped, and the rest referenced objects that were never defined — design_a, my_effort, counts_df — so the block was a sketch rather than an example. One demonstrated writing a CSV into the user's working directory. Examples that genuinely need a suggested package are guarded with @examplesIf rlang::is_installed(...) rather than hidden: estimate_effort_aerial_glmm() needs lme4 and summarize_by_county() needs zipcodeR. All 125 example topics run, each in under five seconds.
  • DESCRIPTION cites the methods the estimators implement — Hoenig, Jones, Pollock, Robson and Wade (1997) <doi:10.2307/2533116> for roving catch rates and Kinloch, McGlennon, Nicoll and Pike (1997) <doi:10.1016/s0165-7836(97)00068-4> for bus-route designs — and records the maintainer as copyright holder. The README shows install.packages().

Bug fixes

  • Printing a validate_incomplete_trips() result no longer leaves the plot margins changed for the rest of the session. print() widened par(mar) to draw its scatter plot and never put it back; it now restores the caller's setting on exit.
  • simulate_creel_data() and simulate_creel_catch() no longer leave the caller's random number stream reset. Both called set.seed(seed) and never put back what was there. seed is a convenience for reproducing one simulation, not a licence to take over the session — but a script that seeded its own analysis and then called either function part-way through silently continued from *our* seed. Every draw after that point was determined by an argument passed for one function's benefit, with nothing to say so. Measured: after set.seed(999), the next runif(1) was 0.389071 on its own and 0.685170 with a simulate_creel_catch(seed = 42) call in between. Both now give 0.389071. The stream is captured before set.seed() and restored on exit. A session that had never drawn at all is left without a .Random.seed again, rather than inheriting ours. Reproducibility is unchanged: the same seed still produces the same data, and omitting seed still consumes randomness normally.

From NEWS.md in the release

Install

Health

CRAN checks
12OK
Slowest check: 12.9 min · r-release-macos-x86_64
Status changes
  • OK12 OKNow
  • OK6 OK2026-10-11
Advisories

none known

Documentation

Downloads

168
CRAN downloads in the past year
Rank #25,441 · ~0/day · ~14/mo
tidycreel
Daily download trend is not available in this view yet.
16830 days
16890 days
1681 year
Compare downloads with other packages →

Repository

0Stars
0Forks
49Open issues
1Open PRs
12Releases
fisheriesrsurveytidyversecpuecreel-surveyreproducible-research-with-rsurvey-sampling
Last activity 2026-10-16
Responsiveness
How these are sampled
PRs merged (all time)
97%
Median days to close, 50 most recently updated closed issues
not measured
Median days to close, 50 most recently updated closed PRs
not measured

Issues over time

2026-10-11 · 382026-10-17 · 49
PracticesBeta

Repository github.com/chrischizinski/tidycreel is linked, but repository-practices checks have not run for it yet.

How this is detected·Detection ruleset v3 (2026-09-26)

Dependencies

Declared dependencies
32 external dependencies (excludes base and recommended)

Installing tidycreel adds 34 packages (18 with compiled code, 23 MB of source tarballs). Heaviest: ggplot2 6.0 MB, survey 2.3 MB, Rcpp 1.8 MB.

Depends (1)
R >= 4.1.0
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

Datasets

People & History

People (1)
Author, Maintainer since 8.0.0 (2026), Copyright holder
Releases (1)
  • 8.0.0Latest
    2026-10-10 · current release ·
    7 days in CRAN's queue
    Listed in CRAN's incoming queue from 2026-10-03 21:57 to 2026-10-10 10:19 UTC, in 29 readings.
  • R
    R 4.6.0 released · 2026-04-24
Across CRAN, the median accepted release of the past year spent 19 hours in the queue, 90% under 11 days.How queue time is measured

Package metadata

First published
2026-10-10
Total releases
1 / 1 yrs
License
MIT + file LICENSE OSI
Minimum R
≥ 4.1.0
Bundled data
7.8 KB / 19 files
Download size
4.8 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("tidycreel")

The package provides a citation file that builds its entry when R runs it. Run citation() to see it.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for tidycreel version 8.0.0 [Data set]. HJJB, LLC. Data release v2026-10-17. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-17, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy