Kootenay Lake Gerrard Rainbow Trout Condition and Growth Analysis 2014
The suggested citation for this analytic report is:
Thorley, J.L. (2015) Kootenay Lake Gerrard Rainbow Trout Condition and Growth Analysis 2014. A Poisson Consulting Analysis Report. URL: https://www.poissonconsulting.ca/f/723490014.
Background
The large, piscivorous Gerrard Rainbow Trout of Kootenay Lake support an important recreational fishery. Intermittently, since 1966, length, weight, fecundity and scale information has been collected from individual fish.
The primary questions the following analyses attempt to answer are:
What is the relationship between fork length and a) weight and b) fecundity?
How does body condition vary by year?
How does growth vary by year?
In addition the analysis asks
Are trends in growth and condition related to trends in kokanee abundance?
Methods
Data Preparation
The length, weight, fecundity and kokanee information was provided by RedFish Consulting Ltd. Scale ages were determined by Greg Andrusak (RedFish Consulting Ltd.), Carol Lidstone (Birkenhead Scale Analyses) and Les Fleck. Scale radii at annuli and scale lengths were provided by Greg Andrusak. The data were cleansed, tidied and manipulated prior to analysis using R version 3.1.2 (Team 2013).
Statistical Analysis
Hierarchical Bayesian models were fitted to the count data using R version 3.1.2 (Team 2013) and JAGS 3.4.0 (Plummer 2012) which interfaced with each other via jaggernaut 2.2.8 (Thorley 2013). 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, 41–44).
Unless specified, the models assumed vague (low information) prior distributions (Kery and Schaub 2011, 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 (Kery and Schaub 2011, 38–40). Model convergence was confirmed by ensuring that Rhat (Kery and Schaub 2011, 40) was less than 1.1 for each of the parameters in the model (Kery and Schaub 2011, 61). Model adequacy was confirmed by examination of residual plots.
The posterior distributions of the fixed (Kery and Schaub 2011, 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 (Kery and Schaub 2011, 37, 42).
Variable selection was achieved by dropping insignificant (Kery and Schaub 2011, 37, 42) fixed (Kery and Schaub 2011, 77–82) variables and uninformative random variables. A fixed variables was considered to be insignificant if its significance was \(\geq\) 0.05 while a random variable was considered to be uninformative if its percent relative error was \(\geq\) 80%.
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) (Kery and Schaub 2011, 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, Korman, and Higgins 2005).
Fecundity
The relationship between fork length and the egg count was estimated using an allometric model. Key assumptions of the fecundity model include:
- The residual egg counts are log-normally distributed.
Condition
The relationship between body weight and fork length was estimated using an allometric mass-length model similar to He and Bence (2008). Key assumptions of the condition model include:
- The weight varies with the length.
- The weight varies with the day of the year as a second order polynomial.
- The weight varies randomly with the year
- The residual weight is log-normally distributed.
Backcalculated Growth
The relative growth in any given year was estimated from the scale increments using a polynomial model. Key assumptions of the polynomial model include:
- The scale increment varies with the scale radius as a second order polynomial.
- The scale increment varies randomly by year.
- The residual variation which is log-normally distributed varies with the reader’s minimum confidence in the two annuli.
Preliminary analyses indicated that the fork length of the fish at capture and fish ID as a random effect were not informative predictors of scale increment.
Dynamic Factor Analysis
The relative similarities between the yearly condition and growth (scale increment) estimates and the yearly kokanee abundance estimates were estimated using a Dynamic Factor Analysis (Zuur, Tuck, and Bailey 2003). Due to the rotation problem the underlying trends were indeterminate (Abmann, Boysen-Hogrefe, and Pape 2014). The growth estimates were lagged by one year.
Key assumptions of the DFA model include:
- The time series are described by two underlying trends.
- The random walk processes in the trends are normally distributed.
- The residual variation in the standardised variables is normally distributed.
Model Code
The JAGS model code, which uses a series of naming conventions, is presented below.
Fecundity
Variable/Parameter | Description |
---|---|
bAlpha |
Intercept for log(eFecundity) |
bBeta |
Slope for log(eFecundity[i]) |
Fecundity[i] |
Fecundity of i th fish |
sFecundity |
SD of residual variation in log(Fecundity) |
Fecundity - Model1
model {
bAlpha ~ dnorm(5, 5^-2)
bBeta ~ dnorm(1, 5^-2)
sFecundity ~ dunif(0, 1)
for(i in 1:length(Fecundity)) {
log(eFecundity[i]) <- bAlpha + bBeta * Length[i]
Fecundity[i] ~ dlnorm(log(eFecundity[i]), sFecundity^-2)
}
}
Condition
Variable/Parameter | Description |
---|---|
bAlpha |
Intercept for eAlpha |
bAlphaDayte |
Effect of Dayte on bAlpha |
bAlphaDayte2 |
Quadratic effect of Dayte on bAlpha |
bBeta |
Intercept for eBeta |
Dayte[i] |
Day of the year on which i th fish encountered |
eAlpha |
Predicted intercept for log(eWeight) |
eBeta |
Predicted effect of centred log(Length) on log(eWeight) |
eWeight[i] |
Prediction weight of i th fish |
Length[i] |
Centered log fork length of i th fish |
sAlphaYear |
SD of effect of Year on bAlpha |
sWeight |
SD of residual variation in log(Weight) |
Weight[i] |
Weight of i th fish |
Year[i] |
Year on which i th fish encountered |
Condition - Model1
model {
bAlpha ~ dnorm(5, 5^-2)
bBeta ~ dnorm(3, 5^-2)
bAlphaDayte ~ dnorm(0, 5^-2)
bAlphaDayte2 ~ dnorm(0, 5^-2)
sAlphaYear ~ dunif(0, 5)
for(i in 1:nYear) {
bAlphaYear[i] ~ dnorm(0, sAlphaYear^-2)
}
sWeight ~ dunif(0, 5)
for(i in 1:length(Weight)) {
eAlpha[i] <- bAlpha + bAlphaDayte * Dayte[i] + bAlphaDayte2 * Dayte[i]^2 + bAlphaYear[Year[i]]
eBeta[i] <- bBeta
log(eWeight[i]) <- eAlpha[i] + eBeta[i] * Length[i]
Weight[i] ~ dlnorm(log(eWeight[i]), sWeight^-2)
}
}
Age
Variable/Parameter | Description |
---|---|
Age[i] |
Age for i th scale reading |
bK |
Intercept for eK |
bKReader |
Effect of Reader on log(bK) |
bLinf |
Mean maximum length |
bT0Reader |
Effect of Reader on t0 |
eK[i] |
Expected growth coefficient for i th scale reading |
eT0[i] |
Expected length at time zero |
Length[i] |
Fork length at capture for i th scale reading |
Reader[i] |
Reader for i th scale reading |
sKReader |
SD of effect of Fish on bK |
sLength |
SD of residual variation in Length |
t0 |
Intercept for eT0 |
Age - Model1
model {
bLInf ~ dunif(700, 1000)
bK ~ dunif(0, 1)
t0 ~ dnorm(0, 2^-1)
bKReader[1] <- 0
bT0Reader[1] <- 0
for(i in 2:nReader) {
bKReader[i] ~ dnorm(0, 1^-2)
bT0Reader[i] ~ dnorm(0, 5^-2)
}
sKFish ~ dunif(0, 1)
for(i in 1:nFish) {
bKFish[i] ~ dnorm(0, sKFish^-2)
}
sLength ~ dunif(0, 100)
for (i in 1:length(Length)) {
eLInf[i] <- bLInf
log(eK[i]) <- log(bK) + bKReader[Reader[i]] + bKFish[Fish[i]]
eT0[i] <- t0 + bT0Reader[Reader[i]]
eLength[i] <- eLInf[i] * (1 - exp(-eK[i] * (Age[i] - eT0[i])))
Length[i] ~ dnorm(eLength[i], sLength^-2)
}
}
Back-Calculated Growth
Variable/Parameter | Description |
---|---|
bInc |
Intercept for log(eInc) |
bIncScaleRadius |
Effect of ScaleRadius on bInc |
bIncScaleRadius2 |
Quadratic effect of ScaleRadius on bInc |
bSDInc |
Intercept for log(eSDInc) |
bSDProbability |
Effect of Probability on bSDInc |
eInc[i] |
Expected increment for i th annulus difference |
eSDInc[i] |
Expected SD for for i th annulus difference |
Increment[i] |
Measured annulus difference |
Probability[i] |
Readers minimum confidence in i th annulus difference |
sIncYear |
SD of effect of Year on bInc |
Year[i] |
Inferred year of second annulus for i th annulus difference |
Back-Calculated Growth - Model1
model {
bInc ~ dnorm(0, 5^-2)
bIncScaleRadius ~ dnorm(0, 5^-2)
bIncScaleRadius2 ~ dnorm(0, 5^-2)
sIncYear ~ dunif(0, 5)
for (i in 1:nYear) {
bIncYear[i] ~ dnorm(0, sIncYear^-2)
}
bSDInc ~ dnorm(0, 5^-2)
bSDIncProbability ~ dnorm(0, 5^-2)
for (i in 1:length(ScaleRadius)) {
log(eInc[i]) <- bInc + bIncScaleRadius * ScaleRadius[i] + bIncScaleRadius2 * ScaleRadius[i]^2 + bIncYear[Year[i]]
log(eSDInc[i]) <- bSDInc + bSDIncProbability * Probability[i]
Increment[i] ~ dlnorm(log(eInc[i]), eSDInc[i]^-2)
}
}
Dynamic Factor Analysis
Variable/Parameter | Description |
---|---|
bDistance[i,j] |
Euclidean distance between i th and j th Variable |
bTrendYear[t,y] |
Expected value for t th trend in y th Year |
eValue[v,y,t] |
Expected standardised value for v th Variable in y th Year considering t th trends |
sTrend |
SD in trend random walks |
sValue |
SD for residual variation in Value |
Value[i] |
Standardised value for i th data point |
Variable[i] |
Variable for i th data point |
Year[i] |
Year of i th data point |
Z[v,y] |
Expected weighting for v th Variable in y th Year |
Dynamic Factor Analysis - Model1
model{
sTrend ~ dunif(0, 1)
for (t in 1:nTrend) {
bTrendYear[t,1] ~ dunif(-1,1)
for(y in 2:nYear){
bTrendYear[t,y] ~ dnorm(bTrendYear[t,y-1], sTrend^-2)
}
}
for(v in 1:nVariable){
for(t in 1:nTrend) {
Z[v,t] ~ dunif(-1,1)
}
for(y in 1:nYear){
eValue[v,y,1] <- Z[v,1] * bTrendYear[1,y]
for(t in 2:nTrend) {
eValue[v,y,t] <- eValue[v,y,t-1] + Z[v,t] * bTrendYear[t,y]
}
}
}
sValue ~ dunif(0, 1)
for(i in 1:length(Value)) {
Value[i] ~ dnorm(eValue[Variable[i], Year[i], nTrend], sValue^-2)
}
for(i in 1:nVariable) {
for(j in 1:nVariable) {
bDistance[i,j] <- sqrt(sum((Z[i,]-Z[j,])^2))
}
}
}
Results
Model Parameters
The posterior distributions for the fixed (Kery and Schaub 2011 p. 75) parameters in each model are summarised below.
Fecundity
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bAlpha | 8.97374 | 8.93630 | 9.01392 | 0.01892 | 0 | 7e-04 |
bBeta | 1.74870 | 1.40080 | 2.10560 | 0.17440 | 20 | 7e-04 |
sFecundity | 0.07758 | 0.05576 | 0.11355 | 0.01439 | 37 | 7e-04 |
Convergence | Iterations |
---|---|
1.01 | 1000 |
Condition
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bAlpha | 1.32120 | 1.25860 | 1.39270 | 0.03270 | 5 | 0.0010 |
bAlphaDayte | -0.01217 | -0.02538 | 0.00124 | 0.00677 | 110 | 0.0739 |
bAlphaDayte2 | 0.02240 | 0.01008 | 0.03431 | 0.00610 | 54 | 0.0010 |
bBeta | 3.26010 | 3.18960 | 3.32970 | 0.03690 | 2 | 0.0010 |
sAlphaYear | 0.10060 | 0.06010 | 0.16500 | 0.02690 | 52 | 0.0010 |
sWeight | 0.15795 | 0.15059 | 0.16647 | 0.00400 | 5 | 0.0010 |
Convergence | Iterations |
---|---|
1.01 | 1e+05 |
Age
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bK | 0.17204 | 0.15224 | 0.19128 | 0.01034 | 11 | 0.0010 |
bKReader[2] | -0.03520 | -0.08910 | 0.02140 | 0.02790 | 160 | 0.1827 |
bKReader[3] | 0.61110 | 0.49270 | 0.72450 | 0.06070 | 19 | 0.0010 |
bLInf | 924.18000 | 904.69000 | 951.64000 | 11.83000 | 3 | 0.0010 |
bT0Reader[2] | -0.19280 | -0.50200 | 0.09670 | 0.15340 | 160 | 0.2129 |
bT0Reader[3] | 2.10600 | 1.52600 | 2.81600 | 0.32800 | 31 | 0.0010 |
sKFish | 0.32669 | 0.29840 | 0.35558 | 0.01470 | 9 | 0.0010 |
sLength | 20.59600 | 17.63400 | 23.95700 | 1.54000 | 15 | 0.0010 |
t0 | -0.85200 | -1.64400 | -0.28300 | 0.34900 | 80 | 0.0010 |
Convergence | Iterations |
---|---|
1.04 | 80000 |
Back-Calculated Growth
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
bInc | 1.59690 | 1.52200 | 1.66850 | 0.03780 | 5 | 0.0010 |
bIncScaleRadius | 0.16324 | 0.13690 | 0.19196 | 0.01453 | 17 | 0.0010 |
bIncScaleRadius2 | -0.09418 | -0.11742 | -0.07253 | 0.01144 | 24 | 0.0010 |
bSDInc | -0.96289 | -1.00488 | -0.91875 | 0.02153 | 4 | 0.0010 |
bSDIncProbability | 0.02469 | -0.01958 | 0.06840 | 0.02263 | 180 | 0.2595 |
sIncYear | 0.14790 | 0.09810 | 0.22190 | 0.03150 | 42 | 0.0010 |
Convergence | Iterations |
---|---|
1.01 | 1e+05 |
Dynamic Factor Analysis
Parameter | Estimate | Lower | Upper | SD | Error | Significance |
---|---|---|---|---|---|---|
sTrend | 0.7754 | 0.4984 | 0.9807 | 0.1311 | 31 | 0.001 |
sValue | 0.6182 | 0.5053 | 0.7812 | 0.0694 | 22 | 0.001 |
Convergence | Iterations |
---|---|
1.02 | 1e+05 |
Figures
Condition
Age
Back-Calculated Growth
Dynamic Factor Analysis
Acknowledgements
The organisations and individuals whose contributions have made this analysis report possible include:
- Redfish Consulting Ltd.
- Greg Andrusak
- Birkenhead Scale Analyses
- Carol Lidstone
- Reel Adventures
- Kerry Reed
- Les Fleck
References
Abmann, C., J. Boysen-Hogrefe, and M. Pape. 2014. “Bayesian Analysis of Dynamic Factor Models: An Ex-Post Approach Towards the Rotation Problem.” Kiel Working Paper No. 1902. Kiel, Germany: Kiel Institute for the World Economy.
Bradford, Michael J, Josh Korman, and Paul S 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–26. https://doi.org/10.1139/f05-179.
He, Ji X., James R. Bence, James E. Johnson, David F. Clapp, and Mark P. Ebener. 2008. “Modeling Variation in Mass-Length Relations and Condition Indices of Lake Trout and Chinook Salmon in Lake Huron: A Hierarchical Bayesian Approach.” Transactions of the American Fisheries Society 137 (3): 801–17. https://doi.org/10.1577/T07-012.1.
Kery, Marc, and Michael Schaub. 2011. Bayesian Population Analysis Using WinBUGS : A Hierarchical Perspective. Boston: Academic Press. http://www.vogelwarte.ch/bpa.html.
Plummer, Martyn. 2012. “JAGS Version 3.3.0 User Manual.” http://sourceforge.net/projects/mcmc-jags/files/Manuals/3.x/.
Team, R Core. 2013. “R: A Language and Environment for Statistical Computing.” Vienna, Austria: R Foundation for Statistical Computing. http://www.R-project.org.
Thorley, J. L. 2013. “Jaggernaut: An R Package to Facilitate Bayesian Analyses Using JAGS (Just Another Gibbs Sampler).” Nelson, B.C.: Poisson Consulting Ltd. https://github.com/poissonconsulting/jaggernaut.
Zuur, A F, I D Tuck, and N Bailey. 2003. “Dynamic Factor Analysis to Estimate Common Trends in Fisheries Time Series.” Canadian Journal of Fisheries and Aquatic Sciences 60 (5): 542–52. https://doi.org/10.1139/f03-030.