FISS Fish Density Exploratory Analysis 2021
Draft: 2022-03-31 09:57:34
The suggested citation for this analytic appendix is:
Amies-Galonski, E.C., Thorley, J.L., Irvine, A., and Norris, S. (2022) FISS Fish Density Exploratory Analysis 2021. A Poisson Consulting Analysis Appendix. URL: https://www.poissonconsulting.ca/f/1386346791.
Background
The primary goal of the current analyses is to answer the following question:
How does lineal fish density vary with stream gradient and/or channel width?
Data Preparation
Fisheries data was provided by by Ministry of Environment and Climate Change Strategy through custom queries of provincial databases. The joining of this dataset with the freshwater atlas and remotely sensed variables as well as initial data preparation was completed by Hillcrest Geographics and New Graph Environment Ltd. and can be found here: https://github.com/NewGraphEnvironment/fissr_explore. Additional data preparation for analysis was done using R version 4.1.3 (R Core Team 2021).
To simplify the analysis, the data were filtered to include only Rainbow trout observed on 1st pass electrofishing surveys.
Download a SQLite Database and an Excel Workbook of the prepared data.
Statistical Analysis
Model parameters were estimated using Bayesian methods. The estimates were produced using JAGS (Plummer 2003). 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, lower and upper 95% credible limits (CLs) and the surprisal s-value (Greenland 2019). 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 can be considered a test of directionality. More specifically it indicates how surprising (in bits) it would be to discover that the true value of the parameter is in the opposite direction to the estimate. An s-value (Chow and Greenland 2019) is the Shannon transform (-log to base 2) of the corresponding p-value (Kery and Schaub 2011; Greenland and Poole 2013). A surprisal value of 4.3 bits, which is equivalent to a p-value of 0.05 indicates that the surprise would be equivalent to throwing 4.3 heads in a row. The condition that non-essential explanatory variables have s-values \(\geq\) 4.3 bits provides a useful model selection heuristic (Kery and Schaub 2011).
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 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 test 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 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 or n-fold change in the response variable) with 95% credible intervals (CIs, Bradford, Korman, and Higgins 2005).
The analyses were implemented using R version 4.1.3
(R Core Team 2021) and the
mbr
family of packages.
Model Descriptions
The lineal densities of Rainbow Trout were analyzed using three separate Bayesian Generalized Linear Models.
Key assumptions of the density models include:
- Lineal density varies by gradient, channel width, and surveyed site width.
- The remaining variation in the expected count is described by a over-dispersed Poisson distribution.
Preliminary analysis suggested that site width as a second order polynomial and an interaction between channel width and site width were not important predictors of lineal density.
Model Templates
Gradient Model
.model{
b0 ~ dnorm(0, 2^-2)
bPhi ~ dnorm(0, 2^-2) T(0, )
bgradient ~ dnorm(0, 2^-2)
bfishing_area_width ~ dnorm(0, 2^-2)
for (i in 1:nObs) {
log(eCount[i]) <- b0 + bfishing_area_width * log(fishing_area_width[i]) + bgradient * gradient[i] + log(fishing_area_length[i])
eR[i] <- 1/bPhi
eP[i] <- eR[i] / (eR[i] + eCount[i])
count[i] ~ dnegbin(eP[i], eR[i])
..
Block 1. Model description.
Channel Width Model
.model{
b0 ~ dnorm(0, 2^-2)
bPhi ~ dnorm(0, 2^-2) T(0, )
bchannel_width ~ dnorm(0, 2^-2)
bchannel_width2 ~ dnorm(0, 2^-2)
bfishing_area_width ~ dnorm(0, 2^-2)
for (i in 1:nObs) {
log(eCount[i]) <- b0 + bfishing_area_width * log(fishing_area_width[i]) + bchannel_width * log(channel_width[i]) + bchannel_width2 * log(channel_width[i])^2 + log(fishing_area_length[i])
eR[i] <- 1/bPhi
eP[i] <- eR[i] / (eR[i] + eCount[i])
count[i] ~ dnegbin(eP[i], eR[i])
..
Block 2. Model description.
Combined Model
.model{
b0 ~ dnorm(0, 2^-2)
bPhi ~ dnorm(0, 2^-2) T(0, )
bgradient ~ dnorm(0, 2^-2)
bchannel_width ~ dnorm(0, 2^-2)
bchannel_width2 ~ dnorm(0, 2^-2)
bfishing_area_width ~ dnorm(0, 2^-2)
for (i in 1:nObs) {
log(eCount[i]) <- b0 + bfishing_area_width * log(fishing_area_width[i]) + bchannel_width * log(channel_width[i]) + bchannel_width2 * log(channel_width[i])^2 + bgradient * gradient[i] + log(fishing_area_length[i])
eR[i] <- 1/bPhi
eP[i] <- eR[i] / (eR[i] + eCount[i])
count[i] ~ dnegbin(eP[i], eR[i])
..
Block 3. Model description.
Results
Tables
Gradient Model
Table 1. Parameter descriptions.
Parameter | Description |
---|---|
b0 |
Intercept for log(eCount) |
bfishing_area_width |
Effect of fishing_area_width on b0 |
bgradient |
Effect of gradient on b0 |
bPhi |
Extra Poisson variation in count |
count[i] |
The i th count value |
eCount[i] |
Expected value of count[i] |
fishing_area_length[i] |
Fishing area length on the i th visit |
fishing_area_width[i] |
Fishing area width on the i th visit |
gradient[i] |
Gradient on the i th visit |
Table 2. Model coefficients.
term | estimate | lower | upper | svalue |
---|---|---|---|---|
b0 | -2.0938763 | -2.1864637 | -2.0036264 | 10.55171 |
bfishing_area_width | 0.4767403 | 0.4176255 | 0.5365063 | 10.55171 |
bgradient | -0.0413897 | -0.0493768 | -0.0330865 | 10.55171 |
bPhi | 1.6642262 | 1.5963227 | 1.7345643 | 10.55171 |
Table 3. Model convergence.
n | K | nchains | niters | nthin | ess | rhat | converged |
---|---|---|---|---|---|---|---|
3642 | 4 | 3 | 500 | 10 | 1071 | 1.001 | TRUE |
Table 4. Model posterior predictive checks.
moment | observed | median | lower | upper | svalue |
---|---|---|---|---|---|
zeros | NA | NA | NA | NA | NA |
mean | -0.4483539 | -0.4264105 | -0.4584009 | -0.3931541 | 2.427587 |
variance | 1.0120589 | 0.9705915 | 0.9277120 | 1.0113820 | 4.443184 |
skewness | 1.8410238 | 0.2659391 | 0.1986788 | 0.3370685 | 10.551708 |
kurtosis | 6.6433787 | -0.3306902 | -0.4661635 | -0.1668546 | 10.551708 |
Table 5. Model sensitivity.
n | K | nchains | niters | rhat_1 | rhat_2 | rhat_all | converged |
---|---|---|---|---|---|---|---|
3642 | 4 | 3 | 500 | 1.001 | 1.002 | 1 | TRUE |
Channel Width Model
Table 6. Parameter descriptions.
Parameter | Description |
---|---|
b0 |
Intercept for log(eCount) |
bchannel_width |
Effect of channel_width on b0 |
bchannel_width2 |
Effect of 2nd order channel width polynomial on
b0 |
bfishing_area_width |
Effect of fishing_area_width on b0 |
bPhi |
Extra Poisson variarition in count |
channel_width[i] |
Channel Width on the i th visit |
count[i] |
The i th count value |
eCount[i] |
Expected value of count[i] |
fishing_area_length |
Fishing area length on the i th visit |
fishing_area_width[i] |
Fishing area width on the i th visit |
Table 7. Model coefficients.
term | estimate | lower | upper | svalue |
---|---|---|---|---|
b0 | -2.7574985 | -2.8705936 | -2.6525615 | 10.551708 |
bchannel_width | 0.4140714 | 0.2940932 | 0.5276405 | 10.551708 |
bchannel_width2 | 0.0509487 | 0.0244554 | 0.0803272 | 10.551708 |
bfishing_area_width | 0.0481200 | -0.0200235 | 0.1177951 | 2.591706 |
bPhi | 1.5336338 | 1.4695442 | 1.5998335 | 10.551708 |
Table 8. Model convergence.
n | K | nchains | niters | nthin | ess | rhat | converged |
---|---|---|---|---|---|---|---|
3642 | 5 | 3 | 500 | 10 | 278 | 1.003 | TRUE |
Table 9. Model posterior predictive checks.
moment | observed | median | lower | upper | svalue |
---|---|---|---|---|---|
zeros | NA | NA | NA | NA | NA |
mean | -0.421380 | -0.4132839 | -0.4457099 | -0.3775086 | 0.7752752 |
variance | 1.006260 | 0.9798910 | 0.9379708 | 1.0209119 | 2.2074124 |
skewness | 1.484731 | 0.2410359 | 0.1740599 | 0.3084997 | 10.5517083 |
kurtosis | 4.481010 | -0.3346369 | -0.4614843 | -0.1785626 | 10.5517083 |
Table 10. Model sensitivity.
n | K | nchains | niters | rhat_1 | rhat_2 | rhat_all | converged |
---|---|---|---|---|---|---|---|
3642 | 5 | 3 | 500 | 1.003 | 1.006 | 1.018 | TRUE |
Combined Model
Table 11. Parameter descriptions.
Parameter | Description |
---|---|
b0 |
Intercept for log(eCount) |
bchannel_width |
Effect of channel_width on b0 |
bchannel_width2 |
Effect of 2nd order channel width polynomial on
b0 |
bfishing_area_width |
Effect of fishing_area_width on b0 |
bgradient |
Effect of gradient on b0 |
bPhi |
Extra Poisson variation in count |
channel_width[i] |
Channel Width on the i th visit |
count[i] |
The i th count value |
eCount[i] |
Expected value of count[i] |
fishing_area_length[i] |
Fishing area length on the i th visit |
fishing_area_width[i] |
Fishing area width on the i th visit |
gradient[i] |
Gradient on the i th visit |
Table 12. Model coefficients.
term | estimate | lower | upper | svalue |
---|---|---|---|---|
b0 | -2.7224217 | -2.8510964 | -2.5802857 | 10.551708 |
bchannel_width | 0.4055045 | 0.2683401 | 0.5394090 | 10.551708 |
bchannel_width2 | 0.0501106 | 0.0182801 | 0.0824520 | 10.551708 |
bfishing_area_width | 0.0580809 | -0.0138104 | 0.1282354 | 3.067893 |
bgradient | -0.0055476 | -0.0140401 | 0.0032851 | 2.280245 |
bPhi | 1.5314553 | 1.4642607 | 1.6004100 | 10.551708 |
Table 13. Model convergence.
n | K | nchains | niters | nthin | ess | rhat | converged |
---|---|---|---|---|---|---|---|
3642 | 6 | 3 | 500 | 10 | 204 | 1.002 | TRUE |
Table 14. Model posterior predictive checks.
moment | observed | median | lower | upper | svalue |
---|---|---|---|---|---|
zeros | NA | NA | NA | NA | NA |
mean | -0.4210265 | -0.4118605 | -0.4469545 | -0.3781688 | 0.6952827 |
variance | 1.0074432 | 0.9804980 | 0.9400578 | 1.0230972 | 2.2802452 |
skewness | 1.4754899 | 0.2415209 | 0.1766412 | 0.3091847 | 10.5517083 |
kurtosis | 4.3908798 | -0.3333002 | -0.4705908 | -0.1717422 | 10.5517083 |
Table 15. Model sensitivity.
n | K | nchains | niters | rhat_1 | rhat_2 | rhat_all | converged |
---|---|---|---|---|---|---|---|
3642 | 6 | 3 | 500 | 1.002 | 1.004 | 1.002 | TRUE |
Figures
Gradient Model
Channel Width Model
Combined Model
Acknowledgements
The organisations and individuals whose contributions have made this analytic appendix possible include:
- Craig Mount
- Robin Munro
- Gordon Warrenchuk