Spawning

Lower Columbia River Rainbow Trout Spawning 2020

The suggested citation for this analytic appendix is:

Thorley, J.L. and Amies-Galonski, E. (2021) Lower Columbia River Rainbow Trout Spawning 2020. A Poisson Consulting Analytic Appendix. URL: https://www.poissonconsulting.ca/f/626789785.

Background

Each spring in the Lower Columbia River (LCR) below Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below Brilliant Dam, thousands of Rainbow Trout spawn.

Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to estimate the abundance of spawners, egg survival and the stock-recruitment relationship. We also explore the use of drone imagery for redd mapping.

Data Preparation

The aerial spawner counts were conducted by Mountain Water Research. The age-1 recruitment estimates were provided by the Fish Population Indexing Program. The drone surveys were conducted by Harrier Aerial Surveys. The remaining data were collected by Mountain Water Research, Poisson Consulting and Nuupqu.

The study area was divided into seven sections: Norns Creek Fan (NCF), NCF to LKR, LKR, LKR to Genelle, Genelle. Redd and spawner counts upstream of Norns Creek Fan and downstream of Genelle were excluded from the section totals because they constitute less than 0.1% of the total count and were not surveyed in all years. The redd and spawner counts for the Right Upstream Bank above Robson Bridge were also excluded as they appear to be primarily driven by viewing conditions (and constitute less than 2.5% of the total). Viewing conditions were classified as Good or Poor. If information on the viewing conditions was not available a decline in the redd count of more than one third of the cumulative maximum count for a particular section was assumed to be caused by poor viewing conditions.

The mapped peak redd and fish counts are the peak counts for that site.

The data were prepared for analysis using R version 4.0.4 (R Core Team 2017).

Statistical Analysis

Model parameters were estimated using Bayesian methods. The estimates were produced using JAGS (Plummer 2015) and STAN (Carpenter et al. 2017). For additional information on Bayesian estimation the reader is referred to McElreath (2016).

Unless stated otherwise, the Bayesian analyses used weakly informative normal and half-normal prior distributions (Gelman, Simpson, and Betancourt 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, standard deviation (sd), the z-score, lower and upper 95% confidence/credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles. A p-value of 0.05 indicates that the lower or upper 95% CL is 0.

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 4.0.4 (R Core Team 2019) and the mbr family of packages.

Model Descriptions

Area-Under-The-Curve

The spawner abundance and spawn timings were estimated from the aerial fish and redd counts for the five sections (in three segments) using an Area-Under-The-Curve (AUC) model.

Key assumptions of the AUC model include:

  • Spawner abundance varies by river section.
  • Spawner abundance varies randomly by year and section within year.
  • Spawner observer efficiency is between 0.8 and 1.0.
  • Number of redds per spawner is between 1 and 2.
  • Spawner residence time is between 14 and 21 days as determined in a previous year’s analysis.
  • Redd residence time is between 30 and 40 days.
  • Spawner arrival and departure times are normally distributed.
  • Spawner arrival duration (SD of normal distribution) varies randomly by river segment.
  • Peak spawner arrival timing varies randomly by year.
  • The residual variations in the spawner and redd counts are described by separate Negative Binomial distributions.

Stock-Recruitment

The relationship between the number of spawners/eggs and the resultant number of age-1 fish was estimated using a Beverton-Holt stock-recruitment model (Walters and Martell 2004):

\[ R = \frac{\alpha \cdot S}{1 + \beta \cdot S}\]

where \(S\) is the stock (spawners or eggs), \(R\) is the recruits, \(\alpha\) is the recruits per stock at low density and \(\beta\) determines the density-dependence.

The carrying capacity is \(\alpha / \beta\).

Key assumptions of the stock-recruitment model include:

  • The expected number of recruits varies with the proportion of redds dewatered.
  • The residual variation in the number of recruits is log-normally distributed.

Spawners

Key assumptions of the spawner stock-recruitment model include:

  • The recruits per spawner at low density (\(\alpha\)) is normally distributed with a mean of 90 and a SD of 50.

The mean of 90 for \(\alpha\) was based on an average of 2,900 eggs per female spawner, a 50:50 sex ratio, 50% egg survival, 50% post-emergence fall survival, 50% overwintering survival and 50% summer survival.

Eggs

Key assumptions of the egg stock-recruitment model include:

  • The recruits per spawner at low density (\(\alpha\)) is normally distributed with a mean of 0.0625 and a SD of 0.03.

The mean of 0.625 is based on a 50% egg survival, 50% post-emergence fall survival, 50% overwintering survival and 50% summer survival.

Stage

The spreadsheet Norn's Fan stage discharge curve.xls predicts the stage at CNN (in m) from the discharge (in cms) from HLK and BRDs dam based on the multiple regression equation

\[\text{CNN} = 417.133 + 0.001883826 \cdot \text{HLK} + 0.000559058 \cdot \text{BRD}\]

We predict the stage from the discharge using a multiple second-order polynomial regression with interactions. The main part model was of the following form:

\[\text{CNN} = \text{b0} + \text{bHLK} \cdot \text{HLK} + \text{bHLK2} \cdot \text{HLK}^2 + \text{bBRD} \cdot \text{BRD} + \text{bBRD2} \cdot \text{BRD}^2 + \text{bHLKBRD} \cdot \text{HLK} \cdot \text{BRD} + \text{bHLK2BRD} \cdot \text{HLK}^2 \cdot \text{BRD}\] To ensure model convergence \(\text{HLK}\) and \(\text{BRD}\) were the standardized discharges. The model also included a parameter to correct for an offset in \(\text{CNN}\) from May 1st 2017.

Model Templates

Area-Under-The-Curve

data {
  int<lower=0> nObs;
  int<lower=0> nSection;
  int<lower=0> nSegment;
  int<lower=0> nYear;

  int Year[nObs];
  int Section[nObs];
  int Segment[nObs];
  real Doy[nObs];
  int Fish[nObs];
  int Redds[nObs];
parameters {
  vector<lower=3,upper=9>[nSection] bFishAbundanceSection;

  real<lower=0> sFishAbundanceYear;
  vector[nYear] bFishAbundanceYear;
  real<lower=0> sFishAbundanceSectionYear;
  vector[nSection * nYear] bFishAbundanceSectionYear;

  real<lower=0.8,upper=1.0> bFishObserverEfficiency;
  real<lower=0.0,upper=2.0> bReddObserverEfficiency;

  real<lower=1, upper=2> bReddPerFish;

  real<lower=14, upper=21> bFishResidenceTime;
  real<lower=30, upper=40> bReddResidenceTime;

  real<lower=100, upper=150> bPeakFishArrivalTiming;

  real<lower=0,upper=21> sPeakFishArrivalTimingYear;
  vector[nYear] bPeakFishArrivalTimingYear;

  real<lower=log(10), upper=log(50)> bFishArrivalDuration;

  real<lower=0> sFishArrivalDurationSegmentYear;
  vector[nSegment * nYear] bFishArrivalDurationSegmentYear;

  real<lower=0, upper=2> bDispersionRedds;
  real<lower=0, upper=2> bDispersionFish;
model {
  vector[nObs] eFishAbundance;
  vector[nObs] ePeakFishArrivalTiming;
  vector[nObs] eFishArrivalDuration;

  vector[nObs] eRedds;
  vector[nObs] eFish;

  sFishAbundanceYear ~ normal(0, 1);
  bFishAbundanceYear ~ normal(0, sFishAbundanceYear);
  sFishAbundanceSectionYear ~ normal(0, 1);
  bFishAbundanceSectionYear ~ normal(0, sFishAbundanceSectionYear);

  bPeakFishArrivalTimingYear ~ normal(0, sPeakFishArrivalTimingYear);
  bFishArrivalDurationSegmentYear ~ normal(0, 1);
  bFishArrivalDurationSegmentYear ~ normal(0, sFishArrivalDurationSegmentYear);

  for (i in 1:nObs) {
    eFishAbundance[i] = exp(bFishAbundanceSection[Section[i]] + bFishAbundanceYear[Year[i]] + bFishAbundanceSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    ePeakFishArrivalTiming[i] = bPeakFishArrivalTiming + bPeakFishArrivalTimingYear[Year[i]];

    eFishArrivalDuration[i] = exp(bFishArrivalDuration + bFishArrivalDurationSegmentYear[((Segment[i] - 1) * Year[i]) + Year[i]]);

    eRedds[i] = eFishAbundance[i] * bReddPerFish * bReddObserverEfficiency * (normal_cdf(Doy[i], ePeakFishArrivalTiming[i], eFishArrivalDuration[i]) - normal_cdf(Doy[i], ePeakFishArrivalTiming[i] + bReddResidenceTime, eFishArrivalDuration[i]));

    eFish[i] = eFishAbundance[i] * bFishObserverEfficiency * (normal_cdf(Doy[i], ePeakFishArrivalTiming[i], eFishArrivalDuration[i]) - normal_cdf(Doy[i], ePeakFishArrivalTiming[i] + bFishResidenceTime, eFishArrivalDuration[i]));
  }
  Redds ~ neg_binomial_2(eRedds, 1/bDispersionRedds);
  Fish ~ neg_binomial_2(eFish, 1/bDispersionFish);

Block 1. Model description.

Stock-Recruitment

Spawners
.model {

  bAlpha ~ dnorm(90, 50^-2) T(1,)
  bBeta ~ dnorm(0, 1/10^-2) T(0,)

  bDewatered ~ dnorm(0, 100^-2)

  sRecruits ~ dnorm(0, 2^-2) T(0, )
 for(i in 1:length(Stock)) {
    log(eRecruits[i]) <- log(bAlpha * Stock[i] / (1 + bBeta * Stock[i])) + bDewatered * Dewatered[i]
    Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
  }

Block 2. Model description.

Eggs
.model {
  bAlpha ~ dnorm(0.0625, 0.03^-2) T(0,)
  bBeta ~ dnorm(0, 1/100000^-2) T(0, )

  bEggLoss ~ dnorm(0, 100^-2)

  sRecruits ~ dnorm(0, 2^-2) T(0,)
  for(i in 1:length(Recruits)){
    log(eRecruits[i]) <- log(bAlpha * Eggs[i] / (1 + bBeta * Eggs[i])) + bEggLoss * EggLoss[i]
    Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
  }

Block 3.

Stage

.model{
  bIntercept ~ dnorm(420, 2^-2)

  bOffset[1] <- 0
  for(i in 2:nOffset) {
    bOffset[i] ~ dnorm(0, 1^-2)
  }

  bHLK ~ dnorm(0, 1^-2)
  bHLK2 ~ dnorm(0, 1^-2)

  bLKR ~ dnorm(0, 1^-2)
  bLKR2 ~ dnorm(0, 1^-2)

  bHLKLKR ~ dnorm(0, 1^-2)
  bHLK2LKR ~ dnorm(0, 1^-2)

  bCor <- 0.4
  eCorStage[1] <- eStage[1]
  for(i in 2:length(Stage)){
    eCorStage[i] <- eStage[i] + bCor^(Days[i] - Days[i-1]) * (Stage[i-1] - eStage[i-1])
  }

  sStage ~ dnorm(0, 1^-2) T(0, )
  for(i in 1:length(Stage)){
    eStage[i] <- bIntercept + bOffset[Offset[i]] + bHLK * HLK[i] + bLKR * LKR[i] + bHLK2 * HLK[i]^2 + bLKR2 * LKR[i]^2 + bHLKLKR * HLK[i] * LKR[i] + bHLK2LKR * HLK[i]^2 * LKR[i]

    Stage[i] ~ dnorm(eCorStage[i], sStage^-2)
  }

Block 4. The model description.

Lower Columbia River Rainbow Trout Spawning 2019

The suggested citation for this analytic appendix is:

Thorley, J.L. and Amies-Galonski, E. (2020) Lower Columbia River Rainbow Trout Spawning 2019. A Poisson Consulting Analytic Appendix. URL: https://www.poissonconsulting.ca/f/949693135.

Background

Each spring in the Lower Columbia River (LCR) below Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below Brilliant Dam, thousands of Rainbow Trout spawn.

Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to estimate the abundance of spawners, egg survival and the stock-recruitment relationship. We also examine the survival of dewatered eggs and the temperatures in the gravels.

Data Preparation

The aerial spawner counts were conducted by Mountain Water Research. The age-1 recruitment estimates were provided by the Fish Population Indexing Program. The remaining data were collected by Mountain Water Research, Poisson Consulting and Nuupqu.

The study area was divided into seven sections: Norns Creek Fan (NCF), NCF to LKR, LKR, LKR to Genelle, Genelle. Redd and spawner counts upstream of Norns Creek Fan and downstream of Genelle were excluded from the section totals because they constitute less than 0.1% of the total count and were not surveyed in all years. The redd and spawner counts for the Right Upstream Bank above Robson Bridge were also excluded as they appear to be primarily driven by viewing conditions (and constitute less than 2.5% of the total). Viewing conditions were classified as Good or Poor. If information on the viewing conditions was not available a decline in the redd count of more than one third of the cumulative maximum count for a particular section was assumed to be caused by poor viewing conditions.

The mapped peak redd and fish counts are the peak counts for that site.

The data were prepared for analysis using R version 3.6.2 (R Core Team 2017).

Statistical Analysis

Model parameters were estimated using Bayesian methods. The estimates were produced using JAGS (Plummer 2015) and STAN (Carpenter et al. 2017). For additional information on Bayesian estimation the reader is referred to McElreath (2016).

Unless stated otherwise, the Bayesian analyses used weakly informative normal and half-normal prior distributions (Gelman, Simpson, and Betancourt 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, standard deviation (sd), the z-score, lower and upper 95% confidence/credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles. A p-value of 0.05 indicates that the lower or upper 95% CL is 0.

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 3.6.2 (R Core Team 2019) and the mbr family of packages.

Model Descriptions

Area-Under-The-Curve

The spawner abundance and spawn timings were estimated from the aerial fish and redd counts for the five sections (in three segments) using an Area-Under-The-Curve (AUC) model.

Key assumptions of the AUC model include:

  • Spawner abundance varies by river section.
  • Spawner abundance varies randomly by year and section within year.
  • Spawner observer efficiency is between 0.8 and 1.0.
  • Number of redds per spawner is between 1 and 2.
  • Spawner residence time is between 14 and 21 days as determined in a previous year’s analysis.
  • Redd residence time is between 30 and 40 days.
  • Spawner arrival and departure times are normally distributed.
  • Spawner arrival duration (SD of normal distribution) varies randomly by river segment.
  • Peak spawner arrival timing varies randomly by year.
  • The residual variations in the spawner and redd counts are described by separate Negative Binomial distributions.

Stock-Recruitment

The relationship between the number of spawners and the resultant number of age-1 fish was estimated using a Beverton-Holt stock-recruitment model (Walters and Martell 2004):

\[ R = \frac{\alpha \cdot S}{1 + \beta \cdot S} \quad,\]

where \(S\) is the spawners (stock), \(R\) is the recruits, \(\alpha\) is the recruits per spawner at low density and \(\beta\) determines the density-dependence.

Key assumptions of the stock-recruitment model include:

  • The recruits per spawner at low density (\(\alpha\)) is normally distributed with a mean of 90 and a SD of 50.
  • The recruits per spawner varies with the percent of redds dewatered.
  • The residual variation in the number of recruits is log-normally distributed.

The mean of 90 for \(\alpha\) was based on an average of 2,900 eggs per female spawner, a 50:50 sex ratio, 50% egg survival, 50% post-emergence fall survival, 50% overwintering survival and 50% summer survival.

The carrying capacity is \(\alpha / \beta\).

Model Templates

Area-Under-The-Curve

data {
  int<lower=0> nObs;
  int<lower=0> nSection;
  int<lower=0> nSegment;
  int<lower=0> nYear;

  int Year[nObs];
  int Section[nObs];
  int Segment[nObs];
  real Doy[nObs];
  int Fish[nObs];
  int Redds[nObs];
parameters {
  vector<lower=3,upper=9>[nSection] bFishAbundanceSection;

  real<lower=0> sFishAbundanceYear;
  vector[nYear] bFishAbundanceYear;
  real<lower=0> sFishAbundanceSectionYear;
  vector[nSection * nYear] bFishAbundanceSectionYear;

  real<lower=0.8,upper=1.0> bFishObserverEfficiency;
  real<lower=0.0,upper=2.0> bReddObserverEfficiency;

  real<lower=1, upper=2> bReddPerFish;

  real<lower=14, upper=21> bFishResidenceTime;
  real<lower=30, upper=40> bReddResidenceTime;

  real<lower=100, upper=150> bPeakFishArrivalTiming;

  real<lower=0,upper=21> sPeakFishArrivalTimingYear;
  vector[nYear] bPeakFishArrivalTimingYear;

  real<lower=log(10), upper=log(50)> bFishArrivalDuration;

  real<lower=0> sFishArrivalDurationSegmentYear;
  vector[nSegment * nYear] bFishArrivalDurationSegmentYear;

  real<lower=0, upper=2> bDispersionRedds;
  real<lower=0, upper=2> bDispersionFish;
model {
  vector[nObs] eFishAbundance;
  vector[nObs] ePeakFishArrivalTiming;
  vector[nObs] eFishArrivalDuration;

  vector[nObs] eRedds;
  vector[nObs] eFish;

  sFishAbundanceYear ~ normal(0, 1);
  bFishAbundanceYear ~ normal(0, sFishAbundanceYear);
  sFishAbundanceSectionYear ~ normal(0, 1);
  bFishAbundanceSectionYear ~ normal(0, sFishAbundanceSectionYear);

  bPeakFishArrivalTimingYear ~ normal(0, sPeakFishArrivalTimingYear);
  bFishArrivalDurationSegmentYear ~ normal(0, 1);
  bFishArrivalDurationSegmentYear ~ normal(0, sFishArrivalDurationSegmentYear);

  for (i in 1:nObs) {
    eFishAbundance[i] = exp(bFishAbundanceSection[Section[i]] + bFishAbundanceYear[Year[i]] + bFishAbundanceSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    ePeakFishArrivalTiming[i] = bPeakFishArrivalTiming + bPeakFishArrivalTimingYear[Year[i]];

    eFishArrivalDuration[i] = exp(bFishArrivalDuration + bFishArrivalDurationSegmentYear[((Segment[i] - 1) * Year[i]) + Year[i]]);

    eRedds[i] = eFishAbundance[i] * bReddPerFish * bReddObserverEfficiency * (normal_cdf(Doy[i], ePeakFishArrivalTiming[i], eFishArrivalDuration[i]) - normal_cdf(Doy[i], ePeakFishArrivalTiming[i] + bReddResidenceTime, eFishArrivalDuration[i]));

    eFish[i] = eFishAbundance[i] * bFishObserverEfficiency * (normal_cdf(Doy[i], ePeakFishArrivalTiming[i], eFishArrivalDuration[i]) - normal_cdf(Doy[i], ePeakFishArrivalTiming[i] + bFishResidenceTime, eFishArrivalDuration[i]));
  }
  Redds ~ neg_binomial_2(eRedds, 1/bDispersionRedds);
  Fish ~ neg_binomial_2(eFish, 1/bDispersionFish);
..

Block 1. Model description.

Stock-Recruitment

.model {

  bAlpha ~ dnorm(90, 50^-2) T(1,)
  bAlphaDewatered ~ dnorm(0, 2^-2)
  bBeta ~ dnorm(-5, 5^-2)
  sRecruits ~ dunif(0, 2)

  for(i in 1:length(Stock)) {
    log(eAlpha[i]) <- log(bAlpha) + bAlphaDewatered * Dewatered[i]
    log(eBeta[i]) <- bBeta
    eRecruits[i] <- eAlpha[i] * Stock[i] / (1 + eBeta[i] * Stock[i])
    Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
  }
..

Block 2. Model description.

Lower Columbia River Rainbow Trout Spawning Analysis 2018

The suggested citation for this analytic report is:

Thorley, J.L. and Dalgarno, S. (2018) Lower Columbia River Rainbow Trout Spawning Analysis 2018. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/934446658.

Background

Each spring in the Lower Columbia River (LCR) below the Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below the Brilliant Dam, thousands of Rainbow Trout spawn. Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to estimate the abundance of spawners and the stock-recruitment relationship.

Data Preparation

The aerial spawner counts were conducted by Mountain Water Research. The age-1 recruitment estimates were provided by the Fish Population Indexing Program.

The study area was divided into three sections: the LCR above the LKR, the LKR and the LCR below the LKR. Redd and spawner counts upstream of Norns Creek Fan and downstream of Genelle were excluded from the section totals because they constitute less than 0.1% of the total count and were not surveyed in all years. The redd and spawner counts for the Right Upstream Bank above Robson Bridge were also excluded as they appear to be primarily driven by viewing conditions (and constitute less than 2.5% of the total). Viewing conditions were classified as Good or Poor. If information on the viewing conditions was not available a decline in the redd count of more than one third of the cumulative maximum count for a particular section was assumed to be caused by poor viewing conditions.

The data were prepared for analysis using R version 3.5.1 (R Core Team 2017).

Statistical Analysis

Model parameters were estimated using Bayesian methods. The Bayesian estimates were produced using JAGS (Plummer 2015) and Stan (Carpenter et al. 2017). For additional information on Bayesian modelling in the BUGS language, of which JAGS uses a dialect, the reader is referred to Kery and Schaub (2011). For additional information on Bayesian modelling in the Stan language the reader is referred to Stan Development Team (2017).

Unless indicated otherwise, the Bayesian analyses used uninformative uniform or normal prior distributions (Kery and Schaub 2011, 36). The posterior distributions were estimated from 1,500 Markov Chain Monte Carlo (MCMC) samples thinned from the second halves of three chains (Kery and Schaub 2011, 38–40). Model convergence was confirmed by ensuring that \(\hat{R} < 1.1\) (Kery and Schaub 2011, 40) for each of the monitored parameters (Kery and Schaub 2011, 61).

The parameters are summarised in terms of the point estimate, standard deviation (sd), the z-score, lower and upper 95% credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). A p-value of 0.05 indicates that the lower or upper 95% CL is 0. The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles.

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 3.5.1 (R Core Team 2017) and the jmbr and smbr packages.

Model Descriptions

Area-Under-The-Curve

The spawner abundance and spawn timings were estimated from the aerial fish and redd counts for the three sections using an Area-Under-The-Curve (AUC) model.

Key assumptions of the AUC model include:

  • Spawner abundance varies by river section.
  • Spawner abundance varies randomly by year and section within year.
  • Spawner observer efficiency is between 0.8 and 1.0.
  • Number of redds per spawner is between 1 and 2.
  • Spawner residence time is between 14 and 21 days as determined in a previous year’s analysis.
  • Redd residence time is between 30 and 40 days.
  • Spawner arrival and departure times are normally distributed.
  • Spawner arrival duration (SD of normal distribution) varies randomly by section within year.
  • Peak spawner arrival timing varies randomly by year.
  • The residual variations in the spawner and redd counts are described by separate Negative Binomial distributions.

Stock-Recruitment

The relationship between the number of spawners and the resultant number of age-1 fish was estimated using a Beverton-Holt stock-recruitment model (Walters and Martell 2004):

\[ R = \frac{\alpha \cdot S}{1 + \beta \cdot S} \quad,\]

where \(S\) is the spawners (stock), \(R\) is the recruits, \(\alpha\) is the recruits per spawner at low density and \(\beta\) determines the density-dependence.

Key assumptions of the stock-recruitment model include:

  • The recruits per spawner at low density (\(\alpha\)) is normally distributed with a mean of 90 and a SD of 50.
  • The recruits per spawner varies with the percent of redds dewatered.
  • The residual variation in the number of recruits is log-normally distributed.

The mean of 90 for \(\alpha\) was based on an average of 2,900 eggs per female spawner, a 50:50 sex ratio, 50% egg survival, 50% post-emergence fall survival, 50% overwintering survival and 50% summer survival.

The carrying capacity is \(\alpha / \beta\).

Model Templates

Area-Under-The-Curve

data {
  int<lower=0> nObs;
  int<lower=0> nSection;
  int<lower=0> nYear;

  int Year[nObs];
  int Section[nObs];
  real Doy[nObs];
  int Spawners[nObs];
  int Redds[nObs];
parameters {
  vector<lower=5,upper=10>[nSection] bSpawnerAbundanceSection;

  real<lower=0,upper=2> sSpawnerAbundanceYear;
  vector[nYear] bSpawnerAbundanceYear;
  real<lower=0,upper=2> sSpawnerAbundanceSectionYear;
  vector[nSection * nYear] bSpawnerAbundanceSectionYear;

  real<lower=0.8,upper=1.0> bSpawnerObserverEfficiency;
  real<lower=0.0,upper=2.0> bReddObserverEfficiency;

  real<lower=1, upper=2> bReddPerSpawner;

  real<lower=14, upper=21> bSpawnerResidenceTime;
  real<lower=30, upper=40> bReddResidenceTime;

  real<lower=100, upper=150> bPeakSpawnerArrivalTiming;

  real<lower=0,upper=21> sPeakSpawnerArrivalTimingYear;
  vector[nYear] bPeakSpawnerArrivalTimingYear;

  real<lower=log(10), upper=log(50)> bSpawnerArrivalDuration;

  real<lower=0,upper=2> sSpawnerArrivalDurationSectionYear;
  vector[nSection * nYear] bSpawnerArrivalDurationSectionYear;

  real<lower=0, upper=2> bDispersionRedds;
  real<lower=0, upper=2> bDispersionSpawners;
model {
  vector[nObs] eSpawnerAbundance;
  vector[nObs] ePeakSpawnerArrivalTiming;
  vector[nObs] eSpawnerArrivalDuration;

  vector[nObs] eRedds;
  vector[nObs] eSpawners;

  bSpawnerAbundanceYear ~ normal(0, sSpawnerAbundanceYear);
  bSpawnerAbundanceSectionYear ~ normal(0, sSpawnerAbundanceSectionYear);

  bPeakSpawnerArrivalTimingYear ~ normal(0, sPeakSpawnerArrivalTimingYear);
  bSpawnerArrivalDurationSectionYear ~ normal(0, sSpawnerArrivalDurationSectionYear);

  for (i in 1:nObs) {
    eSpawnerAbundance[i] = exp(bSpawnerAbundanceSection[Section[i]] + bSpawnerAbundanceYear[Year[i]] + bSpawnerAbundanceSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    ePeakSpawnerArrivalTiming[i] = bPeakSpawnerArrivalTiming + bPeakSpawnerArrivalTimingYear[Year[i]];

    eSpawnerArrivalDuration[i] = exp(bSpawnerArrivalDuration + bSpawnerArrivalDurationSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    eRedds[i] = eSpawnerAbundance[i] * bReddPerSpawner * bReddObserverEfficiency * (normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i], eSpawnerArrivalDuration[i]) - normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i] + bReddResidenceTime, eSpawnerArrivalDuration[i]));

    eSpawners[i] = eSpawnerAbundance[i] * bSpawnerObserverEfficiency * (normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i], eSpawnerArrivalDuration[i]) - normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i] + bSpawnerResidenceTime, eSpawnerArrivalDuration[i]));
  }
  Redds ~ neg_binomial_2(eRedds, 1/bDispersionRedds);
  Spawners ~ neg_binomial_2(eSpawners, 1/bDispersionSpawners);
..

Template 1. AUC model.

Stock-Recruitment

model {

  bAlpha ~ dnorm(90, 50^-2) T(1,)
  bAlphaDewatered ~ dnorm(0, 2^-2)
  bBeta ~ dnorm(-5, 5^-2)
  sRecruits ~ dunif(0, 2)

  for(i in 1:length(Stock)) {
    log(eAlpha[i]) <- log(bAlpha) + bAlphaDewatered * Dewatered[i]
    log(eBeta[i]) <- bBeta
    eRecruits[i] <- eAlpha[i] * Stock[i] / (1 + eBeta[i] * Stock[i])
    Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
  }
..

Template 2.

Lower Columbia River Rainbow Trout Spawning Analysis 2017

The suggested citation for this analytic report is:

Thorley, J.L., Muir, C.D. and Dalgarno, S. (2018) Lower Columbia River Rainbow Trout Spawning Analysis 2017. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/453582501.

Background

Each spring in the Lower Columbia River (LCR) below the Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below the Brilliant Dam, thousands of Rainbow Trout spawn. Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to answer the following management questions:

Does the implementation of Rainbow Trout Spawning Protection Flows over the course of the monitoring period lead to an increase in the relative abundance of Rainbow Trout spawning in the LCR downstream of the HLK dam?

Does the implementation of RTSPF over the course of the monitoring period lead to an increase in the spatial distribution of locations (and associated habitat area) that Rainbow Trout use for spawning in the LCR downstream of HLK?

Does the implementation of RTSPF over the course of the monitoring period protect the majority of Rainbow Trout redds (as estimated from spawning timing) from being dewatered in the LCR downstream of HLK?

Data Preparation

The age-1 Rainbow Trout abundance data were provided by the Fish Population Indexing Program. The remaining fish data were collected by Mountain Water Research and imported to an SQLite database.

The study area was divided into three sections: the LCR above the LKR, the LKR and the LCR below the LKR. Redd and spawner counts upstream of Norns Creek Fan and downstream of Genelle were excluded from the section totals because they constitute less than 0.1% of the total count and were not surveyed in all years. The redd and spawner counts for the Right Upstream Bank above Robson Bridge were also excluded as they appear to be primarily driven by viewing conditions (and constitute less than 2.5% of the total). Viewing conditions were classified as Good or Poor. If information on the viewing conditions was not available a decline in the redd count of more than one third of the cumulative maximum count for a particular section was assumed to be caused by poor viewing conditions.

The data were prepared for analysis using R version 3.4.4 (R Core Team 2017).

Statistical Analysis

Model parameters were estimated using Bayesian methods. The Bayesian estimates were produced using JAGS (Plummer 2015) and Stan (Carpenter et al. 2017). For additional information on Bayesian modelling in the BUGS language, of which JAGS uses a dialect, the reader is referred to Kery and Schaub (2011). For additional information on Bayesian modelling in the Stan language the reader is referred to Stan Development Team (2017).

Unless indicated otherwise, the Bayesian analyses used uninformative uniform or normal prior distributions (Kery and Schaub 2011, 36). The posterior distributions were estimated from 1,500 Markov Chain Monte Carlo (MCMC) samples thinned from the second halves of three chains (Kery and Schaub 2011, 38–40). Model convergence was confirmed by ensuring that \(\hat{R} < 1.1\) (Kery and Schaub 2011, 40) for each of the monitored parameters (Kery and Schaub 2011, 61).

The parameters are summarised in terms of the point estimate, standard deviation (sd), the z-score, lower and upper 95% credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). A p-value of 0.05 indicates that the lower or upper 95% CL is 0. The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles.

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 3.4.4 (R Core Team 2017) and the jmbr and smbr packages.

Model Descriptions

Norns Creek

Following Thorley and Baxter (2012), the peak spawner counts from 1999 were multiplied by an expansion factor of two to get the estimated spawner abundance and combined with historical spawner abundance estimates.

Distribution

The proportion of fish were plotted by river km and year for the day of the peak spawner count to visualize the distribution of spawning. The Shannon Index \(H\) was calculated for each year where \[ H = - \sum{p_i log(p_i)}\] and \(p_i\) is the proportion of the spawners at the \(i\)th site with a positive count.

Area-Under-The-Curve

The spawner abundance and spawn timings were estimated from the aerial fish and redd counts for the three sections using an Area-Under-The-Curve (AUC) model.

Key assumptions of the AUC model include:

  • Spawner abundance varies by river section.
  • Spawner abundance varies randomly by year and section within year.
  • Spawner observer efficiency is between 0.8 and 1.0.
  • Number of redds per spawner is between 1 and 2.
  • Spawner residence time is between 14 and 21 days as determined in a previous year’s analysis.
  • Redd residence time is between 30 and 40 days.
  • Spawner arrival and departure times are normally distributed.
  • Spawner arrival duration (SD of normal distribution) varies randomly by section within year.
  • Peak spawner arrival timing varies randomly by year.
  • The residual variations in the spawner and redd counts are described by separate Negative Binomial distributions.

Preliminary analysis of skew normal and sine arrival and departure functions did not improve the fit of the model.

Stock-Recruitment

The relationship between the number of spawners and the resultant number of age-1 fish was estimated using a Beverton-Holt stock-recruitment model (Walters and Martell 2004):

\[ R = \frac{\alpha \cdot S}{1 + \beta \cdot S} \quad,\]

where \(S\) is the spawners (stock), \(R\) is the recruits, \(\alpha\) is the recruits per spawner at low density and \(\beta\) determines the density-dependence.

Key assumptions of the stock-recruitment model include:

  • The recruits per spawner at low density (\(\alpha\)) is normally distributed with a mean of 90 and a SD of 50.
  • The recruits per spawner varies with the percent of redds dewatered.
  • The residual variation in the number of recruits is log-normally distributed.

The mean of 90 for \(\alpha\) was based on an average of 2,900 eggs per female spawner, a 50:50 sex ratio, 50% egg survival, 50% post-emergence fall survival, 50% overwintering survival and 50% summer survival.

The carrying capacity is \(\alpha / \beta\).

Model Templates

Area-Under-The-Curve

data {
  int<lower=0> nObs;
  int<lower=0> nSection;
  int<lower=0> nYear;

  int Year[nObs];
  int Section[nObs];
  real Doy[nObs];
  int Spawners[nObs];
  int Redds[nObs];
parameters {
  vector<lower=5,upper=10>[nSection] bSpawnerAbundanceSection;

  real<lower=0,upper=2> sSpawnerAbundanceYear;
  vector[nYear] bSpawnerAbundanceYear;
  real<lower=0,upper=2> sSpawnerAbundanceSectionYear;
  vector[nSection * nYear] bSpawnerAbundanceSectionYear;

  real<lower=0.8,upper=1.0> bSpawnerObserverEfficiency;
  real<lower=0.0,upper=2.0> bReddObserverEfficiency;

  real<lower=1, upper=2> bReddPerSpawner;

  real<lower=14, upper=21> bSpawnerResidenceTime;
  real<lower=30, upper=40> bReddResidenceTime;

  real<lower=100, upper=150> bPeakSpawnerArrivalTiming;

  real<lower=0,upper=21> sPeakSpawnerArrivalTimingYear;
  vector[nYear] bPeakSpawnerArrivalTimingYear;

  real<lower=log(10), upper=log(50)> bSpawnerArrivalDuration;

  real<lower=0,upper=2> sSpawnerArrivalDurationSectionYear;
  vector[nSection * nYear] bSpawnerArrivalDurationSectionYear;

  real<lower=0, upper=2> bDispersionRedds;
  real<lower=0, upper=2> bDispersionSpawners;
model {
  vector[nObs] eSpawnerAbundance;
  vector[nObs] ePeakSpawnerArrivalTiming;
  vector[nObs] eSpawnerArrivalDuration;

  vector[nObs] eRedds;
  vector[nObs] eSpawners;

  bSpawnerAbundanceYear ~ normal(0, sSpawnerAbundanceYear);
  bSpawnerAbundanceSectionYear ~ normal(0, sSpawnerAbundanceSectionYear);

  bPeakSpawnerArrivalTimingYear ~ normal(0, sPeakSpawnerArrivalTimingYear);
  bSpawnerArrivalDurationSectionYear ~ normal(0, sSpawnerArrivalDurationSectionYear);

  for (i in 1:nObs) {
    eSpawnerAbundance[i] = exp(bSpawnerAbundanceSection[Section[i]] + bSpawnerAbundanceYear[Year[i]] + bSpawnerAbundanceSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    ePeakSpawnerArrivalTiming[i] = bPeakSpawnerArrivalTiming + bPeakSpawnerArrivalTimingYear[Year[i]];

    eSpawnerArrivalDuration[i] = exp(bSpawnerArrivalDuration + bSpawnerArrivalDurationSectionYear[((Section[i] - 1) * Year[i]) + Year[i]]);

    eRedds[i] = eSpawnerAbundance[i] * bReddPerSpawner * bReddObserverEfficiency * (normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i], eSpawnerArrivalDuration[i]) - normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i] + bReddResidenceTime, eSpawnerArrivalDuration[i]));

    eSpawners[i] = eSpawnerAbundance[i] * bSpawnerObserverEfficiency * (normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i], eSpawnerArrivalDuration[i]) - normal_cdf(Doy[i], ePeakSpawnerArrivalTiming[i] + bSpawnerResidenceTime, eSpawnerArrivalDuration[i]));
  }
  Redds ~ neg_binomial_2(eRedds, 1/bDispersionRedds);
  Spawners ~ neg_binomial_2(eSpawners, 1/bDispersionSpawners);
..

Template 1. AUC model.

Stock-Recruitment

model {

  bAlpha ~ dnorm(90, 50^-2) T(1,)
  bAlphaDewatered ~ dnorm(0, 2^-2)
  bBeta ~ dnorm(-5, 5^-2)
  sRecruits ~ dunif(0, 2)

  for(i in 1:length(Stock)) {
    log(eAlpha[i]) <- log(bAlpha) + bAlphaDewatered * Dewatered[i]
    log(eBeta[i]) <- bBeta
    eRecruits[i] <- eAlpha[i] * Stock[i] / (1 + eBeta[i] * Stock[i])
    Recruits[i] ~ dlnorm(log(eRecruits[i]), sRecruits^-2)
  }
..

Template 2.

Lower Duncan River Rainbow Trout Spawning Analysis 2017

The suggested citation for this analytic report is:

Thorley, J.L. & Dalgarno, S.I.J. (2018) Lower Duncan River Rainbow Trout Spawning Analysis 2017. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/897442882.

Background

The Lardeau River (LAR) flows 45 km from Trout Lake to join the Lower Duncan River approximately 1 km downstream of Duncan Dam (DDM). The Duncan River downstream of the Lardeau River (DRL) then extends a further 11 km downstream to Kootenay Lake. The study area for this analysis is the Duncan Above Lardeau station (DAL), located between the end of the DDM discharge channel and the confluence with the Lardeau River.

Rainbow Trout spawning below DDM has been monitored since 2005 by periodic redd surveys. Since 2011, the river stage at DAL has been recorded.

The main objectives of the current analyses were to:

  1. estimate the abundance of Gerrard Rainbow Trout redds in the tailout area below Duncan Dam;
  2. estimate the spawn timing for the fish utilizing the tailout area;
  3. estimate the number of redds dewatered.

Data Preparation

The data were provided by BC Hydro, Ministry of Forests, Lands and Natural Resource Operations, Water Survey of Canada and Mountain Waters Research. The data were prepared for analysis using R version 3.4.4 (R Core Team 2017). The total spawner abundance at Gerrard was assumed to be the observed peak spawner count multiplied 3.08 (Irvine 1978).

Statistical Analysis

Model parameters were estimated using Bayesian methods (McElreath 2016).

Unless indicated otherwise, the Bayesian analyses used uninformative normal prior distributions (Kery and Schaub 2011, 36). 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 \(\hat{R} \leq 1.1\) (Kery and Schaub 2011, 40) and \(\textrm{ESS} \geq 150\) for each of the monitored parameters (Kery and Schaub 2011, 61). Where \(\hat{R}\) is the potential scale reduction factor and \(\textrm{ESS}\) is the effective sample size.

The parameters are summarised in terms of the point estimate, standard deviation (sd), the z-score, lower and upper 95% credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles. A p-value of 0.05 indicates that the lower or upper 95% CL is 0.

Where relevant, model adequacy was confirmed by examination of residual plots for the full model(s).

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 3.4.4 (R Core Team 2017), JAGS (Plummer 2015), and the mbr family of packages.

Model Descriptions

Redd Surveys

The redd survey counts under surveyable conditions (visibility > 0.6 m) were analysed using a hierarchical Bayesian Area-Under-the-Curve (AUC) model (Hilborn, Bue, and Sharr 1999; Su, Adkison, and Van Alen 2001).

Key assumptions of this model include:

  • Observer efficiency is 100%.
  • Redd residence time is greater than one month (the maximum time between surveys).
  • Spawner abundance varies randomly by year.
  • Spawning duration varies randomly by year.
  • Spawn timing varies randomly by year.
  • The cumulative redd count is normally distributed.

Redd Dewatering

The actual DAL stage heights were compared to the recorded redd elevations. The relative redd elevations were calculated by subtracting the depth of each redd from the stage height at the time the redd depth was recorded.

Key assumptions of this calculation include:

  • A redd is dewatered whenever the predicted DAL stage drops below the redds’ relative elevation.
  • Emergence occurs at the end of June each year.

Model Templates

Redd Surveys

model{
    bAbundance ~ dnorm(0, 5^-2)
    bTiming ~ dunif(70, 140)
    bDuration ~ dunif(7, 28)

    sAbundanceYear ~ dunif(0, 5)
    sTimingYear ~ dunif(0, 40)
    sDurationYear ~ dunif(0, 20)
    for(i in 1:nYear){
      bTimingYear[i] ~ dnorm (0, sTimingYear^-2)
      bAbundanceYear[i] ~ dnorm (0, sAbundanceYear^-2)
      bDurationYear[i] ~ dnorm (0, sDurationYear^-2)
    }

    sRedds ~ dunif(0, 20)
    for(i in 1:nObs){
      log(eAbundance[i]) <- bAbundance + bAbundanceYear[Year[i]]
      eTiming[i] <- bTiming + bTimingYear[Year[i]]
      eDuration[i] <- bDuration + bDurationYear[Year[i]]

      eRedds[i] <- phi((Doy[i] - eTiming[i]) / eDuration[i]) * eAbundance[i]
      Redds[i] ~ dnorm(eRedds[i], sRedds^-2)
    }
  }

Template 1. The model description.

Lower Duncan River Kokanee AUC Analysis 2017

The suggested citation for this analytic report is:

Thorley, J.L. (2018) Lower Duncan River Kokanee AUC Analysis 2017. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1498798685.

Background

Every fall, Kokanee from Kootenay Lake spawn in the Duncan-Lardeau system. Since 2008 aerial surveys have been conducted in the Lower Duncan River (LDR) to enumerate the number of kokanee spawners. The management questions are:

  1. What is the spawn run timing, fry emergence timing, and relative intensity of kokanee spawning in the Lower Duncan River? What potential operational/environmental cues affect this variable?
  2. What are the timing/cues of kokanee spawners in Meadow Creek and Lardeau River systems?
  3. What are the relative distribution of kokanee spawners in the Lower Duncan River, Meadow Creek and Lardeau River? What potential operation/environmental/physical cues (e.g., temperature, velocity, depth, cover, substrate) affect this variable?; and
  4. What physical works or operational constraints could be implemented to minimize operational conflicts associated with recommended kokanee spawning operations?

Data Preparation

The 2017 survey data were provided by LGL Limited in the form of Excel tables. They were imported into the existing SQLite database. The data were clean and tidied (Wickham 2014) using R version 3.4.3 (R Core Team 2016). When there were repeated counts for a channel the higher of the two values was choosen. The mean daily discharge and water temperature values at Duncan River below Lardeau (DRL) were extracted from BC Hydro’s environmental database for the Kootenays, which is maintained by Poisson Consulting. The annual abundances of Kokanee spawning in Meadow Creek and the Lardeau River were provided by the Ministry of Forests, Lands and Natural Resource Operations.

Statistical Analysis

Model parameters were estimated using Bayesian methods. The estimates were produced using JAGS (Plummer 2015). For additional information on Bayesian estimation the reader is referred to McElreath (2016).

Unless indicated otherwise, the Bayesian analyses used uninformative normal prior distributions (Kery and Schaub 2011, 36). 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 \(\hat{R} \leq 1.1\) (Kery and Schaub 2011, 40) and \(\textrm{ESS} \geq 150\) for each of the monitored parameters (Kery and Schaub 2011, 61). Where \(\hat{R}\) is the potential scale reduction factor and \(\textrm{ESS}\) is the effective sample size.

The parameters are summarised in terms of the point estimate, standard deviation (sd), the z-score, lower and upper 95% confidence/credible limits (CLs) and the p-value (Kery and Schaub 2011, 37, 42). The estimate is the median (50th percentile) of the MCMC samples, the z-score is \(\mathrm{mean}/\mathrm{sd}\) and the 95% CLs are the 2.5th and 97.5th percentiles. A p-value of 0.05 indicates that the lower or upper 95% CL is 0.

Where relevant, model adequacy was confirmed by examination of residual plots for the full model(s).

The results are displayed graphically by plotting the modeled relationships between particular variables and the response(s) 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 typical values (expected values of the underlying hyperdistributions) (Kery and Schaub 2011, 77–82). When informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% confidence/credible intervals (CIs, Bradford, Korman, and Higgins 2005).

The analyses were implemented using R version 3.4.3 (R Core Team 2015) and the mbr family of packages.

Model Descriptions

Observer Efficiency

The aerial observer efficiency was estimated from ground counts using an overdispersed Poisson regression. Key assumptions of the observer efficiency model include:

  • The ground counts are accurate.
  • The residual variation in the aerial counts is gamma-Poisson distributed.

Area-Under-the-Curve

The aerial spawner counts for the Lower Duncan River and its sidechannels were analysed using a hierarchical Bayesian Area-Under-the-Curve (AUC) model (Hilborn, Bue, and Sharr 1999). Key assumptions of the AUC model include:

  • Spawner arrival and departure times are normally distributed (Hilborn, Bue, and Sharr 1999).
  • Spawner duration is constant across years.
  • Spawner abundance varies randomly by year.
  • Peak spawn timing varies randomly by year (Su, Adkison, and Van Alen 2001).
  • Spawner residence time is between 7 and 14 days (Acara 1970, @morbey_timing_2003).
  • Spawner observer efficiency is drawn from a normal distribution as estimated by the observer efficiency model, with a mean of 1.40, SD of 0.38 and lower and upper limits of 0.89 and 2.39 respectively.
  • The standard deviation of the residual variation in the spawner counts varies by the annual abundance.
  • The residual variation in the spawner counts is normally distributed.

The emergence timing was calculated from the daily water temperature at DRL assuming 950 Accumulated Thermal Units (ATUs). The relationship between peak spawn timing and the mean september water temperature at DRL was tested using linear regression. Neither relationship was significant (p > 0.3).

Model Templates

Observer Efficiency

model{

  bEfficiency ~ dunif(0, 3)
  sDispersion ~ dunif(0, 5)

  for (i in 1:nObs){
    eAerial[i] <- Ground[i] * bEfficiency
    eDispersion[i] ~ dgamma(sDispersion^-2, sDispersion^-2)
    Aerial[i] ~ dpois(eAerial[i] * eDispersion[i])
  }
..

Template 1. Model definition.

Area-Under-The-Curve

model{
  bAbundance ~ dnorm(10, 5^-2)
  bPeakTiming ~ dunif(-14, 14)
  bDuration ~ dnorm(2, 1^-2)

  bEfficiency ~ dnorm(1.40, 0.38^-2) T(0.89, 2.40)
  bResidenceTime ~ dunif(7, 14)

  sAbundanceYear ~ dunif(0, 5)
  sPeakTiming ~ dunif(0, 14)
  for(i in 1:nYear){
    bAbundanceYear[i] ~ dnorm(0, sAbundanceYear^-2)
    bPeakTimingYear[i] ~ dnorm(0, sPeakTiming^-2)
  }

  bSD ~ dnorm(0, 10^-2)
  bSDAbundance ~ dnorm(0, 5^-2)
  for(i in 1:length(Count)){

    log(eAbundance[i]) <- bAbundance + bAbundanceYear[Year[i]]
    ePeakTiming[i] <- bPeakTiming + bPeakTimingYear[Year[i]]
    log(eDuration[i]) <- bDuration

    eArrived[i] <- pnorm(Dayte[i], (ePeakTiming[i] - bResidenceTime/2), eDuration[i]^-2)
    eDeparted[i] <- pnorm(Dayte[i], (ePeakTiming[i] + bResidenceTime/2), eDuration[i]^-2)
    eSpawners[i] <- (eArrived[i] - eDeparted[i]) * eAbundance[i]

    eEfficiency[i] <- bEfficiency

    log(eSD[i]) <- bSD + bSDAbundance * eAbundance[i]

    Count[i] ~ dnorm(eSpawners[i] * eEfficiency[i], eSD[i]^-2)
  }
..

Template 2. Model definition.

Lower Duncan River Kokanee AUC Analysis 2016

The suggested citation for this analytic report is:

Thorley, J.L. (2016) Lower Duncan River Kokanee AUC Analysis 2016. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1172999120.

Background

Every fall, Kokanee from Kootenay Lake spawn in the Duncan-Lardeau system. Since 2008 aerial surveys have been conducted in the Lower Duncan River (LDR) to enumerate the number of kokanee spawners. The management questions are:

  1. What is the spawn run timing, fry emergence timing, and relative intensity of kokanee spawning in the Lower Duncan River? What potential operational/environmental cues affect this variable?
  2. What are the timing/cues of kokanee spawners in Meadow Creek and Lardeau River systems?
  3. What are the relative distribution of kokanee spawners in the Lower Duncan River, Meadow Creek and Lardeau River? What potential operation/environmental/physical cues (e.g., temperature, velocity, depth, cover, substrate) affect this variable?; and
  4. What physical works or operational constraints could be implemented to minimize operational conflicts associated with recommended kokanee spawning operations?
Lower Columbia River Rainbow Trout Spawning Analysis 2016

The suggested citation for this analytic report is:

Thorley, J.L. and Hogan, P.M. (2016) Lower Columbia River Rainbow Trout Spawning Analysis 2016. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1385788078.

Background

Each spring in the Lower Columbia River (LCR) below the Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below the Brilliant Dam, thousands of Rainbow Trout spawn. Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to answer the following management questions:

Does the implementation of Rainbow Trout Spawning Protection Flows over the course of the monitoring period lead to an increase in the relative abundance of Rainbow Trout spawning in the LCR downstream of the HLK dam?

Does the implementation of RTSPF over the course of the monitoring period lead to an increase in the spatial distribution of locations (and associated habitat area) that Rainbow Trout use for spawning in the LCR downstream of HLK?

Does the implementation of RTSPF over the course of the monitoring period protect the majority of Rainbow Trout redds (as estimated from spawning timing) from being dewatered in the LCR downstream of HLK?

Lower Columbia River Rainbow Trout Spawning Analysis 2015

The suggested citation for this analytic report is:

Thorley, J.L. and Hogan, P.M. (2016) Lower Columbia River Rainbow Trout Spawning Analysis 2015. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1611032936.

Background

Each spring in the Lower Columbia River (LCR) below the Hugh L. Keenleyside Dam (HLK) and in the Lower Kootenay River (LKR) below the Brilliant Dam, thousands of Rainbow Trout spawn. Since 1992, BC Hydro has stabilized the spring discharge releases from HLK to protect Rainbow Trout redds from dewatering.

The primary goal of the current analysis to answer the following management questions:

Does the implementation of Rainbow Trout Spawning Protection Flows over the course of the monitoring period lead to an increase in the relative abundance of Rainbow Trout spawning in the LCR downstream of the HLK dam?

Does the implementation of RTSPF over the course of the monitoring period lead to an increase in the spatial distribution of locations (and associated habitat area) that Rainbow Trout use for spawning in the LCR downstream of HLK?

Does the implementation of RTSPF over the course of the monitoring period protect the majority of Rainbow Trout redds (as estimated from spawning timing) from being dewatered in the LCR downstream of HLK?

Lower Duncan River Kokanee AUC Analysis 2015

The suggested citation for this analytic report is:

Thorley, J.L. and Hogan, P.M. (2015) Lower Duncan River Kokanee AUC Analysis 2015. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1629724501.

Background

Since 2008 aerial surveys have been conducted in the Lower Duncan River (LDR) to count the number of kokanee spawners. The primary objectives of the current analysis report are to:

  • Estimate the aerial observer efficiency based on ground counts.
  • Estimate the annual kokanee spawner abundance from the aerial counts.
  • Estimate the peak spawn timing.