Duncan Lardeau Juvenile Rainbow Trout Abundance 2024
The suggested citation for this analytic report is:
Thorley, J.L., Andrusak, G.F. and Amies-Galonski, E. (2024) Duncan Lardeau Juvenile Rainbow Trout Abundance 2024. A Poisson Consulting Analytic Appendix. URL: https://www.poissonconsulting.ca/f/435610556.
Background
Rainbow Trout rear in the Lardeau and Lower Duncan rivers. Since 2006 (with the exception of 2015) annual spring snorkel surveys have been conducted to estimate the abundance and distribution of age-1 Rainbow Trout. From 2006 to 2010 the surveys were conducted at fixed index sites. Since 2011 fish observations have been mapped to the river based on their spatial coordinates as recorded by GPS.
The primary aims of the current analyses were to:
- Estimate the egg deposition.
- Estimate the spring abundance of age-1 fish by year.
- Estimate the stock-recruitment relationship between the egg deposition and the abundance of age-1 recruits the following spring.
- Estimate the survival from age-1 to age-2.
- Estimate the inlake survival by year and cohort.
- Estimate the expected number of spawners without in river and/or in lake variation.
Methods
Data Preparation
The data were provided by the Ministry of Forests, Lands and Natural Resource Operations (MFLNRO). The historical and current snorkel count data were manipulated using R version 4.4.1 (R Core Team 2022) and organised in an SQLite database.
Statistical Analysis
Model parameters were estimated using Bayesian methods. The estimates were produced using JAGS (Plummer 2003) and STAN (Carpenter et al. 2017). For additional information on Bayesian estimation the reader is referred to McElreath (2020).
Unless stated otherwise, the Bayesian analyses used weakly informative normal and half-normal prior distributions (Gelman et al. 2017). The posterior distributions were estimated from 1500 Markov Chain Monte Carlo (MCMC) samples thinned from the second halves of 3 chains (Kery and Schaub 2011, 38–40). Model convergence was confirmed by ensuring that the potential scale reduction factor \(\hat{R} \leq 1.05\) (Kery and Schaub 2011, 40) and the effective sample size (Brooks et al. 2011) \(\textrm{ESS} \geq 150\) for each of the monitored parameters (Kery and Schaub 2011, 61).
The parameters are summarised in terms of the point estimate, lower and upper 95% compatibility limits (Rafi and Greenland 2020) and the surprisal s-value (Greenland 2019). Together a pair of lower and upper compatibility limits (CLs) are referred to as a compatibility interval (CI). The estimate is the median (50th percentile) of the MCMC samples while the 95% CLs are the 2.5th and 97.5th percentiles. The s-value indicates how surprising it would be to discover that the true value of the parameter is in the opposite direction to the estimate (Greenland 2019). An s-value of \(>\) 4.32 bits, which is equivalent to a p-value \(<\) 0.05 (Kery and Schaub 2011; Greenland and Poole 2013), indicates that the surprise would be equivalent to throwing at least 4.3 heads in a row on a fair coin.
Variable selection was based on the heuristic of directional certainty Castilho and Prado (2021). Fixed effects were included if their s-value was \(>\) 4.32 bits (Kery and Schaub 2011). Based on a similar argument, random effects were included if their standard deviation had a lower 95% CL \(>\) 5% of the median estimate.
Model adequacy was assessed via posterior predictive checks (Kery and Schaub 2011). More specifically, the number of zeros and the first four central moments (mean, variance, skewness and kurtosis) for the deviance residuals were compared to the expected values by simulating new residuals. In this context the s-value indicates how surprising each observed metric is given the estimated posterior probability distribution for the residual variation.
Where computationally practical, the sensitivity of the parameters to the choice of prior distributions was evaluated by increasing the standard deviations of all normal, half-normal and log-normal priors by an order of magnitude and then using \(\hat{R}\) to evaluate whether the samples were drawn from the same posterior distribution (Thorley and Andrusak 2017).
The results are displayed graphically by plotting the modeled relationships between individual variables and the response with the remaining variables held constant. In general, continuous and discrete fixed variables are held constant at their mean and first level values, respectively, while random variables are held constant at their average values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82).
Unless stated otherwise the typical value is the arithmetic mean. When informative the influence of a particular variables is expressed in terms of the effect size (i.e., relative change in the response variable) with the 95% CI (Bradford et al. 2005).
The analyses were implemented using R version 4.4.1
(R Core Team 2022) and the
embr family of packages.
Model Descriptions
Length Correction
The annual bias (inaccuracy) and error (imprecision) in observer’s fish length estimates when spotlighting (standing) and snorkeling were quantified from the divergence of their length distribution from the length distribution for all observers (including measured fish) in that year. More specifically, the length correction that minimised the Jensen-Shannon divergence (Lin 1991) between the two distributions provided a measure of the inaccuracy while the minimum divergence (the Jensen-Shannon divergence was calculated with log to base 2 which means it lies between 0 and 1) provided a measure of the imprecision.
After correcting the fish lengths, age-1 individuals were assumed to be those with a fork length \(\leq\) 100 mm.
Abundance
The abundance was estimated from the count data using an overdispersed Poisson model (Kery and Schaub 2011, 55–56). The annual abundance estimates represent the total number of fish in the study area.
Key assumptions of the abundance model include:
- The lineal fish density varies with year, useable width and river kilometer as a polynomial, and randomly with site.
- The observer efficiency at marking sites varies by study design (GPS versus Index).
- The observer efficiency also varies by visit type (marking versus count) within study design and randomly by snorkeller.
- The expected count at a site is the expected lineal density multiplied by the site length, the observer efficiency and the proportion of the site surveyed.
- The residual variation in the actual count is gamma-Poisson distributed.
Condition
The condition of fish with a fork length \(\geq\) 500 mm was estimated via an analysis of mass-length relations (He et al. 2008).
More specifically the model was based on the allometric relationship
\[ W = \alpha_c L^{\beta_c}\]
where \(W\) is the weight (mass), \(\alpha_c\) is the coefficent, \(\beta_c\) is the exponent and \(L\) is the length.
To improve chain mixing the relation was log-transformed, i.e.,
\[ \log(W) = \log(\alpha_c) + \beta_c \log(L).\]
Key assumptions of the condition model include:
- \(\alpha_c\) can vary randomly by year.
- The residual variation in weight is log-normally distributed.
Fecundity
The fecundity of females with a fork length \(\geq\) 500 mm was estimated via an analysis of fecundity-mass relations.
More specifically the model was based on the allometric relationship
\[ F = \alpha_f W^{\beta_f}\]
where \(F\) is the fecundity, \(\alpha_f\) is the coefficent, \(\beta_f\) is the exponent and \(W\) is the weight.
To improve chain mixing the relation was log-transformed.
Key assumptions of the fecundity model include:
- The residual variation in fecundity is log-normally distributed.
Spawner Size
The average length of the spawners in each year (for years for which it was unavailable) was estimated from the mean weight of Rainbow Trout in the Kootenay Lake Rainbow Trout Mailout Survey (KLRT) using a linear regression. This approach was suggested by Rob Bison.
Egg Deposition
The egg deposition in each year was estimated by
- converting the average length of spawners to the average weight using the condition relationship for a typical year
- adjusting the average weight by the annual condition effect (interpolating where unavailable)
- converting the average weight to the average fecundity using the fecundity relationship
- multiplying the average fecundity by the AUC based estimate of the number of females (assuming a sex ratio of 1:1)
Stock-Recruitment
The relationship between the number of eggs (\(E\)) and the abundance of age-1 individuals the following spring (\(R\)) was estimated using a Beverton-Holt stock-recruitment model (Walters and Martell 2004):
\[ R = \frac{\alpha_s \cdot E}{1 + \beta_s \cdot E} \quad,\]
where \(\alpha_s\) is the maximum number of recruits per egg (egg survival), and \(\beta_s\) is the density dependence.
Key assumptions of the stock-recruitment model include:
- The residual variation in the number of recruits is log-normally distributed with the standard deviation scaling with the uncertainty in the number of recruits.
The age-1 maximum carrying capacity (\(K\)) is given by:
\[ K = \frac{\alpha_s}{\beta_s}\]
and the \(E_{K/2}\) Limit Reference Point (Mace 1994) (\(E_{0.5 R_{max}}\)), which corresponds to the stock (number of eggs) that produce 50% of the maximum recruitment (\(K\)), by \[E_{K/2} = \frac{1}{\beta_s}\]
The LRP was also converted into a number of spawners in a typical year (assuming 6,000 eggs per spawner and a sex ratio of 1:1).
Age-1 to Age-2 Survival
The relationship between the number of age-1 individuals and the number of age-2 individuals the following year was estimated using a linear regression through the origin where the slope was constrained to lie between 0 and 1 by a logistic transformation.
Key assumptions of the survival rate model include:
- The residual variation in the number of age-2 individuals is log-normally distributed.
Calculated In-lake Survival
The in-lake survival of each recruit cohort was calculated by dividing the number of spawners in a given year by the number of age-1 recruits 6 years previous, assuming all spawners return at age-7.
Modelled In-lake Survival
The in-lake survival was estimated by modelling the relationship between the number of spawners in each year and the number of age-1 recruits four, five, and six years prior. The number of years indexed back is a key assumption and input to the model implying different ages of return. A proportional value was then assigned to each age class describing the proportion of recruits adopting each return strategy, for the pre and post collapse periods separately.
The survival in each year was fit as the fractional multiplier required to produce the expected number of spawners given the assumed proportions of each return strategy. Each estimate of year survival was effectively informed by the age-1 to spawner survival of all sets of recruits that passed through a given year. The sensitivity of the survival estimates to the proportion of fish adopting each return strategy was evaluated by refitting the model assuming different sets of proportions for each strategy in the pre and post collapse periods separately. The cohort survival was estimated by summing the proportional subsets of spawners returning at the three different ages assumed to originate from a single recruit cohort, and dividing that sum by the number of recruits in the original cohort.
An additional Beverton-Holt stock-recruitment model was used to analyse the relationship between spawners (\(E\)) and subsequent age-1 recruits (\(R\)), facilitating the estimation of recruit numbers prior to the availability of actual recruit data, and enabling the estimation of survival rates throughout the entire time-series of spawner counts.
Key assumptions of the in-lake survival model include:
- Spawning fish return at age five, six, or seven.
- Spawning fish fish return in some fixed proportion of age classes across all years in each period.
- Each spawning fish produces the same number of eggs in each year.
- The collapse of Kootenay Lake Kokanee occured in 2013.
- The residual variation in the number of spawners is log-normally distributed.
Expected Spawners
The expected spawners without in river and/or in lake variation was calculated from the stock-recruitment relationship and assuming an age-1 to spawner survival of 0.79%.
Reproductive Rate
The maximum reproductive rate (the number of spawners per spawner at low density) not accounting for fishing mortality was calculated by multiplying \(\alpha_s\) (number of recruits per egg at low density) from the stock-recruitment relationship by the inlake survival by the estimated eggs per spawner in each year (assuming a sex ratio of 1:1). The inlake survival from age-1 to spawning was calculated by dividing the subsequent number of returning spawners by the number of age-1 recruits assuming that equal numbers of fish adopt the strategy of intending to return at age 5, 6 and 7.
Results
Model Templates
Abundance
data {
int<lower=0> nMarked;
int<lower=0> Marked[nMarked];
int<lower=0> Resighted[nMarked];
int<lower=0> IndexMarked[nMarked];
int<lower=0> nObs;
int Marking[nObs];
int Index[nObs];
int<lower=0> nSwimmer;
int<lower=0> Swimmer[nObs];
int<lower=0> nYear;
int<lower=0> Year[nObs];
real Rkm[nObs];
int<lower=0> nSite;
int<lower=0> Site[nObs];
real SiteLength[nObs];
real SurveyProportion[nObs];
int Count[nObs];
}
parameters {
real bEfficiency;
real bEfficiencyIndex;
real bDensity;
real<lower=0> sDensityYear;
vector[nYear] bDensityYear;
vector[4] bDensityRkm;
real<lower=0> sDensitySite;
vector[nSite] bDensitySite;
real bEfficiencyMarking;
real bEfficiencyMarkingIndex;
real<lower=0,upper=5> sEfficiencySwimmer;
vector[nSwimmer] bEfficiencySwimmer;
real<lower=0> sDispersion;
}
model {
vector[nObs] eDensity;
vector[nObs] eEfficiency;
vector[nObs] eAbundance;
vector[nObs] eCount;
sDispersion ~ gamma(0.01, 0.01);
bDensity ~ normal(0, 2);
bDensityRkm ~ normal(0, 2);
sDensitySite ~ uniform(0, 5);
bDensitySite ~ normal(0, sDensitySite);
sDensityYear ~ uniform(0, 5);
bDensityYear ~ normal(0, sDensityYear);
bEfficiency ~ normal(0, 5);
bEfficiencyIndex ~ normal(0, 5);
bEfficiencyMarking ~ normal(0, 5);
bEfficiencyMarkingIndex ~ normal(0, 5);
sEfficiencySwimmer ~ uniform(0, 5);
bEfficiencySwimmer ~ normal(0, sEfficiencySwimmer);
for (i in 1:nMarked) {
target += binomial_lpmf(Resighted[i] | Marked[i],
inv_logit(
bEfficiency +
bEfficiencyIndex * IndexMarked[i] +
bEfficiencyMarking +
bEfficiencyMarkingIndex * IndexMarked[i]
));
}
for (i in 1:nObs) {
eDensity[i] = exp(bDensity +
bDensityRkm[1] * Rkm[i] +
bDensityRkm[2] * pow(Rkm[i], 2.0) +
bDensityRkm[3] * pow(Rkm[i], 3.0) +
bDensityRkm[4] * pow(Rkm[i], 4.0) +
bDensitySite[Site[i]] +
bDensityYear[Year[i]]);
eEfficiency[i] = inv_logit(
bEfficiency +
bEfficiencyIndex * Index[i] +
bEfficiencyMarking * Marking[i] +
bEfficiencyMarkingIndex * Index[i] * Marking[i] +
bEfficiencySwimmer[Swimmer[i]]);
eAbundance[i] = eDensity[i] * SiteLength[i];
eCount[i] = eAbundance[i] * eEfficiency[i] * SurveyProportion[i];
}
target += neg_binomial_2_lpmf(Count | eCount, sDispersion);
}
Block 1. Abundance model description.
Condition
data {
int nYear;
int nObs;
vector[nObs] Length;
vector[nObs] Weight;
int Year[nObs];
parameters {
real bWeight;
real bWeightLength;
real sWeightYear;
vector[nYear] bWeightYear;
real sWeight;
model {
vector[nObs] eWeight;
bWeight ~ normal(-10, 5);
bWeightLength ~ normal(3, 2);
sWeightYear ~ normal(-2, 5);
for (i in 1:nYear) {
bWeightYear[i] ~ normal(0, exp(sWeightYear));
}
sWeight ~ normal(-2, 5);
for(i in 1:nObs) {
eWeight[i] = bWeight + bWeightLength * log(Length[i]) + bWeightYear[Year[i]];
Weight[i] ~ lognormal(eWeight[i], exp(sWeight));
}
Block 2.
Fecundity
data {
int nObs;
vector[nObs] Weight;
vector[nObs] Fecundity;
parameters {
real bFecundity;
real bFecundityWeight;
real sFecundity;
model {
vector[nObs] eFecundity;
bFecundity ~ uniform(0, 5);
bFecundityWeight ~ uniform(0, 2);
sFecundity ~ uniform(0, 1);
for(i in 1:nObs) {
eFecundity[i] = log(bFecundity) + bFecundityWeight * log(Weight[i]);
Fecundity[i] ~ lognormal(eFecundity[i], sFecundity);
}
Block 3.
Stock-Recruitment
model {
a ~ dunif(0, 1)
b ~ dunif(0, 0.1)
sScaling ~ dunif(0, 5)
eRecruits <- a * Stock / (1 + Stock * b)
for(i in 1:nObs) {
esRecruits[i] <- SDLogRecruits[i] * sScaling
Recruits[i] ~ dlnorm(log(eRecruits[i]), esRecruits[i]^-2)
}
Block 4. Stock-Recruitment model description.
Age-1 to Age-2 Survival
model {
bSurvival ~ dnorm(0, 2^-2)
sRecruits ~ dnorm(0, 2^-2) T(0,)
for(i in 1:nObs) {
logit(eSurvival[i]) <- bSurvival
eRecruits[i] <- Stock[i] * eSurvival[i]
Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
}
Block 5. In-river survival model description.
Modelled In-lake Survival
.model{
a ~ dnorm(300, 50^-2) T(0,)
b ~ dexp(1)
sRecruits ~ dexp(1)
sSpawnersReturning ~ dexp(1)
bSurv ~ dnorm(0, 2^-2)
sYearSurv ~ dexp(1)
bPostCollapse ~ dnorm(0, 1^-2)
for (i in 1:nObs) {
eRecruits[i] <- a * SpawnersActive[i] / (1 + SpawnersActive[i] * b)
Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
}
for (i in 1:nObs) {
bYearSurv[i] ~ dnorm(0, sYearSurv^-2)
logit(eYearSurv[i]) <- bSurv + bYearSurv[i] + bPostCollapse * PostCollapse[i]
}
for (i in 1:(nObs - return - 1)) {
eSpawnersCohort[i, 1] <- Recruits[i] * prod(eYearSurv[i:(i + return - 1)])
eSpawnersCohort[i, 2] <- Recruits[i] * prod(eYearSurv[i:(i + return - 1 + 1)])
eSpawnersCohort[i, 3] <- Recruits[i] * prod(eYearSurv[i:(i + return - 1 + 2)])
}
for (i in 3:(nObs - return - 1)) {
eSpawnersReturning[i] <-
(1 - PostCollapse[i]) * eSpawnersCohort[i, 1] * PropPre1[i] + PostCollapse[i] * eSpawnersCohort[i, 1] * PropPost1[i] +
(1 - PostCollapse[i]) * eSpawnersCohort[i - 1, 2] * PropPre2[i] + PostCollapse[i] * eSpawnersCohort[i - 1, 2] * PropPost2[i] +
(1 - PostCollapse[i]) * eSpawnersCohort[i - 2, 3] * PropPre3[i] + PostCollapse[i] * eSpawnersCohort[i - 2, 3] * PropPost3[i]
}
for (i in (return + 2 + 1):(nObs - 1)) {
SpawnersReturning[i] ~ dlnorm(log(eSpawnersReturning[i - return]), sSpawnersReturning^-2)
}
Block 6. Model description.
Tables
Abundance
Table 1. Parameter descriptions.
| Parameter | Description |
|---|---|
Index |
Whether the ith visit was to an index site |
Marking[i] |
Whether the ith visit was to a site with marked
fish |
Rkm[i] |
River kilometer of ith visit |
SiteLength[i] |
Length of site of ith visit |
Site[i] |
Site of ith visit |
SurveyProportion[i] |
Proportion of site surveyed on ith visit |
Swimmer[i] |
Snorkeler on ith site visit |
Year[i] |
Year of ith site visit |
bDensityRkm[i] |
ith-order polynomial coefficients of effect of
river kilometer on bDensity |
bDensitySite[i] |
Effect of ith Site on bDensity |
bDensityYear[i] |
Effect of ith Year on bDensity |
bDensity |
Intercept for log(eDensity) |
bEfficiencyIndex |
Effect of Index on bEfficiency |
bEfficiencyMarkingIndex |
Effect of Marking and Index on bEfficiency |
bEfficiencyMarking |
Effect of Marking on bEfficiency |
bEfficiencySwimmer[i] |
Effect of ith Swimmer on bEfficiency |
bEfficiency |
Intercept of logit(eEfficiency) |
eAbundance[i] |
Expected abundance of fish at site of ith visit |
eCount[i] |
Expected total number of fish at site of ith
visit |
eDensity[i] |
Expected lineal density of fish at site of ith
visit |
eEfficiency[i] |
Expected observer efficiency on ith visit |
sDensitySite |
SD of bDensitySite |
sDispersion |
Overdispersion of Count[i] |
sEfficiencySwimmer |
SD of bEfficiencySwimmer |
Age-1
Table 2. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| bDensity | -1.3743281 | -1.8258968 | -0.9303509 | 10.551708 |
| bDensityRkm[1] | -0.1612247 | -0.3034501 | -0.0151078 | 4.823788 |
| bDensityRkm[2] | 0.5698486 | 0.3659929 | 0.7817977 | 10.551708 |
| bDensityRkm[3] | -0.1297692 | -0.2034507 | -0.0631312 | 10.551708 |
| bDensityRkm[4] | -0.2589458 | -0.3258539 | -0.1919248 | 10.551708 |
| bEfficiency | -1.7790018 | -2.0489025 | -1.5103778 | 10.551708 |
| bEfficiencyIndex | 0.3945270 | -0.2418596 | 1.0143952 | 2.270938 |
| bEfficiencyMarking | 0.5344403 | 0.3276782 | 0.7408086 | 10.551708 |
| bEfficiencyMarkingIndex | 0.8102509 | 0.1937737 | 1.4419331 | 6.464245 |
| sDensitySite | 0.6983107 | 0.6340298 | 0.7680758 | 10.551708 |
| sDensityYear | 0.7144574 | 0.4966376 | 1.0965765 | 10.551708 |
| sDispersion | 1.3162959 | 1.1995853 | 1.4580268 | 10.551708 |
| sEfficiencySwimmer | 0.3650904 | 0.2157020 | 0.6900803 | 10.551708 |
Table 3. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 4111 | 13 | 3 | 500 | 5 | 644 | 1.006 | TRUE |
Table 4. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.3763075 | 0.4307954 | 0.4110922 | 0.4528156 | 10.551708 |
| mean | -0.2985711 | -0.3666153 | -0.3945797 | -0.3370116 | 10.551708 |
| variance | 0.6005416 | 0.8397831 | 0.7980553 | 0.8790226 | 10.551708 |
| skewness | 0.2654207 | 0.5745270 | 0.5012478 | 0.6489050 | 10.551708 |
| kurtosis | -0.4022754 | -0.1511623 | -0.3188455 | 0.0498346 | 7.381783 |
Table 5. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1.006 | 1.007 | 1.004 |
Age-2
Table 6. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| bDensity | -2.2703833 | -2.7037196 | -1.8402817 | 10.5517083 |
| bDensityRkm[1] | -0.2507536 | -0.4379654 | -0.0550451 | 7.0922766 |
| bDensityRkm[2] | 0.0871299 | -0.1737306 | 0.3337300 | 0.9573837 |
| bDensityRkm[3] | 0.0485288 | -0.0448802 | 0.1357759 | 1.8001642 |
| bDensityRkm[4] | -0.1006657 | -0.1820998 | -0.0170527 | 5.5975120 |
| bEfficiency | -1.9405264 | -2.2940156 | -1.5696199 | 10.5517083 |
| bEfficiencyIndex | 0.5477041 | -0.0646702 | 1.2117753 | 3.5630236 |
| bEfficiencyMarking | 0.8973363 | 0.6060298 | 1.1943134 | 10.5517083 |
| bEfficiencyMarkingIndex | 1.9251162 | 0.8944422 | 3.0229240 | 10.5517083 |
| sDensitySite | 0.8599432 | 0.7779852 | 0.9455527 | 10.5517083 |
| sDensityYear | 0.5162494 | 0.3607655 | 0.7999322 | 10.5517083 |
| sDispersion | 1.2125268 | 1.0491808 | 1.3894261 | 10.5517083 |
| sEfficiencySwimmer | 0.2981136 | 0.1732462 | 0.5238337 | 10.5517083 |
Table 7. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 4111 | 13 | 3 | 500 | 5 | 934 | 1.007 | TRUE |
Table 8. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.5876916 | 0.6108003 | 0.5897531 | 0.6311177 | 4.851268 |
| mean | -0.3036252 | -0.3340637 | -0.3621187 | -0.3080274 | 5.796821 |
| variance | 0.5537440 | 0.7006562 | 0.6585497 | 0.7430052 | 10.551708 |
| skewness | 0.7617150 | 0.9273396 | 0.8443825 | 1.0259777 | 10.551708 |
| kurtosis | -0.0730003 | 0.4754988 | 0.2153444 | 0.7970010 | 10.551708 |
Table 9. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1.007 | 1.005 | 1.004 |
Condition
Table 10. Parameter descriptions.
| Parameter | Description |
|---|---|
Length[i] |
Fork length of ith fish |
Weight[i] |
Recorded weight of ith fish |
Year[i] |
Year ith fish was captured |
bWeightLength |
Intercept of effect of log(Length) on bWeight |
bWeightYear[i] |
Effect of ith Year on bWeight |
bWeight |
Intercept of log(eWeight) |
eWeight[i] |
Expected Weight of ith fish |
sWeightYear |
Log standard deviation of bWeightYear |
sWeight |
Log standard deviation of residual variation in
log(Weight) |
Table 11. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| bWeight | -12.745405 | -13.133834 | -12.338893 | 10.55171 |
| bWeightLength | 3.213730 | 3.152203 | 3.272080 | 10.55171 |
| sWeight | -1.926025 | -1.966230 | -1.885349 | 10.55171 |
| sWeightYear | -1.991494 | -2.264444 | -1.672420 | 10.55171 |
Table 12. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 1201 | 4 | 3 | 500 | 10 | 903 | 1.006 | TRUE |
Table 13. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0000771 | 0.0005379 | -0.0568825 | 0.0549890 | 0.0213019 |
| variance | 0.9779704 | 1.0005631 | 0.9235082 | 1.0876789 | 0.8254901 |
| skewness | -0.4265371 | -0.0017194 | -0.1288944 | 0.1332694 | 10.5517083 |
| kurtosis | 2.0182810 | -0.0107774 | -0.2525675 | 0.3011076 | 10.5517083 |
Table 14. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1.006 | 1.007 | 1.005 |
Fecundity
Table 15. Parameter descriptions.
| Parameter | Description |
|---|---|
Fecundity[i] |
Fecundity of ith fish (eggs) |
Weight[i] |
Weight of ith fish (mm) |
bFecundityWeight |
Effect of log(Weight) on log(bFecundity) |
bFecundity |
Intercept of eFecundity |
eFecundity[i] |
Expected Fecundity of ith fish |
sFecundity |
SD of residual variation in log(Fecundity) |
Table 16. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| bFecundity | 3.8437989 | 1.5652072 | 4.9608686 | 10.55171 |
| bFecundityWeight | 0.8620380 | 0.8312411 | 0.9644906 | 10.55171 |
| sFecundity | 0.1283548 | 0.0946227 | 0.1842704 | 10.55171 |
Table 17. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 22 | 3 | 3 | 500 | 10 | 981 | 1.006 | TRUE |
Table 18. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0097217 | 0.0001140 | -0.4089293 | 0.4168115 | 0.0508664 |
| variance | 0.9147370 | 0.9500014 | 0.4922016 | 1.7079577 | 0.1647680 |
| skewness | -2.1716992 | 0.0107975 | -0.9538329 | 0.9134493 | 10.5517083 |
| kurtosis | 6.6817124 | -0.4269790 | -1.2364339 | 1.9763747 | 10.5517083 |
Table 19. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1.006 | 1 | 1.005 |
Stock-Recruitment
Table 20. Parameter descriptions.
| Parameter | Description |
|---|---|
Recruits[i] |
Number of recruits from ith spawn year |
SDLogRecruits[i] |
Standard deviation of uncertainty in
log(Recruits[i]) |
Stock[i] |
Number of eggs in ith spawn year |
a |
Recruits per Stock at low density |
b |
Density-dependence |
eRecruits[i] |
Expected number of recruits from ith spawn year |
esRecruits[i] |
Expected SD of residual variation in Recruits |
sScaling |
Scaling term for SD of residual variation in
log(eRecruits) |
Age-1
Table 21. Estimated reference points (with 80% CRIs).
| Metric | estimate | lower | upper |
|---|---|---|---|
| eggs | 297000 | 115000.00000 | 593000.0000 |
| spawners | 99 | 38.33333 | 197.6667 |
Table 22. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 0.3573298 | 0.1800010 | 0.9239662 | 10.55171 |
| b | 0.0000034 | 0.0000012 | 0.0000121 | 10.55171 |
| sScaling | 2.6643747 | 1.8981738 | 4.0219737 | 10.55171 |
Table 23. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 18 | 3 | 3 | 500 | 100 | 1383 | 1.001 | TRUE |
Table 24. Estimated carry capacity (with 95% CRIs).
| estimate | lower | upper | Carrying Capacity |
|---|---|---|---|
| 106000 | 65400 | 165000 | Maximum |
Table 25. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | -0.0537591 | -0.0066176 | -0.4866942 | 0.4824889 | 0.2399599 |
| variance | 0.8565058 | 0.9476934 | 0.4403791 | 1.7753230 | 0.3705560 |
| skewness | 0.4543657 | 0.0037044 | -0.9824065 | 1.0366028 | 1.4510459 |
| kurtosis | -0.7661141 | -0.4631965 | -1.3116462 | 1.8005312 | 0.8254901 |
Table 26. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1.001 | 1 | 1 |
Table 27. Summary of the key stock-recruitment values and estimates for ‘observed’ and ‘no cull’ scenarios. The estimated number of recruits in the ‘no cull’ scenario assumes the same residual variation as in the estimate for the observed recruits.
| SpawnYear | Spawners Observed | Spawners No Cull | Stock Observed | Stock No Cull | Recruits Observed | Recruits No Cull |
|---|---|---|---|---|---|---|
| 2022 | 464 | 609 | 423045 | 555303 | 56272 | 62919 |
| 2023 | 331 | 772 | 329957 | 769891 | 27325 | 47845 |
| 2024 | 502 | 1228 | 571796 | 1399395 | NA | NA |
Age-1 to Age-2 Survival
Table 28. Parameter descriptions.
| Parameter | Description |
|---|---|
Recruits[i] |
Number of age-2 juveniles from ith spawn year |
Stock[i] |
Number of age-1 juveniles from ith spawn year |
bSurvival |
logit(eSurvival) |
eSurvival[i] |
Expected annual survival for ith spawn year |
sRecruits |
SD of residual variation in Recruits |
Age-2
Table 29. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| bSurvival | -0.8334961 | -1.1793013 | -0.4337028 | 10.55171 |
| sRecruits | 0.4634771 | 0.3368493 | 0.7012649 | 10.55171 |
Table 30. Model summary.
| n | K | nchains | niters | nthin | ess | rhat | converged |
|---|---|---|---|---|---|---|---|
| 16 | 2 | 3 | 500 | 1 | 646 | 1 | TRUE |
Table 31. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | -0.0224818 | -0.0207777 | -0.4987503 | 0.4750927 | 0.0096437 |
| variance | 0.9048126 | 0.9385264 | 0.4092355 | 1.8833568 | 0.1518963 |
| skewness | -0.2015127 | 0.0378957 | -0.9644045 | 0.9613019 | 0.7204010 |
| kurtosis | -0.9277552 | -0.5264601 | -1.3537739 | 1.5303327 | 1.1572456 |
Table 32. Model sensitivity.
| all | analysis | sensitivity | bound |
|---|---|---|---|
| all | 1 | 1 | 1 |
Modelled In-lake Survival
Table 33. Parameter descriptions.
| Parameter | Description |
|---|---|
bPostCollapse |
|
The effect of the collapse on eYearSurv. |
|
PostCollapse[i] |
The ith value for the state (pre or post collapse)
of Kootenay Lake. |
PropPre1[i] |
The ith value of the assumed proportion of spawners
in the 1st age class returning. |
PropPre2[i] |
The ith value of the assumed proportion of spawners
in the 2nd age class returning. |
PropPre3[i] |
The ith value of the assumed proportion of spawners
in the 3rd age class returning. |
Recruits[i] |
The ith Recruits value |
SpawnersActive[i] |
The ith SpawnersActive value |
SpawnersReturning[i] |
The ith SpawnersReturning value |
a |
Recruits per Spawner at low density. |
bSurv |
The intercept for the effect of year on eYearSurv[i]. |
bYearSurv[i] |
The effect of year on eYearSurv[i]. |
b |
Density-dependence. |
eCohortSurv[i] |
The expected cohort survival Recruits[i]. |
eRecruits[i] |
Expected value of Recruits[i] |
eSpawnersReturning[i] |
Expected value of SpawnersReturning[i] |
eYearSurv |
Expected value of eYearSurv[i]. |
sRecruits |
SD of residual variation in eRecruits |
sSpawnersReturning |
SD of residual variation in eSpawnersReturning |
sYearSurv |
SD of residual variation in eYearSurv. |
Returning Spawners
All 5
Table 34. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 281.00000 | 208.00000 | 376.00000 | 10.600 |
| b | 0.00209 | 0.00101 | 0.00376 | 10.600 |
| bPostCollapse | -0.11600 | -0.42700 | 0.30100 | 0.957 |
| bSurv | -0.83200 | -0.97500 | -0.68200 | 10.600 |
| sRecruits | 0.37400 | 0.30000 | 0.48600 | 10.600 |
| sSpawnersReturning | 0.34700 | 0.16600 | 0.56300 | 10.600 |
| sYearSurv | 0.42100 | 0.18400 | 0.67800 | 10.600 |
Table 35. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0585474 | 0.0101621 | -0.6354573 | 0.6227919 | 0.1821109 |
| variance | 1.1320100 | 0.9263430 | 0.3160870 | 2.1790993 | 0.5644442 |
| skewness | -0.4466541 | 0.0192519 | -1.1142246 | 1.1491123 | 1.1788432 |
| kurtosis | -0.1869997 | -0.7026992 | -1.5239490 | 1.4774435 | 1.0028864 |
All 6
Table 36. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 282.00000 | 2.10e+02 | 376.00000 | 10.6 |
| b | 0.00197 | 9.67e-04 | 0.00348 | 10.6 |
| bPostCollapse | -0.12600 | -4.34e-01 | 0.23500 | 1.2 |
| bSurv | -0.46900 | -6.03e-01 | -0.33000 | 10.6 |
| sRecruits | 0.37200 | 3.00e-01 | 0.47800 | 10.6 |
| sSpawnersReturning | 0.38300 | 2.49e-01 | 0.54600 | 10.6 |
| sYearSurv | 0.39500 | 2.10e-01 | 0.65200 | 10.6 |
Table 37. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0666896 | -0.0106073 | -0.6496175 | 0.5831963 | 0.2651505 |
| variance | 1.8505189 | 0.9282416 | 0.2833162 | 2.0650615 | 3.3918369 |
| skewness | -0.1194776 | 0.0210291 | -1.1144232 | 1.1648746 | 0.3313299 |
| kurtosis | -1.1441895 | -0.7008306 | -1.5504887 | 1.3433113 | 1.2825816 |
All 7
Table 38. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 286.00000 | 207.00000 | 379.00000 | 10.60 |
| b | 0.00207 | 0.00101 | 0.00348 | 10.60 |
| bPostCollapse | -0.18000 | -0.52100 | 0.20700 | 1.72 |
| bSurv | -0.17100 | -0.31700 | -0.00142 | 4.32 |
| sRecruits | 0.36300 | 0.29200 | 0.45800 | 10.60 |
| sSpawnersReturning | 0.32300 | 0.16600 | 0.47500 | 10.60 |
| sYearSurv | 0.44800 | 0.25300 | 0.77300 | 10.60 |
Table 39. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | -0.0493682 | 0.0154623 | -0.6062108 | 0.6355902 | 0.2129719 |
| variance | 1.2259044 | 0.9169064 | 0.2873991 | 2.1803832 | 0.8357463 |
| skewness | -0.5246227 | -0.0041322 | -1.0976921 | 1.1662647 | 1.4405726 |
| kurtosis | -0.8303292 | -0.7116310 | -1.5488373 | 1.2693171 | 0.2063030 |
All Equal
Table 40. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 281.00000 | 1.99e+02 | 376.00000 | 10.600 |
| b | 0.00211 | 9.03e-04 | 0.00378 | 10.600 |
| bPostCollapse | -0.11000 | -4.45e-01 | 0.32000 | 0.924 |
| bSurv | -0.56800 | -7.12e-01 | -0.40800 | 10.600 |
| sRecruits | 0.39900 | 3.10e-01 | 0.52100 | 10.600 |
| sSpawnersReturning | 0.28000 | 1.55e-01 | 0.42600 | 10.600 |
| sYearSurv | 0.45500 | 2.51e-01 | 0.72500 | 10.600 |
Table 41. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0584431 | 0.0028843 | -0.6527444 | 0.5904975 | 0.2559393 |
| variance | 1.1820976 | 0.9309631 | 0.3109260 | 2.1219486 | 0.6921735 |
| skewness | -0.9465507 | 0.0106024 | -1.1107880 | 1.1557899 | 3.4748927 |
| kurtosis | -0.3122755 | -0.7150041 | -1.5350465 | 1.2903107 | 0.8085569 |
Pre 7 Post 6
Table 42. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 285.00000 | 2.08e+02 | 374.00000 | 10.60 |
| b | 0.00201 | 9.02e-04 | 0.00352 | 10.60 |
| bPostCollapse | -0.39000 | -6.75e-01 | -0.08310 | 7.38 |
| bSurv | -0.18600 | -3.03e-01 | -0.05120 | 6.64 |
| sRecruits | 0.36300 | 2.92e-01 | 0.46200 | 10.60 |
| sSpawnersReturning | 0.36200 | 2.51e-01 | 0.51300 | 10.60 |
| sYearSurv | 0.35500 | 1.88e-01 | 0.56800 | 10.60 |
Table 43. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | -0.0873372 | -0.0018749 | -0.6202202 | 0.6093356 | 0.3705560 |
| variance | 2.0115994 | 0.9294763 | 0.3055676 | 2.1138667 | 3.7572924 |
| skewness | 0.2553128 | 0.0021376 | -1.1324240 | 1.1407068 | 0.6523513 |
| kurtosis | -1.0365229 | -0.7206386 | -1.5176846 | 1.2930266 | 0.7851794 |
Pre 7 Post Half 6
Table 44. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 284.0000 | 2.09e+02 | 371.00000 | 10.60 |
| b | 0.0019 | 9.15e-04 | 0.00331 | 10.60 |
| bPostCollapse | -0.3330 | -6.32e-01 | 0.00389 | 4.18 |
| bSurv | -0.1840 | -3.12e-01 | -0.03500 | 5.69 |
| sRecruits | 0.3620 | 2.90e-01 | 0.46600 | 10.60 |
| sSpawnersReturning | 0.2890 | 1.52e-01 | 0.43500 | 10.60 |
| sYearSurv | 0.4040 | 2.36e-01 | 0.64800 | 10.60 |
Table 45. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | -0.0756881 | -0.0070924 | -0.5563411 | 0.6390384 | 0.3508097 |
| variance | 1.5676145 | 0.9480466 | 0.3097392 | 2.1288103 | 2.1212557 |
| skewness | -0.1323705 | -0.0055186 | -1.1255508 | 1.0668854 | 0.3168908 |
| kurtosis | -1.0676600 | -0.7293763 | -1.5156546 | 1.2827296 | 0.9314884 |
Active Spawners Only
All 6
Table 46. Model coefficients.
| term | estimate | lower | upper | svalue |
|---|---|---|---|---|
| a | 282.00000 | 2.07e+02 | 370.00000 | 10.60 |
| b | 0.00192 | 8.86e-04 | 0.00337 | 10.60 |
| bPostCollapse | -0.20000 | -4.74e-01 | 0.10400 | 2.36 |
| bSurv | -0.47000 | -5.95e-01 | -0.34300 | 10.60 |
| sRecruits | 0.36600 | 2.95e-01 | 0.46500 | 10.60 |
| sSpawnersReturning | 0.34000 | 1.94e-01 | 0.50200 | 10.60 |
| sYearSurv | 0.38100 | 2.05e-01 | 0.63300 | 10.60 |
Table 47. Model posterior predictive checks.
| moment | observed | median | lower | upper | svalue |
|---|---|---|---|---|---|
| zeros | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 | 0.0000000 |
| mean | 0.0412512 | 0.0033332 | -0.6560916 | 0.6067165 | 0.1712472 |
| variance | 1.5558683 | 0.9145400 | 0.3002060 | 2.0641426 | 2.0558532 |
| skewness | -0.4580048 | 0.0281382 | -1.1177285 | 1.1677583 | 1.4045033 |
| kurtosis | -1.2149941 | -0.7320847 | -1.5349819 | 1.4565607 | 1.5772937 |
Figures
Length Correction
Abundance
Age-1
Age-2
Condition
Fecundity
Spawner Size
Egg Deposition
Stock-Recruitment
Age-1
Age-1 to Age-2 Survival
Age-2
Calculated In-lake Survival
Expected Spawners
Modelled In-lake Survival
Stock-Recruitment
Returning Spawners
All 5
All 6
All 7
All Equal
Pre 7 Post 6
Pre 7 Post Half 6
Active Spawners Only
All 6
Reproductive Rate (age-1)
Reproductive Rate (age-2)
Acknowledgements
The organisations and individuals whose contributions have made this analysis report possible include:
- Habitat Conservation Trust Foundation (HCTF) and the anglers, hunters, trappers and guides who contribute to the Trust.
- Fish and Wildlife Compensation Program (FWCP) and its program partners BC Hydro, the Province of BC and Fisheries and Oceans Canada.
- Ministry of Forests, Lands and Natural Resource
Operations (MFLNRO)
- Greg Andrusak
- Matt Neufeld
- Jeff Burrows
- Tyler Weir
- Rob Bison
- Poisson Consulting
- Evan Amies-Galonski
- Seb Dalgarno
- Robyn Irvine
- Stefan Himmer
- Vicky Lipinski
- John Hagen
- Scott Decker
- Jody Schick
- Gillian Sanders
- Jeremy Baxter
- Jeff Berdusco
- Dave Derosa