Factors that have an impact on the weight of a fish could be length, sex, number of days in the river etc. Moreover, info about the condition may help (e.g. kelt). A simple model with weight as function of length suggest that there is a polynomial relationship between weight and length.

Salmon

We consider salmon catch records from Skjern Ã… from 2004 to present with both weight and length numbers. A total of 5782 observations with distribution:

Note we don’t have to many observations for months where the quota is closed.

Let us first try to plot the data and make some general observations.

It is clear to see that the biggest salmon in general arrive early (>= 80 cm) and the grilse later (< 80 cm). Let us try to visualize the effect of month:

It seems that month have an effect since as months increase the proportion of salmon having stayed in the river for some time increase. That is, fish of the same length have a lower weight as months goes by:

We fit some models taking month (a factor) into account:

dat <- dat %>% mutate(MonthM2 = factor(Month, ordered = F))
mod1 <- lm(log(Weight) ~ Sex*Month*log(Length), dat)
mod2 <- lm(log(Weight) ~ Sex*MonthM2*log(Length), dat)
mod3 <- lm(log(Weight) ~ MonthM2*log(Length), dat)
mod4 <- lm(log(Weight) ~ Month*log(Length) + Sex, dat)
mod5 <- lm(log(Weight) ~ Sex*log(Length) + Month, dat)
mod6 <- lm(log(Weight) ~ log(Length) + Month, dat)
mod7 <- lm(log(Weight) ~ Month*log(Length) + Cut, dat)
mod8 <- lm(log(Weight) ~ Quarter*log(Length), dat)
mod9 <- lm(log(Weight) ~ Cut*Month*log(Length), dat)
aictab(list(mod1, mod2, mod3, mod4, mod5, mod6, mod7, mod8, mod9))

Sex don’t have a large effect here since model 3 provides the best fit.

Seatrout

We consider seatrout catch records from Skjern Ã… from 2004 to present with both weight and length numbers. A total of 3031 observations:

We try different models:

dat <- dat %>% 
  filter(Month != "Nov") %>% 
  mutate(MonthM2 = factor(Month, ordered = F)) %>% 
  mutate(MonthM4 = case_when(
    Month == "Apr" ~ "P3",
    Month == "May" ~ "P1",
    Month == "Jun" ~ "P1",
    Month == "Jul" ~ "P2",
    Month == "Aug" ~ "P3",
    Month == "Sep" ~ "P4",
    Month == "Oct" ~ "P5",
  )) %>% 
  mutate(MonthM5 = case_when(
    Month == "Apr" ~ "P2",
    Month == "May" ~ "P1",
    Month == "Jun" ~ "P1",
    Month == "Jul" ~ "P1",
    Month == "Aug" ~ "P2",
    Month == "Sep" ~ "P2",
    Month == "Oct" ~ "P3",
  )) %>% 
  mutate(MonthM6 = case_when(
    Month == "Apr" ~ "P2",
    Month == "May" ~ "P1",
    Month == "Jun" ~ "P1",
    Month == "Jul" ~ "P1",
    Month == "Aug" ~ "P2",
    Month == "Sep" ~ "P2",
    Month == "Oct" ~ "P2",
  )) 

mod1 <- lm(log(Weight) ~ Sex*MonthM2*log(Length), dat)
mod2 <- lm(log(Weight) ~ MonthM2*log(Length), dat)
aictab(list(mod1, mod2))

We fit model 2 without sex as a factor.