Skip to contents

cohort_reconstruct uses released and recovered coded wire tags to calculate the ocean
abundance of the population for each brood year at each age and in each month. The function
returns a list of outputs indexed by brood year, age, and month. Each element of the list
contains two elements, data and summary. In general, the data segment contains the
raw data of cohort reconstruction, while the summary segment includes statistics from the
raw data. For more about return value, see the value section.

Depending on if the bootstrap and detail flags are set, the data and summary segments
may behave in different ways. For more information, see details.

The function implements a cohort reconstruction outlined in (Chen et al. ) .

Usage

cohort_reconstruct(
  rel,
  reco,
  birth_month,
  last_month = 12L,
  fisheries = list(oc_rec = 40, oc_com = 10, esc_sp = 54, esc_hat = 50, riv_harv = 46),
  size_at_age = length_at_age,
  rel_mort = release_mort,
  survival = survival_default,
  drop_mort = 0.05,
  bootstrap = FALSE,
  iter = 10L,
  detail = FALSE,
  min_harvestability = 0,
  level = 0.05,
  hpd = FALSE,
  verbose = TRUE,
  sex = "both"
)

Arguments

rel

Input data frame for CWT releases with columns in order:

"brood_year"

Integer. The birth year of each CWT batch.

"total_release"

Double. The total number of releases for each batch of CWT.

"prod_exp"

Double. The ratio between the number of tagged fish and the total number
of fish in each batch, i.e., number of tagged fish / batch size.

"tag_code"

Any type. The identifier for each batch of CWT release.

reco

Input data frame for CWT recoveries with columns in order:

"run_year"

Integer. The year of each CWT recovery.

"month"

Integer. The month of each CWT recovery.

"length"

Double. The length in inches of each recovered fish.

"tag_code"

Any type. The identifier for each recovered tag.

"fishery"

Double. The identifier for the fishery from which the tag is recovered.
The fisheries include river harvest, spawning ground escapement, hatchery
escapement, ocean recreational fishing, ocean commercial fishing.

"location"

Character. The identifier for the location at which the tag is recovered.

"size_limit"

Double. The minimum harvest limit (inclusive) in inches for the recovered
tag's region and date.

"est_num"

Double. The estimated number of fish each tag represents.

"sex"

Character. The biological sex of the recovered fish.

birth_month

Integer specifying the birth month of all individuals in the data set.

last_month

Integer indicating the last month, in numeric form, that counts toward the
current run. This variable is to separate late spawners of the current run and early spawners
of the next run. For example, a cut off of 9L means fish recovered in September or earlier in
the current year and fish recovered October-December the previous year will be aggregated into
the same run.

The default value is 12L, meaning the entire natural year counts toward the current run.

fisheries

Named list associating each type of fishery with a unique identifier in the
release and recovery data. Must contain the following named elements:

"oc_rec"

Identifier for recreational ocean fishery. The default value is 40.

"oc_com"

Identifier for commercial ocean fishery. The default value is 10.

"esc_sp"

Identifier for escapement to spawning ground. The default value is 54.

"esc_hat"

Identifier for escapement to hatchery. The default value is 50.

"riv_harv"

Identifier for river harvest. The default value is 46.

size_at_age

Data frame specifying the mean and standard deviation for the individual
body length at each age and month. The default data frame is included in the package and named
length_at_age.

The following describes the required columns in order.

"age"

Integer. The fishing age of the cohort.

"month"

Integer. The month in numeric form. For instance, 3L is March.

"mean"

Double. The mean total body length in inches.

"sd"

Double. The standard deviation of total body length in inches.

rel_mort

Data frame specifying the hook-and-release mortality rate due to ocean fishing
in each region. Hook-and-release mortality rate is the proportion of fish that are The default
data frame is included in the package and named release_mort.

The following describes the required columns in order.

"run_year"

Integer. The year of each CWT recovery.

"fishery"

Any type. The identifier for each type of fishery.

"location"

Any type. The identifier for location.

"month"

Integer. The month of each CWT recovery.

"rate"

Double. The release mortality rate for each timestep.

To provide convenience, we set the default hook-and-release mortality rate, regardless of time and location, to be 0.14 for recreational fishery and 0.26 for commercial fishery (Salmon Technical Team 2000) .
These default values will be used if we cannot find any matching record from the data frame above.

survival

Data frame specifying the age specific natural survival rates. The default data
frame is included in the package and named survival_default.
The following describes the required columns in order.

"age"

Numeric specifying the age.

"rate"

Double specifying the agely survival rate.

drop_mort

Double indicating the drop off mortality of fishery impact. Drop off mortality is
the proportion of fish encountered by the gear that is killed without being brought to the vessel
intact. The default value is 0.05 (Salmon Technical Team 2000) .

bootstrap

Boolean indicating if parametric bootstrapping should be conducted. If bootstrap
is set to false, then iter is ignored. To produce reproducible results, please remember set a seed
with set.seed.

iter

Numeric or integer specifying the number of iterations for parametric bootstrapping. The
default value is 1000. Note that larger values require more computing power and memory.

detail

Boolean indicating if the reconstruction should calculate breakdowns and summary
information.

min_harvestability

Double specifying the lower bound for the harvest rate considered in cohort
reconstruction. Harvest rate is the ratio between the number of harvestable individuals and the
size of the cohort.

level

Double between 0 and 1 inclusive, specifying the credible level for credible intervals.
This option only matters if bootstrap is set to TRUE.

hpd

Boolean indicating if the highest posterior density credible interval should be used. If
FALSE, a symmetric credible interval is used. The default is FALSE.

verbose

Boolean indicating if the function will print progress updates. If verbose is set
to TRUE, the function will provide status updates. This is particularly useful for conducting
bootstrapped cohort reconstruction for large iterations that are high in computing cost, as
having progress updates can instill a sense of confidence into an otherwise discouraged user.

sex

String specifying which sex or sexes to consider. Must choose from "male", "female", or
"both". Here, "male" is shorthand for sperm-producing individuals. "Female" is shorthand for
egg-producing individuals.

Value

There are two types of return values, depending on the values of detail and bootstrap.
In the case when both detail and bootstrap are FALSE, the return value is a data table of the following form:

| by (integer) | age (integer) | month (integer) | ocean_abundance (double) |
|--------------|---------------|-----------------|--------------------------|
| 1995         | 3             | 5               | 3.814342                 |
| 1995         | 3             | 4               | 10.853284                |
| 1995         | 3             | 3               | 11.056992                |
| 1995         | 3             | 2               | 11.264524                |
| 1995         | 3             | 1               | 11.475951                |
| 1995         | 3             | 12              | 11.691346                |
| 1995         | 3             | 11              | 11.910784                |
| 1995         | 3             | 10              | 12.134340                |
| 1995         | 3             | 9               | 12.362093                |
| 1995         | 3             | 8               | 12.594120                |

In the cases when either detail, bootstrap, or both are set to TRUE, the return
value is a three dimensional list. The first dimension encodes brood year information (by),
the second age, and the third month. Each age has an age-specific summary information. Each
month has data and month-specific summary information. Depending on detail and
bootstrap, the corresponding output will vary.

Here is the structure of the return value:

  "by" "age" "month"

├── [["2002"]]
│   ├──[["2"]]
│   │   ├── [["1"]]
│   │   │   ├── `data`
│   │   │   └── `summary`
│   │   ├── ...
│   │   │
│   │   ├── [["age_summary"]]
│   │   │   ├── `data`
│   │       └── `summary`
│   ├── [["3"]]
│   │   ├── [["1"]]
│   │   │   ├── `data`
│   │   │   └── `summary`
│   │   ├── ...
│   │   │
│   │   ├── [["age_summary"]]
│   │   │   ├── `data`
│   │       └── `summary`
│   ├── ...
│   │
│   ├──[["by_summary"]]
│   │  ├── `data`
│   │  └── `summary`
├── ...

Summary

  • Parameter: the statistics in question.

  • Median: the median for the parameter.

  • SD: the standard deviation for the parameter.

  • CrI_low: the lower bound of the credible interval.

  • CrI_high: the upper bound of the credible interval.

Brood-year-specific summary (under by_summary)

  • srr: spawner reduction rate, or adult equivalent exploitation rate, is the "reduction
    in a brood’s potential adult spawning escapement owing to ocean fisheries,
    relative to its escapement potential in the absence of ocean fishing,"
    as described in (Chen et al. ) .

  • s1: early life survival rate is the proportion of the abundance of fish
    first month in ocean, relative to the total release number (Chen et al. ) .

| Parameter | Median  | SD      | CrI_low | CrI_high |
|-----------|---------|---------|---------|----------|
| srr       | 0.18061 | 0.00871 | 0.17996 | 0.18126  |
| s1        | 0.00519 | 0.00008 | 0.00518 | 0.00521  |

Age-specific summary (under age_summary)

  • imp_rate: age-specific fishery impact rate.

  • mat_rate: age-specific maturation rate.

| Parameter | Median  | SD      | CrI_low | CrI_high |
|-----------|---------|---------|---------|----------|
| imp_rate  | 0.20872 | 0.00730 | 0.20815 | 0.20930  |
| mat_rate  | 0.63548 | 0.01462 | 0.63546 | 0.63550  |

Month-specific summary (under each month)

  • ocean_abundance: number of individuals in the ocean at that time.

  • impact: mortality due to fishing.

  • maturation: number of spawners.

  • natural_mort: mortality due to natural causes.

| Parameter        | Median      | SD       | CrI_low     | CrI_high    |
|------------------|-------------|----------|-------------|-------------|
| ocean_abundance  | 33954.6031  | 497.3167 | 33871.9672  | 34037.2390  |
| impact           | 0.0000      | 0.0000   | 0.0000      | 0.0000      |
| maturation       | 0.0000      | 0.0000   | 0.0000      | 0.0000      |
| natural_mort     | 625.5616    | 9.1623   | 624.0392    | 627.0841    |

Data

Each labeled entry is one bootstrapped iteration, where the label n corresponds
to the nth iteration.

Brood-year-specific data

| Measurement | 1       | 2       | 3       | 4       | 5       | 6       | 7       | 8       | 9       | 10      |
|-------------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|
| srr         | 0.18414 | 0.17711 | 0.19864 | 0.17655 | 0.18206 | 0.19160 | 0.17342 | 0.17916 | 0.17155 | 0.19019 |
| s1          | 0.00526 | 0.00514 | 0.00515 | 0.00533 | 0.00531 | 0.00516 | 0.00523 | 0.00515 | 0.00528 | 0.00514 |

Age-specific data

| Parameter | 1       | 2       | 3       | 4       | 5       | 6       | 7       | 8       | 9       | 10      |
|-----------|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|
| imp_rate  | 0.20745 | 0.20182 | 0.22336 | 0.20081 | 0.21000 | 0.21039 | 0.20440 | 0.21559 | 0.19978 | 0.21069 |
| mat_rate  | 0.63768 | 0.65303 | 0.61126 | 0.63552 | 0.63544 | 0.61204 | 0.61277 | 0.64324 | 0.63224 | 0.64218 |

Month-specific data

| Parameter        | 1         | 2         | 3         | 4         | 5         | 6         | 7         | 8         | 9         | 10        |
|------------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
| ocean_abundance  | 34138.2384| 33660.7294| 33638.2628| 34820.2980| 34752.4966| 33731.0876| 34197.4639| 33770.9678| 34532.9376| 33434.5292|
| impact           | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    |
| maturation       | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    | 0.0000    |
| natural_mort     | 628.9448  | 620.1474  | 619.7335  | 641.5107  | 640.2616  | 621.4437  | 630.0359  | 622.1784  | 636.2165  | 615.9801  |

Details

Aging convention

We use fishing age, or year of life, as the age for captured tags. This aging convention
starts from age-1. Namely, as soon as the fish is born, it is in the first year of life,
thus age-1. Accordingly, the age in the size_at_age data frame should use fishing age
as well.

Detail, bootstrap, and results

Since detail and bootstrap are Boolean valued variables, there are four combinations.

detail = True, bootstrap = True

Provides results with detailed summary statistics using bootstrapped data.

detail = False, bootstrap = True

Provides results with cohort data only using bootstrapped data.

detail = True, bootstrap = False

Provides results with detailed summary statistics using point estimates.

detail = False, bootstrap = True

Provides results with cohort data only using point estimates.

For more information, see the value section.

Danger of incomplete cohort reconstruction

If the provided recovery data don't span the entire life time of a stock, cohort reconstruction
may fail to yield accurate information. Be sure to provide a complete cohort recovery data set.

References

Chen EK, Satterthwaite WH, O’Farrell MR, Carlson SM (????). “Incorporating age structure into the assessment and forecasting of Sacramento River Fall Chinook salmon (Oncorhynchus tshawytscha).” In preparation.

Salmon Technical Team (2000). “STT Recommendations for Hooking Mortality Rates in 2000 Recreational Ocean Chinook and Coho Fisheries.” Pacific Fishery Management Council, Portland. https://www.pcouncil.org/documents/2021/05/stt-recommendations-for-hooking-mortality-rates-in-2000-recreational-ocean-chinook-and-coho-fisheries.pdf/.

Examples


# Bootstrapped (3 iterations) and detailed cohort reconstruction.
result = cohort_reconstruct(rel = release, reco = recovery, birth_month = 8L,
  last_month = 12L, bootstrap = TRUE, iter = 3L, detail = TRUE)
#> Preparing data.
#> Initiating cohort reconstruction.
#> Cohort reconstruction complete.

# Bootstrapped (3 iterations) but not detailed cohort reconstruction.
result = cohort_reconstruct(rel = release, reco = recovery, birth_month = 8L,
  last_month = 12L, bootstrap = TRUE, iter = 3L, detail = FALSE)
#> Preparing data.
#> Initiating cohort reconstruction.
#> Cohort reconstruction complete.

# Point estimated and detailed cohort reconstruction.
result = cohort_reconstruct(rel = release, reco = recovery, birth_month = 8L,
  last_month = 12L, bootstrap = FALSE, detail = TRUE)
#> Preparing data.
#> Initiating cohort reconstruction.
#> Cohort reconstruction complete.

# Point estimated but no detailed cohort reconstruction.
result = cohort_reconstruct(rel = release, reco = recovery, birth_month = 8L,
  last_month = 12L, bootstrap = FALSE, detail = FALSE)
#> Preparing data.
#> Initiating cohort reconstruction.
#> Cohort reconstruction complete.

# Setting `iter` to a non-zero number when `bootstrap` is `FALSE` doesn't affect the result.

result = cohort_reconstruct(rel = release, reco = recovery, birth_month = 8L,
  last_month = 12L, bootstrap = FALSE, iter = 1000L, detail = FALSE)
#> Preparing data.
#> Initiating cohort reconstruction.
#> Cohort reconstruction complete.