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:
https://github.com/chrischizinski/tidycreel/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:
https://github.com/chrischizinski/tidycreel/issues
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.