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)
Tidy Interface for Creel Survey Design, Estimation, and Reporting
tidycreel provides a pipe-friendly interface for creel survey design, data management, estimation, visualisation, and reporting. Built on the survey package for design-based inference, it lets fisheries biologists work in creel vocabulary — dates, strata, counts, effort, catch, lengths, schedules — without managing survey-package internals directly.
install.packages("tidycreel")
Or the development version from GitHub:
# install.packages("pak")
pak::pak("chrischizinski/tidycreel")
# or with devtools
devtools::install_github("chrischizinski/tidycreel")
Stratified effort estimation from periodic angler counts.
vignette("tidycreel")
PPS site selection with Horvitz-Thompson estimators and enumeration expansion.
vignette("bus-route-surveys")
Degenerate bus-route design with certainty site sampling.
vignette("ice-fishing")
Counter and ingress-egress preprocessing, NB GLMM count imputation, and camera effort indexing.
vignette("camera-surveys")
Single-overflight effort estimation with calibrated open-hours scaling.
vignette("aerial-surveys") | vignette("aerial-glmm")
survey package; biologists write creel vocabulary, not survey-package internals.creel_design() dispatches to the correct workflow for each survey type.audit_strata(), simulate_strata_collapse(), and reallocate_strata() diagnose stratum weights, inclusion probabilities, and coverage; test collapse scenarios before committing to a redesign.autoplot() methods, theme_creel(), creel_palette(), a Quarto Creel Report template scaffold, and the legacy flexdashboard scaffold.library(tidycreel)
# 1. Define survey structure with tidy selectors
design <- creel_design(example_calendar, date = date, strata = day_type)
# 2. Attach count observations
design <- add_counts(design, example_counts)
# 3. Estimate effort with design-based variance
estimate_effort(design)
# Probability-proportional-to-size site selection
design <- creel_design(
example_calendar,
date = date,
strata = day_type,
survey_type = "bus_route",
sampling_frame = my_site_frame,
site = site_id
)
design <- add_interviews(design, interview_data,
catch = catch_total,
effort = hours_fished,
harvest = catch_kept
)
estimate_catch_rate(design)
| If you want to… | Start here |
|---|---|
| Learn the package vocabulary | Glossary (vignette("glossary")) |
| See the main end-to-end workflow | Getting Started (vignette("tidycreel")) |
| Plan a season before sampling starts | Survey Design Toolbox (vignette("survey-design-toolbox")) |
| Estimate angler population or exploitation rate from tag data | Mark-Recapture and Exploitation Rate (vignette("mark-recapture")) |
| Understand plotting and output styling | Visualisation (vignette("visualisation")) and theme_creel() |
| Build a report/dashboard | Use the bundled Quarto Creel Report starter template, or open R Markdown > From Template > Creel Dashboard for the legacy scaffold |
creel_design() — single entry point; dispatches on survey_type.add_counts(), add_interviews(), add_catch(), add_lengths(), add_ages(), add_sections() — attach observation data.estimate_effort() — total effort with Taylor linearization, bootstrap, or jackknife variance.estimate_catch_rate(), estimate_harvest_rate(), estimate_release_rate() — ratio-based interview estimators.estimate_total_catch(), estimate_total_harvest(), estimate_total_release() — totals via delta-method propagation.est_effort_camera(), est_length_distribution(), est_mean_length(), est_age_distribution(), est_mean_age() — camera effort indexing and weighted size- and age-structure estimation.estimate_exploitation_rate() — exploitation rate from tag returns (Pollock et al.; simple and T-weighted stratified paths).estimate_angler_n() — Petersen and Schnabel mark-recapture population size estimators.estimate_mr_harvest() — population-scale total harvest from mark-recapture data.validate_creel_data(), validation_report(), standardize_species() — clean and validate real-world creel inputs.validate_incomplete_trips(), validate_design(), check_completeness(), compare_variance(), adjust_nonresponse() — QA and estimator diagnostics.audit_strata(), simulate_strata_collapse(), reallocate_strata() — stratification diagnostics; verify weights, simulate collapse scenarios, and rebalance allocations.generate_schedule(), generate_bus_schedule(), generate_count_times(), attach_count_times() — planning/scheduling helpers.creel_n_effort(), creel_n_cpue(), creel_n_camera(), creel_power(), cv_from_n() — sample-size and power tools.season_summary(), summary.creel_estimates(), write_estimates() — report-ready summary/export helpers.autoplot.creel_estimates(), autoplot.creel_schedule(), autoplot.creel_length_distribution(), theme_creel(), creel_palette() — visualisation helpers.All vignettes ship with the package — open one with
vignette("<name>", package = "tidycreel"). They are also published at
https://chrischizinski.com/tidycreel/articles/.
| Vignette | Description |
|---|---|
Getting Started (vignette("tidycreel")) |
Core workflow: design → counts → effort estimation |
Glossary (vignette("glossary")) |
Plain-language guide to tidycreel terms and concepts |
| Vignette | Description |
|---|---|
Bus-Route Surveys (vignette("bus-route-surveys")) |
PPS site selection with Horvitz-Thompson estimators |
Ice Fishing (vignette("ice-fishing")) |
Certainty-site (degenerate bus-route) design |
Camera Surveys (vignette("camera-surveys")) |
Counter and ingress-egress preprocessing, count imputation, camera effort |
Aerial Surveys (vignette("aerial-surveys")) |
Single-overflight effort with calibrated open-hours scaling |
Aerial GLMM (vignette("aerial-glmm")) |
Negative-binomial GLMM aerial effort (Askey 2018) |
| Vignette | Description |
|---|---|
Survey Integration (vignette("survey-tidycreel")) |
Using tidycreel alongside the survey package directly |
Interview Estimation (vignette("interview-estimation")) |
CPUE, catch, and harvest from interview data |
Mark-Recapture and Exploitation Rate (vignette("mark-recapture")) |
Chapman, Petersen, Schnabel estimators; MR harvest; exploitation rate from tag returns |
Incomplete Trips (vignette("incomplete-trips")) |
When and how to use mean-of-ratios and TOST validation |
Flexible Count Estimation (vignette("flexible-count-estimation")) |
Non-standard count configurations and custom time windows |
Progressive Count Surveys (vignette("progressive-count-surveys")) |
Rolling and progressive count workflows |
Section Estimation (vignette("section-estimation")) |
Spatial section-level effort and catch estimation |
Temporal Extrapolation (vignette("temporal-extrapolation")) |
Extrapolating partial-season data to full-season estimates |
| Vignette | Description |
|---|---|
Unextrapolated Summaries (vignette("unextrapolated-summaries")) |
Raw interview summaries without season-level expansion |
Survey Design Toolbox (vignette("survey-design-toolbox")) |
Sample-size, power, scheduling, and pre-season planning tools |
Survey Scheduling (vignette("survey-scheduling")) |
Count windows, schedules, validation, and completeness checks |
Visualisation (vignette("visualisation")) |
Plotting patterns and output styling with theme_creel() |
| Vignette | Description |
|---|---|
Effort Pipeline (vignette("effort-pipeline")) |
Statistical mechanics of the effort estimation pipeline |
Catch Pipeline (vignette("catch-pipeline")) |
Statistical mechanics of the catch estimation pipeline |
Replicate Designs (vignette("replicate-designs")) |
Variance workflows and replicate-design reasoning |
Bus-Route Equations (vignette("bus-route-equations")) |
Technical equation derivations for bus-route estimators |
| Vignette | Description |
|---|---|
tidycreel.connect (vignette("tidycreel-connect")) |
Database integration and reproducible data pipelines |
If you have questions about which survey type to use, how to interpret results, or how to structure your data, the best place to start is GitHub Discussions:
GitHub Discussions works like a threaded forum attached to the repository. If you do not already have a GitHub account, you can create one for free at https://github.com/signup — it only requires an email address. Once signed in, click New discussion, select the Q&A category, and describe what you are trying to do. Searching existing threads first is worth a moment; your question may already have an answer.
If a function returns an error, produces a result that does not look right, or behaves differently from what the documentation describes, please open a GitHub Issue:
Step-by-step for first-time GitHub users:
instantaneous,
bus_route, ice, camera, or aerial)packageVersion("tidycreel") in R and
paste the result (e.g., 1.6.0)Writing a reproducible example
The single most useful thing you can include is a short, self-contained R
snippet that demonstrates the problem without needing your real data. Use
the package's built-in example datasets (example_calendar,
example_counts, example_interviews, etc.) wherever possible, or create a
small data frame that triggers the issue.
A good example looks like this:
library(tidycreel)
design <- creel_design(example_calendar, date = date, strata = day_type)
design <- add_counts(design, example_counts)
# The call that produces the unexpected result
estimate_effort(design)
#> Error: ... (paste the full error message here)
The snippet should run from scratch without any additional files or setup.
If reducing your data to a minimal example is not straightforward, share
what you have and describe the context — that is still very helpful. The
reprex package can automatically format and share R output if you want a
polished submission: install it with install.packages("reprex") and run
reprex::reprex() around your code.
For guidance on contributing code, requesting new features, or the development workflow, see CONTRIBUTING.md.
MIT License — see LICENSE.md for details.
Artificial intelligence coding assistants were used during the development of tidycreel, including for code refinement, consistency across functions, GitHub Actions workflows, error checking, code review, and the development of testing infrastructure.
All functions and analytical outputs have been reviewed by the author team and validated against real-world creel survey data and expected analytical behavior. Despite these review and testing efforts, errors may still occur. If you identify a problem or unexpected result, please submit an issue so that it can be reviewed and addressed.