Introduction

This report compares the size selectivity of two gillnet types, CEN (standard) and MOD (modified), for Perch and Roach, fitted under two zone scopes:

  1. Both zones — Pelagic and Benthic strata combined, with zone included as a fixed effect (m1_Perch, m1_roach).
  2. Benthic only — the same model structure restricted to Zone == "Benthic", with zone dropped from the formula since it is constant within the subset (m1_Perch_Benthic, m1_roach_Benthic).

The aim is to determine whether restricting the analysis to the Benthic zone changes the conclusions about where along the length axis CEN and MOD nets differ in catch rate — i.e. whether a single fixed zone term in the combined model adequately captures habitat-driven differences, or whether Benthic-specific fitting reveals a different selectivity pattern.

Methods

  • Length imputation. Missing fish lengths were imputed from weight using species-specific log–log length–weight regressions (lm(log(Length) ~ log(Mean_Weight))).
  • GAM structure. catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, k = 10) + mesh_mm + net_type [+ zone] + s(lake_year, bs = "re"), family = mgcv::nb(), estimated by REML. mesh_net = interaction(mesh_mm, net_type) gives each mesh size × net type combination its own length-selectivity smooth. zone is included only in the both-zones models.
  • Model variants (per zone scope).
    1. Model 0 (baseline) — one selectivity smooth per mesh size, shared across net types (s(length_cm, by = mesh_mm)).
    2. Model 1 (interaction) — a separate selectivity smooth per mesh size × net type combination (s(length_cm, by = mesh_net)), the more flexible formulation for comparing CEN vs MOD.
    3. Models are compared by likelihood-ratio test (anova(m0, m1, test = "Chisq")); a significant result means letting selectivity vary by net type improves the fit.
  • Selectivity curve prediction. For each fitted Model 1, build_selectivity_grid() constructs a prediction grid per mesh size × net type, with the length range trimmed to the 1st–99th percentile of observed catch lengths (avoiding extrapolation into sparse data at the tails, which otherwise inflates the smooth’s standard error). predict_selectivity() predicts on the link scale, excluding the lake_year random effect (population-level prediction), and back-transforms to the response scale with 95% confidence intervals. plot_selectivity() renders the result faceted by mesh size (independent x/y scales per panel) with CEN vs MOD overlaid.
  • Comparability caveat. The Benthic-only models are fit on a strict subset of the same rows used by the both-zones models (dat_perch_benthic <- dat_perch |> filter(zone == "Benthic"), and equivalently for Roach), so mesh_net smooths in the Benthic-only fits are estimated from less data — expect wider confidence intervals, especially for less-common mesh × net-type combinations.

Perch

Exploratory Data Analysis

Length–weight relationship used to impute missing perch lengths.

newx_p <- data.frame(
  Mean_Weight = seq(min(Data_Perch_LW$Mean_Weight),
                    max(Data_Perch_LW$Mean_Weight), length.out = 200)
)
lw_pred_p <- bind_cols(
  newx_p,
  as.data.frame(predict(lw_model_Perch, newdata = newx_p, interval = "confidence"))
) |>
  mutate(across(c(fit, lwr, upr), exp))

ggplot(Data_Perch_LW, aes(Mean_Weight, Length)) +
  geom_point(alpha = 0.4) +
  geom_ribbon(data = lw_pred_p, aes(y = fit, ymin = lwr, ymax = upr), alpha = 0.2) +
  geom_line(data = lw_pred_p, aes(y = fit), colour = "blue", linewidth = 1) +
  labs(x = "Mean weight (g)", y = "Length (cm)") +
  theme_minimal()

Raw counts and effort-standardised NPUE by size class and net type (both zones pooled).

Perch_Plot

Perch_NPUE_Plot

GAM Modelling — Both Zones

Model comparison: does letting the selectivity smooth vary by net type (Model 1) improve on the shared-smooth baseline (Model 0)?

anova(m0_Perch, m1_Perch, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_mm, k = 10) + 
##     mesh_mm + net_type + zone + s(lake_year, bs = "re")
## Model 2: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + zone + s(lake_year, bs = "re")
##   Resid. Df Resid. Dev     Df Deviance  Pr(>Chi)    
## 1    8840.6      31189                              
## 2    8820.6      31084 19.957   104.64 1.776e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Summary of the preferred (interaction) model.

summary(m1_Perch)
## 
## Family: Negative Binomial(1.162) 
## Link function: log 
## 
## Formula:
## catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + zone + s(lake_year, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.7456     0.2259  -3.301 0.000964 ***
## mesh_mm8     -0.6091     0.2746  -2.218 0.026557 *  
## mesh_mm10    -0.4575     0.2029  -2.255 0.024157 *  
## mesh_mm12.5  -0.4990     0.2034  -2.454 0.014142 *  
## mesh_mm15.5  -0.4905     0.2372  -2.067 0.038700 *  
## mesh_mm19.5  -0.6341     0.2779  -2.282 0.022509 *  
## mesh_mm24    -0.8987     0.4785  -1.878 0.060335 .  
## mesh_mm29    -0.8387     0.4400  -1.906 0.056645 .  
## mesh_mm35    -1.7065     0.6287  -2.714 0.006638 ** 
## mesh_mm43    -3.1514     0.6924  -4.551 5.33e-06 ***
## net_typeMOD   0.2958     0.1116   2.650 0.008047 ** 
## zonePelagic  -1.5692     0.0588 -26.688  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                 edf Ref.df  Chi.sq  p-value    
## s(length_cm):mesh_net6.25.CEN 5.069  5.370  54.395  < 2e-16 ***
## s(length_cm):mesh_net8.CEN    5.526  5.873  65.880  < 2e-16 ***
## s(length_cm):mesh_net10.CEN   1.019  1.036   1.495 0.239439    
## s(length_cm):mesh_net12.5.CEN 1.000  1.000   0.577 0.447590    
## s(length_cm):mesh_net15.5.CEN 1.013  1.026   0.236 0.641245    
## s(length_cm):mesh_net19.5.CEN 1.001  1.001   0.492 0.483419    
## s(length_cm):mesh_net24.CEN   1.000  1.000   0.699 0.403198    
## s(length_cm):mesh_net29.CEN   1.000  1.000   0.621 0.430759    
## s(length_cm):mesh_net35.CEN   1.010  1.020   3.491 0.063231 .  
## s(length_cm):mesh_net43.CEN   1.856  2.277  10.143 0.009423 ** 
## s(length_cm):mesh_net6.25.MOD 4.699  4.926  27.235 4.84e-05 ***
## s(length_cm):mesh_net8.MOD    4.196  4.690  24.366 0.000245 ***
## s(length_cm):mesh_net10.MOD   1.984  2.408   5.494 0.093342 .  
## s(length_cm):mesh_net12.5.MOD 2.226  2.662   9.753 0.015842 *  
## s(length_cm):mesh_net15.5.MOD 1.000  1.001   2.151 0.142537    
## s(length_cm):mesh_net19.5.MOD 1.009  1.017   0.827 0.368927    
## s(length_cm):mesh_net24.MOD   1.000  1.001   0.003 0.963523    
## s(length_cm):mesh_net29.MOD   1.042  1.083   1.589 0.217641    
## s(length_cm):mesh_net35.MOD   1.000  1.001   1.148 0.284256    
## s(length_cm):mesh_net43.MOD   1.000  1.000   0.004 0.947831    
## s(lake_year)                  9.734 10.000 932.444  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.00821   Deviance explained =   45%
## -REML =  15658  Scale est. = 1         n = 8887

GAM Modelling — Benthic Zone Only

anova(m0_Perch_Benthic, m1_Perch_Benthic, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_mm, k = 10) + 
##     mesh_mm + net_type + s(lake_year, bs = "re")
## Model 2: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + s(lake_year, bs = "re")
##   Resid. Df Resid. Dev     Df Deviance  Pr(>Chi)    
## 1    8237.7      29350                              
## 2    8217.6      29253 20.151   96.655 5.632e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m1_Perch_Benthic)
## 
## Family: Negative Binomial(1.123) 
## Link function: log 
## 
## Formula:
## catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + s(lake_year, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.7525     0.2241  -3.358 0.000785 ***
## mesh_mm8     -0.5976     0.2674  -2.235 0.025420 *  
## mesh_mm10    -0.4698     0.1987  -2.364 0.018073 *  
## mesh_mm12.5  -0.4870     0.2000  -2.435 0.014882 *  
## mesh_mm15.5  -0.5023     0.2414  -2.080 0.037488 *  
## mesh_mm19.5  -0.6434     0.2826  -2.277 0.022776 *  
## mesh_mm24    -0.8553     0.5329  -1.605 0.108478    
## mesh_mm29    -0.8612     0.4442  -1.939 0.052550 .  
## mesh_mm35    -1.6884     0.7024  -2.404 0.016232 *  
## mesh_mm43    -3.3580     0.7708  -4.357 1.32e-05 ***
## net_typeMOD   0.2982     0.1141   2.613 0.008962 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                 edf Ref.df  Chi.sq  p-value    
## s(length_cm):mesh_net6.25.CEN 5.088  5.391  55.789  < 2e-16 ***
## s(length_cm):mesh_net8.CEN    5.529  5.878  70.940  < 2e-16 ***
## s(length_cm):mesh_net10.CEN   1.085  1.163   1.724 0.272752    
## s(length_cm):mesh_net12.5.CEN 1.000  1.001   0.361 0.547927    
## s(length_cm):mesh_net15.5.CEN 1.003  1.007   0.100 0.757052    
## s(length_cm):mesh_net19.5.CEN 1.001  1.001   0.447 0.503990    
## s(length_cm):mesh_net24.CEN   1.000  1.000   0.373 0.541633    
## s(length_cm):mesh_net29.CEN   1.000  1.000   0.656 0.418110    
## s(length_cm):mesh_net35.CEN   1.001  1.002   2.542 0.111105    
## s(length_cm):mesh_net43.CEN   1.903  2.336  10.003 0.010795 *  
## s(length_cm):mesh_net6.25.MOD 4.726  4.937  32.547 4.84e-06 ***
## s(length_cm):mesh_net8.MOD    4.186  4.679  23.243 0.000303 ***
## s(length_cm):mesh_net10.MOD   2.013  2.437   6.492 0.064846 .  
## s(length_cm):mesh_net12.5.MOD 2.108  2.523   7.594 0.037575 *  
## s(length_cm):mesh_net15.5.MOD 1.000  1.000   2.563 0.109446    
## s(length_cm):mesh_net19.5.MOD 1.013  1.027   0.884 0.357124    
## s(length_cm):mesh_net24.MOD   1.001  1.001   0.027 0.872354    
## s(length_cm):mesh_net29.MOD   1.026  1.051   1.261 0.267926    
## s(length_cm):mesh_net35.MOD   1.000  1.001   0.981 0.322294    
## s(length_cm):mesh_net43.MOD   1.000  1.001   0.089 0.766586    
## s(lake_year)                  9.715 10.000 922.456  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.00851   Deviance explained = 39.3%
## -REML =  14739  Scale est. = 1         n = 8283

Selectivity Curves — Both Zones vs Benthic Only

Predicted catch rate by length and mesh size, CEN vs MOD overlaid with 95% confidence ribbons. Top: both zones combined; bottom: Benthic zone only.

Both zones

Perch_Selectivity_Plot

Benthic zone

Perch_Benthic_Selectivity_Plot


Roach

Exploratory Data Analysis

Length–weight relationship used to impute missing roach lengths.

newx_r <- data.frame(
  Mean_Weight = seq(min(Data_Roach_LW$Mean_Weight),
                    max(Data_Roach_LW$Mean_Weight), length.out = 200)
)
lw_pred_r <- bind_cols(
  newx_r,
  as.data.frame(predict(lw_model_Roach, newdata = newx_r, interval = "confidence"))
) |>
  mutate(across(c(fit, lwr, upr), exp))

ggplot(Data_Roach_LW, aes(Mean_Weight, Length)) +
  geom_point(alpha = 0.4) +
  geom_ribbon(data = lw_pred_r, aes(y = fit, ymin = lwr, ymax = upr), alpha = 0.2) +
  geom_line(data = lw_pred_r, aes(y = fit), colour = "blue", linewidth = 1) +
  labs(x = "Mean weight (g)", y = "Length (cm)") +
  theme_minimal()

Raw counts and effort-standardised NPUE by size class and net type (both zones pooled).

Roach_Plot

Roach_NPUE_Plot

GAM Modelling — Both Zones

anova(m0_roach, m1_roach, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_mm, k = 10) + 
##     mesh_mm + net_type + zone + s(lake_year, bs = "re")
## Model 2: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + zone + s(lake_year, bs = "re")
##   Resid. Df Resid. Dev     Df Deviance  Pr(>Chi)    
## 1    4541.5      12038                              
## 2    4525.9      11898 15.566   139.76 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m1_roach)
## 
## Family: Negative Binomial(5.06) 
## Link function: log 
## 
## Formula:
## catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + zone + s(lake_year, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.98171    0.26026  -3.772 0.000162 ***
## mesh_mm8    -0.27092    0.71272  -0.380 0.703855    
## mesh_mm10   -0.21403    0.30096  -0.711 0.476986    
## mesh_mm12.5 -0.31360    0.26449  -1.186 0.235741    
## mesh_mm15.5 -0.39767    0.26611  -1.494 0.135081    
## mesh_mm19.5 -0.41152    0.27952  -1.472 0.140951    
## mesh_mm24   -0.41438    0.30563  -1.356 0.175153    
## mesh_mm29   -0.91348    0.57362  -1.593 0.111272    
## mesh_mm35   -1.67499    0.48863  -3.428 0.000608 ***
## mesh_mm43   -2.12976    0.67147  -3.172 0.001515 ** 
## net_typeMOD  0.08694    0.07908   1.099 0.271604    
## zonePelagic -1.25135    0.03286 -38.087  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                 edf Ref.df Chi.sq  p-value    
## s(length_cm):mesh_net6.25.CEN 2.638  3.138  9.624 0.024055 *  
## s(length_cm):mesh_net8.CEN    5.760  6.000 49.929  < 2e-16 ***
## s(length_cm):mesh_net10.CEN   1.513  1.827  1.027 0.499144    
## s(length_cm):mesh_net12.5.CEN 1.000  1.001  0.218 0.640688    
## s(length_cm):mesh_net15.5.CEN 1.001  1.002  0.000 0.995988    
## s(length_cm):mesh_net19.5.CEN 1.000  1.001  0.060 0.806577    
## s(length_cm):mesh_net24.CEN   1.000  1.001  0.044 0.834745    
## s(length_cm):mesh_net29.CEN   1.000  1.001  0.962 0.326896    
## s(length_cm):mesh_net35.CEN   1.434  1.714  8.114 0.011935 *  
## s(length_cm):mesh_net43.CEN   1.038  1.074  4.976 0.027804 *  
## s(length_cm):mesh_net6.25.MOD 1.061  1.118  1.153 0.293060    
## s(length_cm):mesh_net8.MOD    1.000  1.000  1.183 0.276842    
## s(length_cm):mesh_net10.MOD   1.061  1.119  4.573 0.036920 *  
## s(length_cm):mesh_net12.5.MOD 2.469  2.886 20.071 0.000183 ***
## s(length_cm):mesh_net15.5.MOD 1.001  1.001  0.307 0.580500    
## s(length_cm):mesh_net19.5.MOD 1.000  1.001  0.157 0.692317    
## s(length_cm):mesh_net24.MOD   1.000  1.001  0.102 0.749508    
## s(length_cm):mesh_net29.MOD   1.000  1.001  0.198 0.656598    
## s(length_cm):mesh_net35.MOD   1.000  1.001  0.162 0.687932    
## s(length_cm):mesh_net43.MOD   1.001  1.002  0.383 0.536494    
## s(lake_year)                  1.772 10.000  2.691 0.157122    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.00548   Deviance explained = 58.8%
## -REML = 6015.5  Scale est. = 1         n = 4575

GAM Modelling — Benthic Zone Only

anova(m0_roach_Benthic, m1_roach_Benthic, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_mm, k = 10) + 
##     mesh_mm + net_type + s(lake_year, bs = "re")
## Model 2: catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + s(lake_year, bs = "re")
##   Resid. Df Resid. Dev     Df Deviance  Pr(>Chi)    
## 1    3042.8     7719.7                              
## 2    3027.2     7588.5 15.609   131.17 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(m1_roach_Benthic)
## 
## Family: Negative Binomial(6.837) 
## Link function: log 
## 
## Formula:
## catch_n ~ offset(log(area_m2)) + s(length_cm, by = mesh_net, 
##     k = 10) + mesh_mm + net_type + s(lake_year, bs = "re")
## 
## Parametric coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.30624    0.27084  -4.823 1.42e-06 ***
## mesh_mm8     0.07232    0.97119   0.074  0.94064    
## mesh_mm10    0.07043    0.30911   0.228  0.81977    
## mesh_mm12.5  0.05285    0.27772   0.190  0.84909    
## mesh_mm15.5 -0.10761    0.28880  -0.373  0.70943    
## mesh_mm19.5 -0.06794    0.29522  -0.230  0.81798    
## mesh_mm24   -0.05809    0.32807  -0.177  0.85945    
## mesh_mm29   -0.68375    0.67200  -1.017  0.30892    
## mesh_mm35   -1.38851    0.49934  -2.781  0.00542 ** 
## mesh_mm43   -2.15278    1.01358  -2.124  0.03367 *  
## net_typeMOD  0.12998    0.10733   1.211  0.22592    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                                    edf Ref.df Chi.sq p-value    
## s(length_cm):mesh_net6.25.CEN 1.000386  1.001  0.083  0.7738    
## s(length_cm):mesh_net8.CEN    4.875079  5.011 51.397  <2e-16 ***
## s(length_cm):mesh_net10.CEN   1.000177  1.000  0.055  0.8156    
## s(length_cm):mesh_net12.5.CEN 1.000375  1.001  0.084  0.7725    
## s(length_cm):mesh_net15.5.CEN 1.310944  1.531  0.640  0.6468    
## s(length_cm):mesh_net19.5.CEN 1.000261  1.001  0.138  0.7104    
## s(length_cm):mesh_net24.CEN   1.000235  1.000  0.042  0.8385    
## s(length_cm):mesh_net29.CEN   1.000170  1.000  1.007  0.3156    
## s(length_cm):mesh_net35.CEN   1.473426  1.766  8.581  0.0102 *  
## s(length_cm):mesh_net43.CEN   1.000256  1.001  3.472  0.0625 .  
## s(length_cm):mesh_net6.25.MOD 1.291655  1.498  4.603  0.0456 *  
## s(length_cm):mesh_net8.MOD    1.000034  1.000  0.506  0.4768    
## s(length_cm):mesh_net10.MOD   1.000544  1.001  5.009  0.0253 *  
## s(length_cm):mesh_net12.5.MOD 2.286205  2.656 10.495  0.0113 *  
## s(length_cm):mesh_net15.5.MOD 1.021073  1.038  0.099  0.7945    
## s(length_cm):mesh_net19.5.MOD 1.000489  1.001  0.248  0.6190    
## s(length_cm):mesh_net24.MOD   1.000275  1.001  0.143  0.7057    
## s(length_cm):mesh_net29.MOD   1.000262  1.001  0.061  0.8057    
## s(length_cm):mesh_net35.MOD   1.000159  1.000  0.107  0.7438    
## s(length_cm):mesh_net43.MOD   1.000180  1.000  0.005  0.9435    
## s(lake_year)                  0.001551 10.000  0.000  0.9539    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.00404   Deviance explained = 44.6%
## -REML = 3846.4  Scale est. = 1         n = 3067

Selectivity Curves — Both Zones vs Benthic Only

Both zones combined

Roach_Selectivity_Plot

### Benthic zone

Roach_Benthic_Selectivity_Plot


Both Zones vs Benthic Only: Comparison

  • Model support for a net-type effect. For both species, compare the anova(m0, m1) result in the both-zones fit against the Benthic-only fit: a net-type-dependent selectivity smooth (Model 1) that is preferred in both scopes indicates the CEN/MOD difference is not an artefact of pooling zones; if it’s only preferred in one scope, the effect is zone-dependent.
  • Precision loss in the Benthic-only fits. The Benthic-only models are fit on a subset of the both-zones data, so s(lake_year) and the mesh_net smooths have fewer effective observations — visible as wider confidence ribbons in the Benthic-only selectivity plots, particularly at mesh sizes with few Benthic catches.
  • Shape consistency. Where the both-zones and Benthic-only curves for the same mesh size/net type combination have similar shape and overlapping confidence bands, the both-zones zone fixed effect is adequately absorbing the Pelagic/Benthic difference without distorting the CEN vs MOD contrast. Divergence between the two curve sets at a given mesh size indicates the selectivity pattern itself differs by zone, which a simple additive zone term cannot capture.

Conclusions

Perch

  • Model comparison. Both zone scopes strongly favour the net-type-interaction model (Model 1) over the shared-smooth baseline (both zones: χ²(19.96) = 104.6, p = 1.8 × 10⁻¹³; Benthic only: χ²(20.15) = 96.7, p = 5.6 × 10⁻¹²) — the CEN vs MOD selectivity difference is not an artefact of pooling Pelagic and Benthic strata.
  • Overall catch-rate effect. MOD nets catch significantly more Perch than CEN in both scopes, with an almost identical effect size: both zones net_typeMOD = +0.296 (z = 2.65, p = 0.008, exp ≈ 1.34, ~34% higher); Benthic only net_typeMOD = +0.298 (z = 2.61, p = 0.009, exp ≈ 1.35, ~35% higher). This consistency indicates the CEN/MOD catch-rate contrast for Perch holds regardless of zone scope.
  • Zone matters a great deal for Perch abundance. zonePelagic = −1.569 (z = −26.7, p < 1 × 10⁻¹⁵⁰) in the both-zones model — Perch catch rate in Pelagic strata is only ~21% of the Benthic rate. Perch are overwhelmingly a Benthic-zone catch here, consistent with the Benthic subset retaining 86% of Perch net-records (9,983 / 11,551).
  • Deviance explained drops from 45.0% (both zones) to 39.3% (Benthic only) — expected, since dropping zone removes the single strongest predictor in the both-zones model; this is not evidence the Benthic-only model fits worse per se, just that it has less variance to explain.
  • Curve shape is stable across scopes. Selectivity-smooth complexity (edf) for matching mesh/net-type combinations is nearly unchanged between scopes (e.g. mesh 6.25/CEN: edf ≈ 5.07 both zones vs 5.09 Benthic only; mesh 8/MOD: edf ≈ 4.20 vs 4.19) — restricting to Benthic mainly costs precision (wider CIs from less data), not curve shape.

Roach

  • Model comparison. Both zone scopes also strongly favour the interaction model (both zones: χ²(15.57) = 139.8, p < 2.2 × 10⁻¹⁶; Benthic only: χ²(15.61) = 131.2, p < 2.2 × 10⁻¹⁶) — length-based selectivity differs by mesh × net-type regardless of zone scope.
  • Overall catch-rate effect. Unlike Perch, Roach show no significant net-type main effect in either scope (both zones: net_typeMOD = +0.087, z = 1.10, p = 0.27; Benthic only: net_typeMOD = +0.130, z = 1.21, p = 0.23). The point estimate is larger in the Benthic-only fit but still non-significant — plausibly reduced power from the smaller Benthic subset (n drops from 7,628 to 5,246 net-records, a 31% reduction) rather than a genuine zone-dependent net-type effect.
  • Zone matters even more for Roach than Perch. zonePelagic = −1.251 (z = −38.1, p ≈ 0) — Pelagic catch rate is only ~29% of the Benthic rate.
  • Deviance explained drops from 58.8% (both zones) to 44.6% (Benthic only), again largely attributable to losing the zone term and the smaller sample.

Cross-Species Comparison

  • Net-type choice (CEN vs MOD) changes overall catch rate for Perch (~+34%, significant and consistent across both zone scopes) but not for Roach (positive but non-significant in both scopes) — net type’s effect on total catch differs by species, and that difference is not explained by zone.
  • Both species show a significant, zone-scope-robust net-type × mesh-size interaction in the selectivity smooths — Model 1 (mesh_net) is preferred over the simpler shared-smooth model for both species under both zone scopes.
  • Restricting to Benthic only does not materially change either species’ conclusions about CEN vs MOD selectivity shape; its main cost is precision (wider confidence intervals, lower deviance explained) from the smaller sample and the removed zone covariate — the both-zones zone fixed effect appears to adequately absorb the Pelagic/Benthic difference without distorting the CEN vs MOD contrast.

Caveats

  • Zero-catch nets are effectively dropped from these fits. length_cm is set to NA for nets with catch_n == 0 (see GAM_size_structure_Clean.R), and mgcv::gam()’s default na.action = na.omit drops any row with an NA predictor — so the fitted n (e.g. 8,887 for m0_Perch) is well below the number of net-records in dat_perch (11,551). In practice these models compare catch counts across mesh/net-type combinations where at least one fish was caught, not full presence/absence across all deployed nets. This is a pre-existing feature of the data-prep pipeline, not something introduced by this report — but it should be kept in mind when describing the models as full negative-binomial catch-rate models.
  • The Benthic-only models drop the zone term entirely rather than testing it against a null; they are not nested within the both-zones models, so the two scopes cannot be compared by a single likelihood-ratio test — the comparison above is qualitative (coefficient stability, curve shape, CI width, significance pattern), not a formal statistical test of “does zone scope matter.”
  • Several mesh × net-type combinations have few catches, especially in the Benthic-only subset (e.g. Roach mesh 43/CEN and mesh 6.25/MOD have edf ≈ 1, i.e. an essentially linear fit with little data to support curvature); gam.check() k-index/basis-dimension diagnostics (see GAM_Selectivity_Summary_2026-07-16.txt) should be checked before treating any single curve as well-resolved.
  • Conclusions are conditional on the length–weight imputation used for missing lengths; sensitivity to imputed records was not assessed.

Session Information

sessionInfo()
## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Portuguese_Portugal.utf8  LC_CTYPE=Portuguese_Portugal.utf8   
## [3] LC_MONETARY=Portuguese_Portugal.utf8 LC_NUMERIC=C                        
## [5] LC_TIME=Portuguese_Portugal.utf8    
## 
## time zone: Europe/Berlin
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] gratia_0.11.2   mgcv_1.9-4      nlme_3.1-169    lubridate_1.9.5
##  [5] forcats_1.0.1   stringr_1.6.0   dplyr_1.2.1     purrr_1.2.2    
##  [9] readr_2.2.0     tidyr_1.3.2     tibble_3.3.1    ggplot2_4.0.3  
## [13] tidyverse_2.0.0
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.10        generics_0.1.4     stringi_1.8.7      lattice_0.22-9    
##  [5] hms_1.1.4          digest_0.6.39      magrittr_2.0.5     evaluate_1.0.5    
##  [9] grid_4.6.1         timechange_0.4.0   RColorBrewer_1.1-3 fastmap_1.2.0     
## [13] jsonlite_2.0.0     Matrix_1.7-5       ggokabeito_0.1.0   scales_1.4.0      
## [17] jquerylib_0.1.4    cli_3.6.6          rlang_1.3.0        splines_4.6.1     
## [21] withr_3.0.3        cachem_1.1.0       yaml_2.3.12        otel_0.2.0        
## [25] tools_4.6.1        tzdb_0.5.0         nanonext_1.10.1    vctrs_0.7.3       
## [29] R6_2.6.1           lifecycle_1.0.5    tweedie_3.1.0      pkgconfig_2.0.3   
## [33] pillar_1.11.1      bslib_0.11.0       gtable_0.3.6       Rcpp_1.1.2        
## [37] glue_1.8.1         statmod_1.5.2      xfun_0.60          tidyselect_1.2.1  
## [41] rstudioapi_0.19.0  knitr_1.51         farver_2.1.2       patchwork_1.3.2   
## [45] htmltools_0.5.9    mirai_2.7.1        labeling_0.4.3     rmarkdown_2.31    
## [49] compiler_4.6.1     S7_0.2.2           mvnfast_0.2.8