Lower Columbia River Sculpin and Dace Stranding Analysis 2013
The suggested citation for this analytic report is:
Thorley, J.L. (2014) Lower Columbia River Sculpin and Dace Stranding Analysis 2013. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/1090742912.
Background
Discharge reductions associated with the operation of HLK and Brilliant Dams on the Lower Columbia River, British Columbia, can cause fish stranding.
The management question the current analysis attempts to answer is:
Which operations, and at what season, pose the highest risk of stranding or interference with the normal life cycles of sculpins and dace?
Methods
Data Collection
Following reduction events, crews are dispatched to salvage stranded fish from areas of concern. At each site the crew record the number of pools, the number of pools surveyed and the number of fish counted by species, genus, family or all species in the surveyed pools. Since 2011, the crew have also lengthed a subsample of individuals.
Data Preparation
The fish stranding data were provided by Golder Associates in the form of an Access database. The discharge data were queried from a BC Hydro database maintained by Poisson Consulting.
The data were prepared for analysis using R version 3.1.0 (Team, 2013).
Pool Stranding
During the pool stranding data preparation it was assumed that:
- Fish species code LND refers to long nose dace (LNC).
- The proportion of unidentified fish that were dace was the same as the proportion of identified fish (2.1%).
- The Genelle (Mainland) (LUB) site was recontoured in February 2003.
Discharge
During the discharge data preparation it was assumed that:
- The magnitude of a reduction event was the difference between the peak discharge in the previous 24 hours and the discharge at the time of the survey.
- The rate of a reduction event was the weighted mean hourly drop between the peak and the time of survey. Drops that were subsequently inundated prior to the survey were assigned zero weight while partially inundated drops were discounted accordingly.
- The time of a reduction event was the mean time between the peak and the survey weighted by the discounted drops.
- The delay was the number of hours between the time of the reduction event and the time of the survey.
- The stage was the discharge at the time of the reduction as the percent mean annual discharge (% MAD) of the section of river to take into account differences in river size.
- The diel period was whether or not the time of reduction occurred in daylight.
Statistical Analysis
Hierarchical Bayesian models were fitted to the stranding data using R version 3.1.0 (Team, 2013) and JAGS 3.4.0 (Plummer, 2012) which interfaced with each other via jaggernaut 1.8.1 (Thorley, 2014). For additional information on hierarchical Bayesian modelling in the BUGS language, of which JAGS uses a dialect, the reader is referred to Kery and Schaub (2011) pages 41-44.
Unless specified, the models assumed vague (low information) prior distributions (Kéry and Schaub, 2011, p. 36). The posterior distributions were estimated from a minimum of 1,000 Markov Chain Monte Carlo (MCMC) samples thinned from the second halves of three chains (Kéry and Schaub, 2011, pp. 38-40). Model convergence was confirmed by ensuring that Rhat (Kéry and Schaub, 2011, p. 40) was less than 1.1 for each of the parameters in the model (Kéry and Schaub, 2011, p. 61). Model adequacy was confirmed by examination of residual plots.
The posterior distributions of the fixed (Kéry and Schaub, 2011, p. 75) parameters are summarised in terms of a point estimate (mean), lower and upper 95% credible limits (2.5th and 97.5th percentiles), the standard deviation (SD), percent relative error (half the 95% credible interval as a percent of the point estimate) and significance (Kéry and Schaub, 2011, p. 37,42).
Variable selection was achieved by dropping uninformative explanatory variables where a variable was considered to be uninformative if its percent relative error was \(\geq\) 100%. In the case of fixed effects this is approximately equivalent to dropping insignificant variables, i.e., those with a significance \(\geq\) 0.05.
The results are displayed graphically by plotting the modeled relationships between particular variables and the response with 95% credible intervals (CRIs) 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) (Kéry and Schaub, 2011, pp. 77-82). Where informative the influence of particular variables is expressed in terms of the effect size (i.e., percent change in the response variable) with 95% CRIs (Bradford et al. 2005). Plots were produced using the ggplot2 R package (Wickham, 2009).
Pool Stranding
The probability of stranding a threshold number of fish was analysed using a hierarchical Bayesian general linear mixed model (GLMM) (Kéry and Schaub, 2011, pp. 73-74).
Key assumptions of the GLMM include:
- The probability of stranding varies with the magnitude of the reduction, the stage, whether a site has been recontoured and the day of the year as a second order polynomial.
- The probability of stranding can vary randomly with the site and year.
- Stranding events are Bernoulli distributed
Preliminary analysis indicated that the data were not overdispersed. Preliminary analysis also indicated that the rate of reduction, the delay between the reduction and salvage and the diel period were not informative predictors of the probability of stranding.
Model Code
The JAGS model code, which uses a series of naming conventions, is presented below.
Pool Stranding
Variable/Parameter | Description |
---|---|
bStranding |
Intercept for logit(eStranding) |
bStrandingDayte |
Effect of Dayte on logit(eStranding) |
bStrandingDayte2 |
Quadratic effect of Dayte on logit(eStranding) |
bStrandingMagnitude |
Effect of Magnitude on logit(eStranding) |
bStrandingRecontoured |
Effect of Recontoured on logit(eStranding) |
bStrandingStage |
Effect of Stage on logit(eStranding) |
Dayte[i] |
Standardised day of the year for the ith site visit |
eStranding[i] |
Expected probability of a stranding event for the ith site visit |
Magnitude[i] |
Standardised magnitude of the reduction for the ith site visit |
Recontoured[i] |
Whether the site of the ith site had been recontoured |
Site[i] |
Site of the ith site visit |
sStrandingSite |
SD of effect of Site on logit(eStranding) |
sStrandingYear |
SD of effect of Year on logit(eStranding) |
Stage[i] |
Standardised stage of the reduction for the ith site visit |
Stranding[i] |
Whether there was a stranding event for the ith site visit |
Year[i] |
Year of the ith site visit |
Pool Stranding - Model1
model{
bStranding ~ dnorm(0, 5^-2)
bStrandingMagnitude ~ dnorm(0, 2^-2)
bStrandingStage ~ dnorm(0, 2^-2)
bStrandingDayte ~ dnorm(0, 2^-2)
bStrandingDayte2 ~ dnorm(0, 2^-2)
bStrandingRecontoured[1] <- 0
for (i in 2:nRecontoured) {
bStrandingRecontoured[i] ~ dnorm(0, 2^-2)
}
sStrandingSite ~ dunif(0, 5)
for (i in 1:nSite) {
bStrandingSite[i] ~ dnorm(0, sStrandingSite^-2)
}
sStrandingYear ~ dunif(0, 5)
for (i in 1:nYear) {
bStrandingYear[i] ~ dnorm(0, sStrandingYear^-2)
}
for(i in 1:length(Stranding)) {
logit(eStranding[i]) <- bStranding + bStrandingMagnitude * Magnitude[i] + bStrandingStage * Stage[i] + bStrandingDayte * Dayte[i] + bStrandingDayte2 * Dayte[i]^2 + bStrandingRecontoured[Recontoured[i]] + bStrandingSite[Site[i]] + bStrandingYear[Year[i]]
Stranding[i] ~ dbern(eStranding[i])
}
}
Results
Model Parameters
The posterior distributions for the fixed (Kery and Schaub 2011 p. 75) parameters in each model are summarised below.
Pool Stranding - Sculpin - One Or More
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bStranding | -3.16066 | -4.1376 | -2.3169 | 0.46753 | 29 | 0.0000 |
bStrandingDayte | -0.27833 | -0.4405 | -0.1075 | 0.08280 | 60 | 0.0000 |
bStrandingDayte2 | -0.01394 | -0.2132 | 0.1756 | 0.09815 | 1395 | 0.9093 |
bStrandingMagnitude | 0.25979 | 0.1164 | 0.3976 | 0.07254 | 54 | 0.0000 |
bStrandingRecontoured[2] | -1.17882 | -1.8244 | -0.5874 | 0.31787 | 52 | 0.0000 |
bStrandingStage | -0.62849 | -0.8252 | -0.4379 | 0.09768 | 31 | 0.0000 |
sStrandingSite | 1.70997 | 1.0933 | 2.7044 | 0.40697 | 47 | 0.0000 |
sStrandingYear | 0.61514 | 0.3688 | 1.0140 | 0.16176 | 52 | 0.0000 |
Rhat | Iterations |
---|---|
1.04 | 4000 |
Pool Stranding - Sculpin - Ten Or More
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bStranding | -5.29866 | -7.2943 | -3.76398 | 0.8906 | 33 | 0.0000 |
bStrandingDayte | -0.30239 | -0.6545 | 0.04839 | 0.1797 | 116 | 0.0960 |
bStrandingDayte2 | -0.55314 | -1.0329 | -0.12428 | 0.2310 | 82 | 0.0093 |
bStrandingMagnitude | 0.03771 | -0.2787 | 0.33702 | 0.1605 | 816 | 0.8040 |
bStrandingRecontoured[2] | -1.42702 | -2.5061 | -0.34954 | 0.5471 | 76 | 0.0107 |
bStrandingStage | -0.51754 | -0.8722 | -0.18193 | 0.1742 | 67 | 0.0013 |
sStrandingSite | 2.68710 | 1.4082 | 4.42674 | 0.7799 | 56 | 0.0000 |
sStrandingYear | 0.88486 | 0.4123 | 1.51799 | 0.2928 | 62 | 0.0000 |
Rhat | Iterations |
---|---|
1.07 | 4000 |
Pool Stranding - Dace - One Or More
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bStranding | -3.2405 | -4.64792 | -2.2710 | 0.59887 | 37 | 0.0000 |
bStrandingDayte | -0.7207 | -1.00739 | -0.4543 | 0.14410 | 38 | 0.0000 |
bStrandingDayte2 | -1.1041 | -1.46664 | -0.7673 | 0.18265 | 32 | 0.0000 |
bStrandingMagnitude | 0.2399 | 0.08096 | 0.4035 | 0.08229 | 67 | 0.0013 |
bStrandingRecontoured[2] | -0.6503 | -1.42697 | 0.1401 | 0.39908 | 120 | 0.1120 |
bStrandingStage | -0.3800 | -0.62671 | -0.1641 | 0.11692 | 61 | 0.0000 |
sStrandingSite | 1.8781 | 1.04138 | 3.1457 | 0.55011 | 56 | 0.0000 |
sStrandingYear | 0.6460 | 0.29142 | 1.1217 | 0.20903 | 64 | 0.0000 |
Rhat | Iterations |
---|---|
1.08 | 2000 |
Pool Stranding - Dace - Ten Or More
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bStranding | -3.9103 | -5.01281 | -2.9947 | 0.5237 | 26 | 0.0000 |
bStrandingDayte | -0.6542 | -1.11642 | -0.2394 | 0.2242 | 67 | 0.0027 |
bStrandingDayte2 | -1.2960 | -1.87767 | -0.7912 | 0.2808 | 42 | 0.0000 |
bStrandingMagnitude | 0.3353 | 0.09034 | 0.5685 | 0.1202 | 71 | 0.0080 |
bStrandingRecontoured[2] | -0.3395 | -1.44092 | 0.7534 | 0.5785 | 323 | 0.5600 |
bStrandingStage | -0.7419 | -1.17223 | -0.3517 | 0.2076 | 55 | 0.0000 |
sStrandingSite | 1.4861 | 0.64940 | 2.6581 | 0.5195 | 68 | 0.0000 |
sStrandingYear | 0.6774 | 0.15446 | 1.3534 | 0.2991 | 88 | 0.0000 |
Rhat | Iterations |
---|---|
1.04 | 2000 |
Figures
Fork Length
Pool Stranding - Sculpin - One Or More
Pool Stranding - Sculpin - Ten Or More
Pool Stranding - Dace - One Or More
Pool Stranding - Dace - Ten Or More
Acknowledgements
The organisations and individuals whose contributions have made this analysis report possible include:
- BC Hydro
- AMEC Earth and Environmental
- Louise Porto
- Crystal Lawrence
- Golder Associates
- Demitria Burgoon
- Dustin Ford
- Poisson Consulting
- Robyn Irvine
References
- Michael Bradford, Josh Korman, Paul Higgins, (2005) Using confidence intervals to estimate the response of salmon populations (Oncorhynchus spp.) to experimental habitat alterations. Canadian Journal of Fisheries and Aquatic Sciences 62 (12) 2716-2726 10.1139/f05-179
- Hadley Wickham, (2009) ggplot2: elegant graphics for data analysis. http://had.co.nz/ggplot2/book
- Joseph Thorley, (2014) jaggernaut: An R package to facilitate Bayesian analyses using JAGS (Just Another Gibbs Sampler). https://github.com/joethorley/jaggernaut
- Marc Kéry, Michael Schaub, (2011) Bayesian population analysis using {WinBUGS} : a hierarchical perspective. http://www.vogelwarte.ch/bpa.html
- Martyn Plummer, (2012) {JAGS} version 3.3.0 user manual. http://sourceforge.net/projects/mcmc-jags/files/Manuals/3.x/
- R Team, (2013) R: a language and environment for statistical computing. http://www.R-project.org