The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Unextrapolated Interview Summaries

Introduction

Creel surveys produce two types of summary products: unextrapolated summaries and extrapolated estimates. This vignette covers unextrapolated summaries — raw tabulations of interview records that describe the composition of interviewed parties without applying survey-design weighting.

When to use unextrapolated summaries:

All unextrapolated functions are interview-weighted, not pressure-weighted. A day with many anglers and few interviews has the same weight as a day with few anglers and many interviews. For pressure-weighted, design-correct estimates, use estimate_catch_rate(), estimate_total_catch(), and related functions described in the “Interview-Based Catch Estimation” vignette.

Build the Design

Start by assembling a complete design using all v0.5.0 data layers:

library(tidycreel)

# Load example datasets
data(example_calendar)
data(example_counts)
data(example_interviews)
data(example_catch)
data(example_lengths)

# Step 1: Define the survey calendar and stratification
design <- creel_design(example_calendar, date = date, strata = day_type)

# Step 2: Attach instantaneous count observations
design <- add_counts(design, example_counts)
#> Warning in svydesign.default(ids = psu_formula, strata = strata_formula, : No
#> weights or probabilities supplied, assuming equal probability

# Step 3: Attach interview records (all extended v0.5.0 fields)
design <- add_interviews(design, example_interviews,
  catch          = catch_total,
  effort         = hours_fished,
  harvest        = catch_kept,
  trip_status    = trip_status,
  trip_duration  = trip_duration,
  angler_type    = angler_type,
  angler_method  = angler_method,
  species_sought = species_sought,
  n_anglers      = n_anglers,
  refused        = refused
)

# Step 4: Attach species-level catch data
design <- add_catch(design, example_catch,
  catch_uid     = interview_id,
  interview_uid = interview_id,
  species       = species,
  count         = count,
  catch_type    = catch_type
)

# Step 5: Attach fish length data (individual harvest + binned release)
design <- add_lengths(design, example_lengths,
  length_uid     = interview_id,
  interview_uid  = interview_id,
  species        = species,
  length         = length,
  length_type    = length_type,
  count          = count,
  release_format = "binned"
)

print(design)
#> 
#> ── Creel Survey Design ─────────────────────────────────────────────────────────
#> Type: "instantaneous"
#> Date column: date
#> Strata: day_type
#> Calendar: 14 days (2024-06-01 to 2024-06-14)
#> day_type: 2 levels
#> Counts: 14 observations
#> PSU column: date
#> Count column: effort_hours
#> Party-size term: not carried
#> Count type: "instantaneous"
#> Survey: <survey.design2> (constructed)
#> Interviews: 22 observations
#> Type: "access"
#> Catch: catch_total
#> Effort: hours_fished
#> Harvest: catch_kept
#> Trip status: 17 complete, 5 incomplete
#> Angler type: angler_type
#> Angler method: angler_method
#> Species sought: species_sought
#> Party size: n_anglers
#> Refused: refused
#> Survey: <survey.design2> (constructed)
#> Catch Data: 42 rows, 3 species
#> caught: 8, harvested: 17, released: 17
#> Length Data: 20 rows, 3 species, length: 155–512 mm
#> harvest: 14 individual
#> release: 6 binned
#> Sections: "none"

The print() output shows all five data layers: calendar, counts, interviews, catch, and lengths.

Interview Participation

Use summarize_refusals() to understand how many potential interviewees declined to participate. High refusal rates can bias estimates if refusers differ systematically from participants.

summarize_refusals(design)
#>   month participation  N percent
#> 1  June      accepted 22     100

All 22 interviews in example_interviews were accepted (no refusals). In field surveys, a refusal rate above 20% warrants investigation.

Interview Composition

Seven tabulation functions describe the composition of the interview sample.

Day Type

summarize_by_day_type(design)
#>   month day_type  N percent
#> 1  June  weekday 13    59.1
#> 2  June  weekend  9    40.9

Angler Type

summarize_by_angler_type(design)
#>   month angler_type  N percent
#> 1  June        bank 13    59.1
#> 2  June        boat  9    40.9

Fishing Method

summarize_by_method(design)
#>   month     method  N percent
#> 1  June artificial  7    31.8
#> 2  June       bait 10    45.5
#> 3  June        fly  5    22.7

Species Sought

summarize_by_species_sought(design)
#>   month species  N percent
#> 1  June    bass  6    27.3
#> 2  June panfish  5    22.7
#> 3  June walleye 11    50.0

Successful Parties

summarize_successful_parties() counts parties that caught at least one fish of their target species (as recorded in catch data), broken down by angler type and species sought.

summarize_successful_parties(design)
#>   angler_type species_sought N_total N_successful percent
#> 1        bank           bass       5            1    20.0
#> 2        bank        panfish       3            1    33.3
#> 3        bank        walleye       5            4    80.0
#> 4        boat           bass       1            1   100.0
#> 5        boat        panfish       2            0     0.0
#> 6        boat        walleye       6            3    50.0

Trip Length Distribution

summarize_by_trip_length(design)
#>    trip_length_bin N percent
#> 1            [0,1) 2     9.1
#> 2            [1,2) 5    22.7
#> 3            [2,3) 8    36.4
#> 4            [3,4) 4    18.2
#> 5            [4,5) 3    13.6
#> 6            [5,6) 0     0.0
#> 7            [6,7) 0     0.0
#> 8            [7,8) 0     0.0
#> 9            [8,9) 0     0.0
#> 10          [9,10) 0     0.0
#> 11             10+ 0     0.0

The trip-length distribution is useful for detecting outliers and understanding effort patterns.

Catch-While-Sought (CWS) and Harvest-While-Sought (HWS) Rates

CWS and HWS rates measure the proportion of interviews where anglers targeting a species actually caught (CWS) or kept (HWS) that species. These are useful quality indicators and input parameters for population models, but should not be treated as pressure-weighted catch rates for management use — they reflect the interview sample composition, not fishing pressure across the survey period.

CWS Rates by Species Sought

summarize_cws_rates(design, by = species_sought)
#>   species_sought  N n_unknown_target n_unknown_effort n_nonpositive_effort
#> 1           bass  6                0                0                    0
#> 2        panfish  5                0                0                    0
#> 3        walleye 11                0                0                    0
#>    mean_rate         se    ci_lower  ci_upper
#> 1 0.05208333 0.05208333 -0.08180114 0.1859678
#> 2 0.23333333 0.23333333 -0.41450386 0.8811705
#> 3 0.46158009 0.23247889 -0.05641517 0.9795753

CWS Rates Collapsed Across All Groupings

summarize_cws_rates(design, by = NULL)
#>    N n_unknown_target n_unknown_effort n_nonpositive_effort mean_rate        se
#> 1 22                0                0                    0 0.2980249 0.1298807
#>     ci_lower  ci_upper
#> 1 0.02792314 0.5681266

HWS Rates

summarize_hws_rates(design, by = species_sought)
#>   species_sought  N n_unknown_target n_unknown_effort n_nonpositive_effort
#> 1           bass  6                0                0                    0
#> 2        panfish  5                0                0                    0
#> 3        walleye 11                0                0                    0
#>   mean_rate        se    ci_lower  ci_upper
#> 1 0.0312500 0.0312500 -0.04908068 0.1115807
#> 2 0.1333333 0.1333333 -0.23685935 0.5035260
#> 3 0.3887987 0.1322997  0.09401668 0.6835807

Interpretation guidance: CWS and HWS rates > 1.0 are possible when anglers catch multiple fish of the target species in a single interview. A CWS rate of 0.6 means 60% of interviews targeting that species resulted in at least one catch.

Length Frequency Distributions

Length data attached via add_lengths() can be summarized by catch type and species.

Harvest Lengths

summarize_length_freq(design, type = "harvest", by = species, bin_width = 25)
#>   species length_bin N percent cumulative_percent
#> 1    bass  [225,250) 1    25.0               25.0
#> 2    bass  [250,275) 1    25.0               50.0
#> 3    bass  [275,300) 2    50.0              100.0
#> 4 panfish  [150,175) 2   100.0              100.0
#> 5 walleye  [375,400) 2    25.0               25.0
#> 6 walleye  [400,425) 3    37.5               62.5
#> 7 walleye  [475,500) 1    12.5               75.0
#> 8 walleye  [500,525) 2    25.0              100.0

Release Lengths

Release lengths in example_lengths are stored in pre-binned format. summarize_length_freq() handles this automatically:

summarize_length_freq(design, type = "release", by = species)
#>   species length_bin N percent cumulative_percent
#> 1    bass  [275,276) 4    44.4               44.4
#> 2    bass  [325,326) 5    55.6              100.0
#> 3 panfish  [175,176) 6    66.7               66.7
#> 4 panfish  [225,226) 3    33.3              100.0
#> 5 walleye  [375,376) 2    40.0               40.0
#> 6 walleye  [425,426) 3    60.0              100.0

All-Catch Lengths

summarize_length_freq(design, type = "catch", by = species, bin_width = 25)
#>    species length_bin N percent cumulative_percent
#> 1     bass  [225,250) 1     7.7                7.7
#> 2     bass  [250,275) 1     7.7               15.4
#> 3     bass  [275,300) 6    46.2               61.6
#> 4     bass  [325,350) 5    38.5              100.1
#> 5  panfish  [150,175) 2    18.2               18.2
#> 6  panfish  [175,200) 6    54.5               72.7
#> 7  panfish  [225,250) 3    27.3              100.0
#> 8  walleye  [375,400) 4    30.8               30.8
#> 9  walleye  [400,425) 3    23.1               53.9
#> 10 walleye  [425,450) 3    23.1               77.0
#> 11 walleye  [475,500) 1     7.7               84.7
#> 12 walleye  [500,525) 2    15.4              100.1

Extrapolated Species-Level Estimates

For design-correct, pressure-weighted estimates broken down by species, use the extrapolated estimators. These combine effort estimates (from count data) with species-specific catch rates (from interview + catch data) using the ratio-of-means estimator.

Catch Per Unit Effort by Species

estimate_catch_rate(design, by = species)
#> Warning: Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> 
#> ── Creel Survey Estimates ──────────────────────────────────────────────────────
#> Method: ratio-of-means-cpue-species
#> Variance: Taylor linearization
#> Confidence level: 95%
#> Grouped by: species
#> Unit: fish/angler-hour
#> 
#> # A tibble: 3 × 6
#>   species estimate     se ci_lower ci_upper     n
#>   <chr>      <dbl>  <dbl>    <dbl>    <dbl> <int>
#> 1 bass      0.205  0.0743  0.0590     0.350    17
#> 2 panfish   0.0558 0.0311 -0.00518    0.117    17
#> 3 walleye   0.465  0.0957  0.278      0.653    17

Total Catch by Species

estimate_total_catch(design, by = species)
#> 
#> ── Creel Survey Estimates ──────────────────────────────────────────────────────
#> Method: Total Catch (Effort × CPUE)
#> Variance: Taylor linearization
#> Confidence level: 95%
#> Grouped by: species
#> Effort target: sampled_days
#> 
#> # A tibble: 3 × 6
#>   species estimate    se ci_lower ci_upper     n
#>   <chr>      <dbl> <dbl>    <dbl>    <dbl> <int>
#> 1 bass        63.2  21.9    16.5     110.     17
#> 2 panfish     27.2  10.4     5.10     49.3    17
#> 3 walleye    190.   46.0    92.3     288.     17

Total Harvest by Species

estimate_total_harvest(design, by = species)
#> 
#> ── Creel Survey Estimates ──────────────────────────────────────────────────────
#> Method: Total Harvest (Effort × HPUE)
#> Variance: Taylor linearization
#> Confidence level: 95%
#> Grouped by: species
#> Effort target: sampled_days
#> 
#> # A tibble: 3 × 6
#>   species estimate    se ci_lower ci_upper     n
#>   <chr>      <dbl> <dbl>    <dbl>    <dbl> <int>
#> 1 bass        29.8  9.84     8.82     50.8    17
#> 2 panfish     18.1  6.92     3.40     32.9    17
#> 3 walleye    131.  31.4     64.4     198.     17

Release Rate and Total Releases by Species

estimate_release_rate(design, by = species)
#> Warning: Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> Small sample size for CPUE estimation.
#> ! Sample size is 17. Ratio estimates are more stable with n >= 30.
#> ℹ Variance estimates may be unstable with n < 30.
#> 
#> ── Creel Survey Estimates ──────────────────────────────────────────────────────
#> Method: ratio-of-means-rpue
#> Variance: Taylor linearization
#> Confidence level: 95%
#> Grouped by: species
#> Unit: fish/angler-hour
#> 
#> # A tibble: 3 × 6
#>   species estimate     se ci_lower ci_upper     n
#>   <chr>      <dbl>  <dbl>    <dbl>    <dbl> <int>
#> 1 bass      0.102  0.0407  0.0225    0.182     17
#> 2 panfish   0.0186 0.0104 -0.00173   0.0389    17
#> 3 walleye   0.140  0.0385  0.0640    0.215     17
estimate_total_release(design, by = species)
#> 
#> ── Creel Survey Estimates ──────────────────────────────────────────────────────
#> Method: product-total-release
#> Variance: Taylor linearization
#> Confidence level: 95%
#> Grouped by: species
#> Effort target: sampled_days
#> 
#> # A tibble: 3 × 6
#>   species estimate    se ci_lower ci_upper     n
#>   <chr>      <dbl> <dbl>    <dbl>    <dbl> <int>
#> 1 bass       33.4  14.1      3.43     63.5    17
#> 2 panfish     9.07  3.46     1.70     16.4    17
#> 3 walleye    58.9  18.8     18.9      98.9    17

For grouped estimates combining calendar strata with species, use by = c(day_type, species). See vignette("interview-estimation") for the complete extrapolated estimation workflow.

Summary

Function Data required Output
summarize_refusals() refused field month × participation × N × %
summarize_by_day_type() strata month × day_type × N × %
summarize_by_angler_type() angler_type month × angler_type × N × %
summarize_by_method() angler_method month × method × N × %
summarize_by_species_sought() species_sought month × species × N × %
summarize_successful_parties() catch + angler_type + species_sought angler_type × species × success rate
summarize_by_trip_length() trip_duration bin × N × %
summarize_cws_rates() catch + species_sought CWS rate ± SE by grouping
summarize_hws_rates() catch + species_sought HWS rate ± SE by grouping
summarize_length_freq() lengths bin × N × % × cumulative %

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.