Fit catch curves

Fit catch curves to catch-at-age for both areas with year as random effect

# Load libraries (install first if needed)
library(tidyverse); theme_set(theme_classic(base_size = 12))
#> Warning: package 'tidyr' was built under R version 4.0.5
library(brms)
#> Warning: package 'Rcpp' was built under R version 4.0.5
library(nlstools)
library(viridis)
library(bayesplot)
library(tidylog)
library(tidybayes)
library(RColorBrewer)
#> Warning: package 'RColorBrewer' was built under R version 4.0.5
library(patchwork)
library(modelr)

# Print package versions for versions
sessionInfo() 
#> R version 4.0.2 (2020-06-22)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS  10.16
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#>  [1] modelr_0.1.8       patchwork_1.1.1    RColorBrewer_1.1-3 tidybayes_3.0.1   
#>  [5] tidylog_1.0.2      bayesplot_1.7.2    viridis_0.5.1      viridisLite_0.4.1 
#>  [9] nlstools_1.0-2     brms_2.17.0        Rcpp_1.0.8         forcats_0.5.1     
#> [13] stringr_1.4.1      dplyr_1.0.10       purrr_0.3.4        readr_2.1.1       
#> [17] tidyr_1.2.0        tibble_3.1.8       ggplot2_3.3.6      tidyverse_1.3.2   
#> 
#> loaded via a namespace (and not attached):
#>   [1] readxl_1.3.1         backports_1.3.0      plyr_1.8.6          
#>   [4] igraph_1.2.5         svUnit_1.0.6         splines_4.0.2       
#>   [7] crosstalk_1.1.0.1    TH.data_1.1-1        rstantools_2.1.1    
#>  [10] inline_0.3.15        digest_0.6.30        htmltools_0.5.3     
#>  [13] rsconnect_0.8.16     fansi_1.0.3          magrittr_2.0.3      
#>  [16] checkmate_2.0.0      googlesheets4_1.0.0  tzdb_0.2.0          
#>  [19] RcppParallel_5.1.4   matrixStats_0.61.0   xts_0.12-0          
#>  [22] sandwich_3.0-2       prettyunits_1.1.1    colorspace_2.0-3    
#>  [25] rvest_1.0.3          ggdist_3.0.0         haven_2.5.1         
#>  [28] xfun_0.33            callr_3.7.2          crayon_1.4.2        
#>  [31] jsonlite_1.8.0       lme4_1.1-26          survival_3.1-12     
#>  [34] zoo_1.8-8            glue_1.6.2           gtable_0.3.1        
#>  [37] gargle_1.2.0         emmeans_1.5.0        V8_3.2.0            
#>  [40] distributional_0.2.2 pkgbuild_1.3.1       rstan_2.21.2        
#>  [43] abind_1.4-5          scales_1.2.1         mvtnorm_1.1-3       
#>  [46] DBI_1.1.1            miniUI_0.1.1.1       xtable_1.8-4        
#>  [49] clisymbols_1.2.0     stats4_4.0.2         StanHeaders_2.21.0-7
#>  [52] DT_0.15              htmlwidgets_1.5.4    httr_1.4.4          
#>  [55] threejs_0.3.3        arrayhelpers_1.1-0   posterior_1.1.0     
#>  [58] ellipsis_0.3.2       pkgconfig_2.0.3      loo_2.3.1           
#>  [61] farver_2.1.1         sass_0.4.2           dbplyr_2.1.1        
#>  [64] utf8_1.2.2           tidyselect_1.1.2     rlang_1.0.6         
#>  [67] reshape2_1.4.4       later_1.3.0          munsell_0.5.0       
#>  [70] cellranger_1.1.0     tools_4.0.2          cachem_1.0.6        
#>  [73] cli_3.4.1            generics_0.1.2       broom_1.0.1         
#>  [76] ggridges_0.5.2       evaluate_0.16        fastmap_1.1.0       
#>  [79] yaml_2.3.5           processx_3.7.0       knitr_1.40          
#>  [82] fs_1.5.2             nlme_3.1-148         projpred_2.0.2      
#>  [85] mime_0.12            xml2_1.3.3           compiler_4.0.2      
#>  [88] shinythemes_1.1.2    rstudioapi_0.14      gamm4_0.2-6         
#>  [91] curl_4.3.2           reprex_2.0.1         statmod_1.4.36      
#>  [94] bslib_0.4.0          stringi_1.7.8        ps_1.7.1            
#>  [97] Brobdingnag_1.2-6    lattice_0.20-41      Matrix_1.3-4        
#> [100] nloptr_1.2.2.2       markdown_1.1         shinyjs_1.1         
#> [103] tensorA_0.36.2       vctrs_0.5.0          pillar_1.8.1        
#> [106] lifecycle_1.0.3      jquerylib_0.1.4      bridgesampling_1.0-0
#> [109] estimability_1.3     httpuv_1.5.5         R6_2.5.1            
#> [112] promises_1.1.1       gridExtra_2.3        codetools_0.2-16    
#> [115] boot_1.3-25          colourpicker_1.0     MASS_7.3-51.6       
#> [118] gtools_3.8.2         assertthat_0.2.1     withr_2.5.0         
#> [121] shinystan_2.5.0      multcomp_1.4-20      mgcv_1.8-31         
#> [124] parallel_4.0.2       hms_1.1.1            grid_4.0.2          
#> [127] minqa_1.2.4          coda_0.19-4          rmarkdown_2.16      
#> [130] googledrive_2.0.0    shiny_1.6.0          lubridate_1.8.0     
#> [133] base64enc_0.1-3      dygraphs_1.1.1.6

# For parallel processing
options(mc.cores = parallel::detectCores()) 

# Load cache
# qwraps2::lazyload_cache_dir(path = "R/analysis/03_catch_curves_fit_cache/html")

Read data

d <- read.csv("data/for_fitting/catch_curve_dat.csv")

Fit models

See this for notation: https://solomonkurz.netlify.app/post/2020-12-09-multilevel-models-and-the-index-variable-approach/ Fitting models of log catch ~ age with interactive or additive effects of area, using catch year as a random effect

mtest <- brm(
  log_cpue ~ 0 + age * area2 + (0 + area2|cohort),          
  family = student(), data = d, iter = 1, cores = 1, chains = 1,
  seed = 9
  )
#> Compiling Stan program...
#> Start sampling
#> 
#> SAMPLING FOR MODEL '581d770141d2df4912980d96c2328af6' NOW (CHAIN 1).
#> Chain 1: 
#> Chain 1: Gradient evaluation took 0.000118 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 1.18 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1: 
#> Chain 1: 
#> Chain 1: WARNING: No variance estimation is
#> Chain 1:          performed for num_warmup < 20
#> Chain 1: 
#> Chain 1: Iteration: 1 / 1 [100%]  (Sampling)
#> Chain 1: 
#> Chain 1:  Elapsed Time: 1e-06 seconds (Warm-up)
#> Chain 1:                0.000128 seconds (Sampling)
#> Chain 1:                0.000129 seconds (Total)
#> Chain 1:
#> Warning: There were 1 divergent transitions after warmup. See
#> http://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
#> to find out why this is a problem and how to eliminate them.
#> Warning: Examine the pairs() plot to diagnose sampling problems

prior_summary(mtest)

# No random slopes (same slopes for all years, but still area-specific)
m0 <- brm(
  log_cpue ~ 0 + age * area2 + (0 + area2|cohort),          
  family = student(), data = d, iter = 4000, cores = 3, chains = 3,
  seed = 9
  )
#> Compiling Stan program...
#> recompiling to avoid crashing R session
#> Start sampling

summary(m0)
#>  Family: student 
#>   Links: mu = identity; sigma = identity; nu = identity 
#> Formula: log_cpue ~ 0 + age * area2 + (0 + area2 | cohort) 
#>    Data: d (Number of observations: 208) 
#>   Draws: 3 chains, each with iter = 4000; warmup = 2000; thin = 1;
#>          total post-warmup draws = 6000
#> 
#> Group-Level Effects: 
#> ~cohort (Number of levels: 20) 
#>                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
#> sd(area2Cold)                0.27      0.08     0.13     0.45 1.00     2335
#> sd(area2Warm)                0.17      0.08     0.03     0.33 1.00     2827
#> cor(area2Cold,area2Warm)     0.75      0.28    -0.05     0.99 1.00     4038
#>                          Tail_ESS
#> sd(area2Cold)                3551
#> sd(area2Warm)                2120
#> cor(area2Cold,area2Warm)     3623
#> 
#> Population-Level Effects: 
#>               Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> age              -0.62      0.02    -0.67    -0.58 1.00     6391     4502
#> area2Cold         4.64      0.16     4.33     4.94 1.00     5385     4553
#> area2Warm         3.65      0.16     3.33     3.97 1.00     8043     4970
#> age:area2Warm    -0.11      0.03    -0.17    -0.04 1.00     5788     4759
#> 
#> Family Specific Parameters: 
#>       Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> sigma     0.45      0.03     0.39     0.51 1.00     5888     4429
#> nu       23.71     13.74     6.76    58.68 1.00     8544     4769
#> 
#> Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
#> and Tail_ESS are effective sample size measures, and Rhat is the potential
#> scale reduction factor on split chains (at convergence, Rhat = 1).
loo_m0 <- loo(m0)

# Area-specific slopes that also vary by year (uncorrelated random effects)
m1 <- brm(
  log_cpue ~ 0 + age * area2 + (0 + area2*age|cohort),
  family = student(), data = d, iter = 4000, cores = 3, chains = 3,
  seed = 9, control = list(adapt_delta = 0.99)
  )
#> Compiling Stan program...
#> Start sampling

summary(m1)
#>  Family: student 
#>   Links: mu = identity; sigma = identity; nu = identity 
#> Formula: log_cpue ~ 0 + age * area2 + (0 + area2 * age | cohort) 
#>    Data: d (Number of observations: 208) 
#>   Draws: 3 chains, each with iter = 4000; warmup = 2000; thin = 1;
#>          total post-warmup draws = 6000
#> 
#> Group-Level Effects: 
#> ~cohort (Number of levels: 20) 
#>                              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
#> sd(area2Cold)                    0.19      0.11     0.01     0.42 1.00      998
#> sd(area2Warm)                    0.14      0.12     0.00     0.45 1.00     1836
#> sd(age)                          0.03      0.02     0.00     0.06 1.00      841
#> sd(area2Warm:age)                0.02      0.02     0.00     0.07 1.00     2125
#> cor(area2Cold,area2Warm)         0.27      0.45    -0.69     0.91 1.00     2849
#> cor(area2Cold,age)               0.08      0.42    -0.73     0.84 1.00     3003
#> cor(area2Warm,age)              -0.02      0.45    -0.80     0.79 1.00     2373
#> cor(area2Cold,area2Warm:age)     0.12      0.45    -0.76     0.86 1.00     5851
#> cor(area2Warm,area2Warm:age)    -0.21      0.47    -0.93     0.73 1.00     3648
#> cor(age,area2Warm:age)          -0.11      0.45    -0.86     0.76 1.00     5172
#>                              Tail_ESS
#> sd(area2Cold)                    1789
#> sd(area2Warm)                    2517
#> sd(age)                          1863
#> sd(area2Warm:age)                2780
#> cor(area2Cold,area2Warm)         4097
#> cor(area2Cold,age)               3556
#> cor(area2Warm,age)               3782
#> cor(area2Cold,area2Warm:age)     4126
#> cor(area2Warm,area2Warm:age)     3906
#> cor(age,area2Warm:age)           4809
#> 
#> Population-Level Effects: 
#>               Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> age              -0.63      0.03    -0.68    -0.58 1.00     3990     3921
#> area2Cold         4.67      0.16     4.36     4.97 1.00     3920     3952
#> area2Warm         3.68      0.17     3.35     4.00 1.00     5553     4413
#> age:area2Warm    -0.11      0.04    -0.18    -0.04 1.00     4320     4173
#> 
#> Family Specific Parameters: 
#>       Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> sigma     0.45      0.03     0.39     0.51 1.00     4261     3979
#> nu       23.71     13.55     6.88    56.77 1.00     6723     4425
#> 
#> Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
#> and Tail_ESS are effective sample size measures, and Rhat is the potential
#> scale reduction factor on split chains (at convergence, Rhat = 1).
loo_m1 <- loo(m1)
# library(lme4)
# 
# m0 <- lmer(
#   log_cpue ~ 0 + age * area2 + (0 + age*area2|cohort),
#   data = d
#   )
# 
# print(m0)
# summary(m0)
# 
# equatiomatic::extract_eq(m0, intercept = "beta")

Compare models

loo_compare(loo_m0, loo_m1)
#>    elpd_diff se_diff
#> m0  0.0       0.0   
#> m1 -2.4       1.1

Produce figures

Main figures

pal <- rev(brewer.pal(n = 6, name = "Paired")[c(2, 6)])

as.data.frame(fixef(m0)) # Extract "fixed" effects from m0 for plotting the equation 

d <- d %>% mutate(area_plot = ifelse(area2 == "Warm", "Heat", "Ref"))
#> mutate: new variable 'area_plot' (character) with 2 unique values and 0% NA

pcc <- d %>%
  ungroup() %>%
  data_grid(age = seq_range(age, by = 1),
            area2 = c("Warm", "Cold")) %>%
  mutate(area_plot = ifelse(area2 == "Warm", "Heat", "Ref")) %>% 
  add_predicted_draws(m0, re_formula = NA) %>%
  ggplot(aes(factor(age), y = log_cpue, color = area_plot, fill = area_plot)) +
  stat_lineribbon(aes(y = .prediction), .width = c(.90, .50), alpha = 0.25, size = 0.5) +
  geom_jitter(data = d, aes(factor(age), y = log_cpue, fill = area_plot),
              alpha = 0.9, size = 1.3, width = 0.2, height = 0, shape = 21, color = "white") +
  stat_lineribbon(aes(y = .prediction), .width = 0, alpha = 0.8, size = 0.5) +
  scale_fill_manual(values = pal) +
  scale_color_manual(values = pal) +
  labs(color = "Area", fill = "Area", x = "Age [yrs]", y = "log(CPUE)") +
  guides(color = guide_legend(override.aes = list(linetype = 0, size = 2, shape = 16, alpha = 0.5,
                                                  color = pal, fill = NA))) +
  annotate("text", 2.1, -2.65, label = paste("n=", nrow(d), sep = ""), size = 2.5) +
  annotate("text", 2.1, -3.1, size = 2.5, color = pal[2],
           label = paste("y=4.64-0.62×age; Z=0.62", sep = ""), fontface = "italic") + # Cold
  annotate("text", 2.1, -3.65, size = 2.5, color = pal[1],
           label = paste("y=3.65-0.73×age; Z=0.73", sep = ""), fontface = "italic") + # Warm
  theme(text = element_text(size = 12), 
        legend.position = c(0.9, 0.9),
        legend.spacing.y = unit(0, 'cm'),
        legend.key.size = unit(0, "cm"),
        legend.title = element_text(size = 10),
        legend.text = element_text(size = 8))
#> ungroup: no grouping variables
#> mutate: new variable 'area_plot' (character) with 2 unique values and 0% NA

pcc


# ggsave("figures/catch_curve.png", width = 6.5, height = 6.5, dpi = 600)

# https://bookdown.org/content/3890/interactions.html
# http://mjskay.github.io/tidybayes/articles/tidy-brms.html
post_slope <- m0 %>%
  spread_draws(b_age, `b_age:area2Warm`) %>%
  mutate(b_age_cold2 = b_age*-1,
         b_age_warm2 = b_age*-1 + `b_age:area2Warm`*-1) %>%
  dplyr::select(b_age_cold2, b_age_warm2) %>% 
  pivot_longer(1:2, names_to = ".variable", values_to = ".value") %>% 
  ggplot(aes(x = .value, fill = .variable, color = .variable)) +
  stat_halfeye(alpha = 0.5, size = 5, .width = c(0.7)) +
  # guides(fill = guide_legend(override.aes = list(size = 1, shape = NA, linetype = 0)),
  #        color = "none") +
  guides(fill = "none", color = "none") +
  scale_fill_manual(values = rev(pal), labels = c("Cold", "Warm")) +
  scale_color_manual(values = rev(pal)) +
  labs(x = expression(italic(Z)), fill = "") +
  theme(legend.position = c(0.15, 0.9),
        legend.key.size = unit(0.2, "cm"),
        legend.background = element_blank())
#> mutate: new variable 'b_age_cold2' (double) with 6,000 unique values and 0% NA
#>         new variable 'b_age_warm2' (double) with 6,000 unique values and 0% NA
#> pivot_longer: reorganized (b_age_cold2, b_age_warm2) into (.variable, .value) [was 6000x2, now 12000x2]

summary(m0)
#>  Family: student 
#>   Links: mu = identity; sigma = identity; nu = identity 
#> Formula: log_cpue ~ 0 + age * area2 + (0 + area2 | cohort) 
#>    Data: d (Number of observations: 208) 
#>   Draws: 3 chains, each with iter = 4000; warmup = 2000; thin = 1;
#>          total post-warmup draws = 6000
#> 
#> Group-Level Effects: 
#> ~cohort (Number of levels: 20) 
#>                          Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
#> sd(area2Cold)                0.27      0.08     0.13     0.45 1.00     2335
#> sd(area2Warm)                0.17      0.08     0.03     0.33 1.00     2827
#> cor(area2Cold,area2Warm)     0.75      0.28    -0.05     0.99 1.00     4038
#>                          Tail_ESS
#> sd(area2Cold)                3551
#> sd(area2Warm)                2120
#> cor(area2Cold,area2Warm)     3623
#> 
#> Population-Level Effects: 
#>               Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> age              -0.62      0.02    -0.67    -0.58 1.00     6391     4502
#> area2Cold         4.64      0.16     4.33     4.94 1.00     5385     4553
#> area2Warm         3.65      0.16     3.33     3.97 1.00     8043     4970
#> age:area2Warm    -0.11      0.03    -0.17    -0.04 1.00     5788     4759
#> 
#> Family Specific Parameters: 
#>       Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
#> sigma     0.45      0.03     0.39     0.51 1.00     5888     4429
#> nu       23.71     13.74     6.76    58.68 1.00     8544     4769
#> 
#> Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
#> and Tail_ESS are effective sample size measures, and Rhat is the potential
#> scale reduction factor on split chains (at convergence, Rhat = 1).
diff <- m0 %>%
  spread_draws(b_age, `b_age:area2Warm`) %>%
  mutate(b_age_cold2 = b_age*-1,
         b_age_warm2 = b_age*-1 + `b_age:area2Warm`*-1) %>%
  mutate(diff = b_age_warm2 - b_age_cold2)
#> mutate: new variable 'b_age_cold2' (double) with 6,000 unique values and 0% NA
#>         new variable 'b_age_warm2' (double) with 6,000 unique values and 0% NA
#> mutate: new variable 'diff' (double) with 6,000 unique values and 0% NA

prop_diff <- summarise(diff, Proportion_of_the_difference_below_0 = sum(diff < 0) / length(diff))
#> summarise: now one row and one column, ungrouped
# > prop_diff
# # A tibble: 1 × 1
# Proportion_of_the_difference_below_0
# <dbl>
#   1                               0.0005

round(prop_diff, 4)

post_diff <- diff %>%
  ggplot(aes(x = diff, fill = stat(x > 0))) +
  stat_halfeye(alpha = 0.5, size = 5, .width = 0) +
  guides(fill = guide_legend(override.aes = list(size = 1, shape = NA, linetype = 0)), color = "none") + 
  scale_fill_manual(values = c("grey10", "grey70")) +
  #annotate("text", 0.14, 0.95, size = 3.5, label = paste("prop. diff<0=", round(prop_diff, 4), sep = "")) +
  labs(x = expression(~italic(Z)[heat]~-~italic(Z)[ref])) +
  theme(legend.position = c(0.2, 0.7),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10),
        legend.key.size = unit(0.2, "cm"),
        legend.background = element_blank())

pcc / (post_slope | post_diff)  + plot_annotation(tag_levels = 'A')


#ggsave("figures/catch_curve.png", width = 5.5, height = 6.5, dpi = 600)
ggsave("figures/catch_curve.pdf", width = 20, height = 20, unit = "cm")

Supporting figures

Random year effects

# # http://mjskay.github.io/tidybayes/articles/tidy-brms.html
# get_variables(m0)
# 
# # Plotting together...
# cold_slope_df <- m0 %>%
#   spread_draws(b_age, r_cohort[cohort, age]) %>% # Extract random effects and global effects
#   filter(age %in% c("age")) %>% # Filter the correct parameters. For some reason, I get all levels of r_year when I include multiple parameters, not when I do only r_year[year, age]
#   mutate(mean_slope = b_age,
#          Area = "Cold") %>%
#   mutate(slopes = mean_slope + r_cohort) 
# 
# warm_slope_df <- m0 %>%
#   spread_draws(b_age, `b_age:area2Warm`, r_cohort[cohort, age]) %>% # Extract random effects and global effects
#   filter(age %in% c("age", "area2Warm:age")) %>% # Filter the correct parameters. Because the warm slope is an offset, I need also the cold slope. For some reason, I get all levels of r_year when I include multiple parameters, not when I do only r_year[year, age]
#   mutate(mean_slope = (b_age + `b_age:area2Warm`),
#          Area = "Warm") %>% # Calculate the average warm slope (not it's a difference to the b_age, i.e. the cold slope)
#   filter(age == "area2Warm:age") %>% # Filter only draws corresponding to the random effect that is the warm slope (not the cold slope)
#   mutate(slopes = mean_slope + r_cohort)
# 
# full_df <- bind_rows(cold_slope_df, warm_slope_df)
# 
# p_random <- full_df %>% 
#   mutate(Z = slopes*-1) %>% # Convert from slopes to Z
#   ggplot(., aes(y = factor(cohort), x = Z, fill = factor(Area), color = factor(Area))) +
#   geom_vline(xintercept = c(0.63, 0.75), color = rev(pal), linetype = 2, alpha = 0.4, size = 0.5) +
#   stat_slab(alpha = 0.13, position = position_nudge(y = 0.05), color = NA) + 
#   stat_pointinterval(.width = c(.95), position = position_dodge(width = 0.25),
#                      size = 0.1, alpha = 0.8) +
#   scale_fill_manual(values = rev(pal)) +
#   scale_color_manual(values = rev(pal)) +
#   labs(y = "Cohort", x = expression(italic(Z))) + 
#   guides(fill = F, color = F) +
#   coord_cartesian(xlim = c(0.46, 0.88)) +
#   theme(text = element_text(size = 12))
# 
# ggsave("figures/supp/catch_curves_random_slopes.pdf", width = 20, height = 20, unit = "cm")  

Model diagnostics & fit

pal_diag <- rev(brewer.pal(n = 3, name = "Dark2"))

# Chain convergence
posterior <- as.array(m0)
dimnames(posterior)
#> $iteration
#>    [1] "1"    "2"    "3"    "4"    "5"    "6"    "7"    "8"    "9"    "10"  
#>   [11] "11"   "12"   "13"   "14"   "15"   "16"   "17"   "18"   "19"   "20"  
#>   [21] "21"   "22"   "23"   "24"   "25"   "26"   "27"   "28"   "29"   "30"  
#>   [31] "31"   "32"   "33"   "34"   "35"   "36"   "37"   "38"   "39"   "40"  
#>   [41] "41"   "42"   "43"   "44"   "45"   "46"   "47"   "48"   "49"   "50"  
#>   [51] "51"   "52"   "53"   "54"   "55"   "56"   "57"   "58"   "59"   "60"  
#>   [61] "61"   "62"   "63"   "64"   "65"   "66"   "67"   "68"   "69"   "70"  
#>   [71] "71"   "72"   "73"   "74"   "75"   "76"   "77"   "78"   "79"   "80"  
#>   [81] "81"   "82"   "83"   "84"   "85"   "86"   "87"   "88"   "89"   "90"  
#>   [91] "91"   "92"   "93"   "94"   "95"   "96"   "97"   "98"   "99"   "100" 
#>  [101] "101"  "102"  "103"  "104"  "105"  "106"  "107"  "108"  "109"  "110" 
#>  [111] "111"  "112"  "113"  "114"  "115"  "116"  "117"  "118"  "119"  "120" 
#>  [121] "121"  "122"  "123"  "124"  "125"  "126"  "127"  "128"  "129"  "130" 
#>  [131] "131"  "132"  "133"  "134"  "135"  "136"  "137"  "138"  "139"  "140" 
#>  [141] "141"  "142"  "143"  "144"  "145"  "146"  "147"  "148"  "149"  "150" 
#>  [151] "151"  "152"  "153"  "154"  "155"  "156"  "157"  "158"  "159"  "160" 
#>  [161] "161"  "162"  "163"  "164"  "165"  "166"  "167"  "168"  "169"  "170" 
#>  [171] "171"  "172"  "173"  "174"  "175"  "176"  "177"  "178"  "179"  "180" 
#>  [181] "181"  "182"  "183"  "184"  "185"  "186"  "187"  "188"  "189"  "190" 
#>  [191] "191"  "192"  "193"  "194"  "195"  "196"  "197"  "198"  "199"  "200" 
#>  [201] "201"  "202"  "203"  "204"  "205"  "206"  "207"  "208"  "209"  "210" 
#>  [211] "211"  "212"  "213"  "214"  "215"  "216"  "217"  "218"  "219"  "220" 
#>  [221] "221"  "222"  "223"  "224"  "225"  "226"  "227"  "228"  "229"  "230" 
#>  [231] "231"  "232"  "233"  "234"  "235"  "236"  "237"  "238"  "239"  "240" 
#>  [241] "241"  "242"  "243"  "244"  "245"  "246"  "247"  "248"  "249"  "250" 
#>  [251] "251"  "252"  "253"  "254"  "255"  "256"  "257"  "258"  "259"  "260" 
#>  [261] "261"  "262"  "263"  "264"  "265"  "266"  "267"  "268"  "269"  "270" 
#>  [271] "271"  "272"  "273"  "274"  "275"  "276"  "277"  "278"  "279"  "280" 
#>  [281] "281"  "282"  "283"  "284"  "285"  "286"  "287"  "288"  "289"  "290" 
#>  [291] "291"  "292"  "293"  "294"  "295"  "296"  "297"  "298"  "299"  "300" 
#>  [301] "301"  "302"  "303"  "304"  "305"  "306"  "307"  "308"  "309"  "310" 
#>  [311] "311"  "312"  "313"  "314"  "315"  "316"  "317"  "318"  "319"  "320" 
#>  [321] "321"  "322"  "323"  "324"  "325"  "326"  "327"  "328"  "329"  "330" 
#>  [331] "331"  "332"  "333"  "334"  "335"  "336"  "337"  "338"  "339"  "340" 
#>  [341] "341"  "342"  "343"  "344"  "345"  "346"  "347"  "348"  "349"  "350" 
#>  [351] "351"  "352"  "353"  "354"  "355"  "356"  "357"  "358"  "359"  "360" 
#>  [361] "361"  "362"  "363"  "364"  "365"  "366"  "367"  "368"  "369"  "370" 
#>  [371] "371"  "372"  "373"  "374"  "375"  "376"  "377"  "378"  "379"  "380" 
#>  [381] "381"  "382"  "383"  "384"  "385"  "386"  "387"  "388"  "389"  "390" 
#>  [391] "391"  "392"  "393"  "394"  "395"  "396"  "397"  "398"  "399"  "400" 
#>  [401] "401"  "402"  "403"  "404"  "405"  "406"  "407"  "408"  "409"  "410" 
#>  [411] "411"  "412"  "413"  "414"  "415"  "416"  "417"  "418"  "419"  "420" 
#>  [421] "421"  "422"  "423"  "424"  "425"  "426"  "427"  "428"  "429"  "430" 
#>  [431] "431"  "432"  "433"  "434"  "435"  "436"  "437"  "438"  "439"  "440" 
#>  [441] "441"  "442"  "443"  "444"  "445"  "446"  "447"  "448"  "449"  "450" 
#>  [451] "451"  "452"  "453"  "454"  "455"  "456"  "457"  "458"  "459"  "460" 
#>  [461] "461"  "462"  "463"  "464"  "465"  "466"  "467"  "468"  "469"  "470" 
#>  [471] "471"  "472"  "473"  "474"  "475"  "476"  "477"  "478"  "479"  "480" 
#>  [481] "481"  "482"  "483"  "484"  "485"  "486"  "487"  "488"  "489"  "490" 
#>  [491] "491"  "492"  "493"  "494"  "495"  "496"  "497"  "498"  "499"  "500" 
#>  [501] "501"  "502"  "503"  "504"  "505"  "506"  "507"  "508"  "509"  "510" 
#>  [511] "511"  "512"  "513"  "514"  "515"  "516"  "517"  "518"  "519"  "520" 
#>  [521] "521"  "522"  "523"  "524"  "525"  "526"  "527"  "528"  "529"  "530" 
#>  [531] "531"  "532"  "533"  "534"  "535"  "536"  "537"  "538"  "539"  "540" 
#>  [541] "541"  "542"  "543"  "544"  "545"  "546"  "547"  "548"  "549"  "550" 
#>  [551] "551"  "552"  "553"  "554"  "555"  "556"  "557"  "558"  "559"  "560" 
#>  [561] "561"  "562"  "563"  "564"  "565"  "566"  "567"  "568"  "569"  "570" 
#>  [571] "571"  "572"  "573"  "574"  "575"  "576"  "577"  "578"  "579"  "580" 
#>  [581] "581"  "582"  "583"  "584"  "585"  "586"  "587"  "588"  "589"  "590" 
#>  [591] "591"  "592"  "593"  "594"  "595"  "596"  "597"  "598"  "599"  "600" 
#>  [601] "601"  "602"  "603"  "604"  "605"  "606"  "607"  "608"  "609"  "610" 
#>  [611] "611"  "612"  "613"  "614"  "615"  "616"  "617"  "618"  "619"  "620" 
#>  [621] "621"  "622"  "623"  "624"  "625"  "626"  "627"  "628"  "629"  "630" 
#>  [631] "631"  "632"  "633"  "634"  "635"  "636"  "637"  "638"  "639"  "640" 
#>  [641] "641"  "642"  "643"  "644"  "645"  "646"  "647"  "648"  "649"  "650" 
#>  [651] "651"  "652"  "653"  "654"  "655"  "656"  "657"  "658"  "659"  "660" 
#>  [661] "661"  "662"  "663"  "664"  "665"  "666"  "667"  "668"  "669"  "670" 
#>  [671] "671"  "672"  "673"  "674"  "675"  "676"  "677"  "678"  "679"  "680" 
#>  [681] "681"  "682"  "683"  "684"  "685"  "686"  "687"  "688"  "689"  "690" 
#>  [691] "691"  "692"  "693"  "694"  "695"  "696"  "697"  "698"  "699"  "700" 
#>  [701] "701"  "702"  "703"  "704"  "705"  "706"  "707"  "708"  "709"  "710" 
#>  [711] "711"  "712"  "713"  "714"  "715"  "716"  "717"  "718"  "719"  "720" 
#>  [721] "721"  "722"  "723"  "724"  "725"  "726"  "727"  "728"  "729"  "730" 
#>  [731] "731"  "732"  "733"  "734"  "735"  "736"  "737"  "738"  "739"  "740" 
#>  [741] "741"  "742"  "743"  "744"  "745"  "746"  "747"  "748"  "749"  "750" 
#>  [751] "751"  "752"  "753"  "754"  "755"  "756"  "757"  "758"  "759"  "760" 
#>  [761] "761"  "762"  "763"  "764"  "765"  "766"  "767"  "768"  "769"  "770" 
#>  [771] "771"  "772"  "773"  "774"  "775"  "776"  "777"  "778"  "779"  "780" 
#>  [781] "781"  "782"  "783"  "784"  "785"  "786"  "787"  "788"  "789"  "790" 
#>  [791] "791"  "792"  "793"  "794"  "795"  "796"  "797"  "798"  "799"  "800" 
#>  [801] "801"  "802"  "803"  "804"  "805"  "806"  "807"  "808"  "809"  "810" 
#>  [811] "811"  "812"  "813"  "814"  "815"  "816"  "817"  "818"  "819"  "820" 
#>  [821] "821"  "822"  "823"  "824"  "825"  "826"  "827"  "828"  "829"  "830" 
#>  [831] "831"  "832"  "833"  "834"  "835"  "836"  "837"  "838"  "839"  "840" 
#>  [841] "841"  "842"  "843"  "844"  "845"  "846"  "847"  "848"  "849"  "850" 
#>  [851] "851"  "852"  "853"  "854"  "855"  "856"  "857"  "858"  "859"  "860" 
#>  [861] "861"  "862"  "863"  "864"  "865"  "866"  "867"  "868"  "869"  "870" 
#>  [871] "871"  "872"  "873"  "874"  "875"  "876"  "877"  "878"  "879"  "880" 
#>  [881] "881"  "882"  "883"  "884"  "885"  "886"  "887"  "888"  "889"  "890" 
#>  [891] "891"  "892"  "893"  "894"  "895"  "896"  "897"  "898"  "899"  "900" 
#>  [901] "901"  "902"  "903"  "904"  "905"  "906"  "907"  "908"  "909"  "910" 
#>  [911] "911"  "912"  "913"  "914"  "915"  "916"  "917"  "918"  "919"  "920" 
#>  [921] "921"  "922"  "923"  "924"  "925"  "926"  "927"  "928"  "929"  "930" 
#>  [931] "931"  "932"  "933"  "934"  "935"  "936"  "937"  "938"  "939"  "940" 
#>  [941] "941"  "942"  "943"  "944"  "945"  "946"  "947"  "948"  "949"  "950" 
#>  [951] "951"  "952"  "953"  "954"  "955"  "956"  "957"  "958"  "959"  "960" 
#>  [961] "961"  "962"  "963"  "964"  "965"  "966"  "967"  "968"  "969"  "970" 
#>  [971] "971"  "972"  "973"  "974"  "975"  "976"  "977"  "978"  "979"  "980" 
#>  [981] "981"  "982"  "983"  "984"  "985"  "986"  "987"  "988"  "989"  "990" 
#>  [991] "991"  "992"  "993"  "994"  "995"  "996"  "997"  "998"  "999"  "1000"
#> [1001] "1001" "1002" "1003" "1004" "1005" "1006" "1007" "1008" "1009" "1010"
#> [1011] "1011" "1012" "1013" "1014" "1015" "1016" "1017" "1018" "1019" "1020"
#> [1021] "1021" "1022" "1023" "1024" "1025" "1026" "1027" "1028" "1029" "1030"
#> [1031] "1031" "1032" "1033" "1034" "1035" "1036" "1037" "1038" "1039" "1040"
#> [1041] "1041" "1042" "1043" "1044" "1045" "1046" "1047" "1048" "1049" "1050"
#> [1051] "1051" "1052" "1053" "1054" "1055" "1056" "1057" "1058" "1059" "1060"
#> [1061] "1061" "1062" "1063" "1064" "1065" "1066" "1067" "1068" "1069" "1070"
#> [1071] "1071" "1072" "1073" "1074" "1075" "1076" "1077" "1078" "1079" "1080"
#> [1081] "1081" "1082" "1083" "1084" "1085" "1086" "1087" "1088" "1089" "1090"
#> [1091] "1091" "1092" "1093" "1094" "1095" "1096" "1097" "1098" "1099" "1100"
#> [1101] "1101" "1102" "1103" "1104" "1105" "1106" "1107" "1108" "1109" "1110"
#> [1111] "1111" "1112" "1113" "1114" "1115" "1116" "1117" "1118" "1119" "1120"
#> [1121] "1121" "1122" "1123" "1124" "1125" "1126" "1127" "1128" "1129" "1130"
#> [1131] "1131" "1132" "1133" "1134" "1135" "1136" "1137" "1138" "1139" "1140"
#> [1141] "1141" "1142" "1143" "1144" "1145" "1146" "1147" "1148" "1149" "1150"
#> [1151] "1151" "1152" "1153" "1154" "1155" "1156" "1157" "1158" "1159" "1160"
#> [1161] "1161" "1162" "1163" "1164" "1165" "1166" "1167" "1168" "1169" "1170"
#> [1171] "1171" "1172" "1173" "1174" "1175" "1176" "1177" "1178" "1179" "1180"
#> [1181] "1181" "1182" "1183" "1184" "1185" "1186" "1187" "1188" "1189" "1190"
#> [1191] "1191" "1192" "1193" "1194" "1195" "1196" "1197" "1198" "1199" "1200"
#> [1201] "1201" "1202" "1203" "1204" "1205" "1206" "1207" "1208" "1209" "1210"
#> [1211] "1211" "1212" "1213" "1214" "1215" "1216" "1217" "1218" "1219" "1220"
#> [1221] "1221" "1222" "1223" "1224" "1225" "1226" "1227" "1228" "1229" "1230"
#> [1231] "1231" "1232" "1233" "1234" "1235" "1236" "1237" "1238" "1239" "1240"
#> [1241] "1241" "1242" "1243" "1244" "1245" "1246" "1247" "1248" "1249" "1250"
#> [1251] "1251" "1252" "1253" "1254" "1255" "1256" "1257" "1258" "1259" "1260"
#> [1261] "1261" "1262" "1263" "1264" "1265" "1266" "1267" "1268" "1269" "1270"
#> [1271] "1271" "1272" "1273" "1274" "1275" "1276" "1277" "1278" "1279" "1280"
#> [1281] "1281" "1282" "1283" "1284" "1285" "1286" "1287" "1288" "1289" "1290"
#> [1291] "1291" "1292" "1293" "1294" "1295" "1296" "1297" "1298" "1299" "1300"
#> [1301] "1301" "1302" "1303" "1304" "1305" "1306" "1307" "1308" "1309" "1310"
#> [1311] "1311" "1312" "1313" "1314" "1315" "1316" "1317" "1318" "1319" "1320"
#> [1321] "1321" "1322" "1323" "1324" "1325" "1326" "1327" "1328" "1329" "1330"
#> [1331] "1331" "1332" "1333" "1334" "1335" "1336" "1337" "1338" "1339" "1340"
#> [1341] "1341" "1342" "1343" "1344" "1345" "1346" "1347" "1348" "1349" "1350"
#> [1351] "1351" "1352" "1353" "1354" "1355" "1356" "1357" "1358" "1359" "1360"
#> [1361] "1361" "1362" "1363" "1364" "1365" "1366" "1367" "1368" "1369" "1370"
#> [1371] "1371" "1372" "1373" "1374" "1375" "1376" "1377" "1378" "1379" "1380"
#> [1381] "1381" "1382" "1383" "1384" "1385" "1386" "1387" "1388" "1389" "1390"
#> [1391] "1391" "1392" "1393" "1394" "1395" "1396" "1397" "1398" "1399" "1400"
#> [1401] "1401" "1402" "1403" "1404" "1405" "1406" "1407" "1408" "1409" "1410"
#> [1411] "1411" "1412" "1413" "1414" "1415" "1416" "1417" "1418" "1419" "1420"
#> [1421] "1421" "1422" "1423" "1424" "1425" "1426" "1427" "1428" "1429" "1430"
#> [1431] "1431" "1432" "1433" "1434" "1435" "1436" "1437" "1438" "1439" "1440"
#> [1441] "1441" "1442" "1443" "1444" "1445" "1446" "1447" "1448" "1449" "1450"
#> [1451] "1451" "1452" "1453" "1454" "1455" "1456" "1457" "1458" "1459" "1460"
#> [1461] "1461" "1462" "1463" "1464" "1465" "1466" "1467" "1468" "1469" "1470"
#> [1471] "1471" "1472" "1473" "1474" "1475" "1476" "1477" "1478" "1479" "1480"
#> [1481] "1481" "1482" "1483" "1484" "1485" "1486" "1487" "1488" "1489" "1490"
#> [1491] "1491" "1492" "1493" "1494" "1495" "1496" "1497" "1498" "1499" "1500"
#> [1501] "1501" "1502" "1503" "1504" "1505" "1506" "1507" "1508" "1509" "1510"
#> [1511] "1511" "1512" "1513" "1514" "1515" "1516" "1517" "1518" "1519" "1520"
#> [1521] "1521" "1522" "1523" "1524" "1525" "1526" "1527" "1528" "1529" "1530"
#> [1531] "1531" "1532" "1533" "1534" "1535" "1536" "1537" "1538" "1539" "1540"
#> [1541] "1541" "1542" "1543" "1544" "1545" "1546" "1547" "1548" "1549" "1550"
#> [1551] "1551" "1552" "1553" "1554" "1555" "1556" "1557" "1558" "1559" "1560"
#> [1561] "1561" "1562" "1563" "1564" "1565" "1566" "1567" "1568" "1569" "1570"
#> [1571] "1571" "1572" "1573" "1574" "1575" "1576" "1577" "1578" "1579" "1580"
#> [1581] "1581" "1582" "1583" "1584" "1585" "1586" "1587" "1588" "1589" "1590"
#> [1591] "1591" "1592" "1593" "1594" "1595" "1596" "1597" "1598" "1599" "1600"
#> [1601] "1601" "1602" "1603" "1604" "1605" "1606" "1607" "1608" "1609" "1610"
#> [1611] "1611" "1612" "1613" "1614" "1615" "1616" "1617" "1618" "1619" "1620"
#> [1621] "1621" "1622" "1623" "1624" "1625" "1626" "1627" "1628" "1629" "1630"
#> [1631] "1631" "1632" "1633" "1634" "1635" "1636" "1637" "1638" "1639" "1640"
#> [1641] "1641" "1642" "1643" "1644" "1645" "1646" "1647" "1648" "1649" "1650"
#> [1651] "1651" "1652" "1653" "1654" "1655" "1656" "1657" "1658" "1659" "1660"
#> [1661] "1661" "1662" "1663" "1664" "1665" "1666" "1667" "1668" "1669" "1670"
#> [1671] "1671" "1672" "1673" "1674" "1675" "1676" "1677" "1678" "1679" "1680"
#> [1681] "1681" "1682" "1683" "1684" "1685" "1686" "1687" "1688" "1689" "1690"
#> [1691] "1691" "1692" "1693" "1694" "1695" "1696" "1697" "1698" "1699" "1700"
#> [1701] "1701" "1702" "1703" "1704" "1705" "1706" "1707" "1708" "1709" "1710"
#> [1711] "1711" "1712" "1713" "1714" "1715" "1716" "1717" "1718" "1719" "1720"
#> [1721] "1721" "1722" "1723" "1724" "1725" "1726" "1727" "1728" "1729" "1730"
#> [1731] "1731" "1732" "1733" "1734" "1735" "1736" "1737" "1738" "1739" "1740"
#> [1741] "1741" "1742" "1743" "1744" "1745" "1746" "1747" "1748" "1749" "1750"
#> [1751] "1751" "1752" "1753" "1754" "1755" "1756" "1757" "1758" "1759" "1760"
#> [1761] "1761" "1762" "1763" "1764" "1765" "1766" "1767" "1768" "1769" "1770"
#> [1771] "1771" "1772" "1773" "1774" "1775" "1776" "1777" "1778" "1779" "1780"
#> [1781] "1781" "1782" "1783" "1784" "1785" "1786" "1787" "1788" "1789" "1790"
#> [1791] "1791" "1792" "1793" "1794" "1795" "1796" "1797" "1798" "1799" "1800"
#> [1801] "1801" "1802" "1803" "1804" "1805" "1806" "1807" "1808" "1809" "1810"
#> [1811] "1811" "1812" "1813" "1814" "1815" "1816" "1817" "1818" "1819" "1820"
#> [1821] "1821" "1822" "1823" "1824" "1825" "1826" "1827" "1828" "1829" "1830"
#> [1831] "1831" "1832" "1833" "1834" "1835" "1836" "1837" "1838" "1839" "1840"
#> [1841] "1841" "1842" "1843" "1844" "1845" "1846" "1847" "1848" "1849" "1850"
#> [1851] "1851" "1852" "1853" "1854" "1855" "1856" "1857" "1858" "1859" "1860"
#> [1861] "1861" "1862" "1863" "1864" "1865" "1866" "1867" "1868" "1869" "1870"
#> [1871] "1871" "1872" "1873" "1874" "1875" "1876" "1877" "1878" "1879" "1880"
#> [1881] "1881" "1882" "1883" "1884" "1885" "1886" "1887" "1888" "1889" "1890"
#> [1891] "1891" "1892" "1893" "1894" "1895" "1896" "1897" "1898" "1899" "1900"
#> [1901] "1901" "1902" "1903" "1904" "1905" "1906" "1907" "1908" "1909" "1910"
#> [1911] "1911" "1912" "1913" "1914" "1915" "1916" "1917" "1918" "1919" "1920"
#> [1921] "1921" "1922" "1923" "1924" "1925" "1926" "1927" "1928" "1929" "1930"
#> [1931] "1931" "1932" "1933" "1934" "1935" "1936" "1937" "1938" "1939" "1940"
#> [1941] "1941" "1942" "1943" "1944" "1945" "1946" "1947" "1948" "1949" "1950"
#> [1951] "1951" "1952" "1953" "1954" "1955" "1956" "1957" "1958" "1959" "1960"
#> [1961] "1961" "1962" "1963" "1964" "1965" "1966" "1967" "1968" "1969" "1970"
#> [1971] "1971" "1972" "1973" "1974" "1975" "1976" "1977" "1978" "1979" "1980"
#> [1981] "1981" "1982" "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990"
#> [1991] "1991" "1992" "1993" "1994" "1995" "1996" "1997" "1998" "1999" "2000"
#> 
#> $chain
#> [1] "1" "2" "3"
#> 
#> $variable
#>  [1] "b_age"                            "b_area2Cold"                     
#>  [3] "b_area2Warm"                      "b_age:area2Warm"                 
#>  [5] "sd_cohort__area2Cold"             "sd_cohort__area2Warm"            
#>  [7] "cor_cohort__area2Cold__area2Warm" "sigma"                           
#>  [9] "nu"                               "r_cohort[1981,area2Cold]"        
#> [11] "r_cohort[1982,area2Cold]"         "r_cohort[1983,area2Cold]"        
#> [13] "r_cohort[1984,area2Cold]"         "r_cohort[1985,area2Cold]"        
#> [15] "r_cohort[1986,area2Cold]"         "r_cohort[1987,area2Cold]"        
#> [17] "r_cohort[1988,area2Cold]"         "r_cohort[1989,area2Cold]"        
#> [19] "r_cohort[1990,area2Cold]"         "r_cohort[1991,area2Cold]"        
#> [21] "r_cohort[1992,area2Cold]"         "r_cohort[1993,area2Cold]"        
#> [23] "r_cohort[1994,area2Cold]"         "r_cohort[1995,area2Cold]"        
#> [25] "r_cohort[1996,area2Cold]"         "r_cohort[1997,area2Cold]"        
#> [27] "r_cohort[1998,area2Cold]"         "r_cohort[1999,area2Cold]"        
#> [29] "r_cohort[2000,area2Cold]"         "r_cohort[1981,area2Warm]"        
#> [31] "r_cohort[1982,area2Warm]"         "r_cohort[1983,area2Warm]"        
#> [33] "r_cohort[1984,area2Warm]"         "r_cohort[1985,area2Warm]"        
#> [35] "r_cohort[1986,area2Warm]"         "r_cohort[1987,area2Warm]"        
#> [37] "r_cohort[1988,area2Warm]"         "r_cohort[1989,area2Warm]"        
#> [39] "r_cohort[1990,area2Warm]"         "r_cohort[1991,area2Warm]"        
#> [41] "r_cohort[1992,area2Warm]"         "r_cohort[1993,area2Warm]"        
#> [43] "r_cohort[1994,area2Warm]"         "r_cohort[1995,area2Warm]"        
#> [45] "r_cohort[1996,area2Warm]"         "r_cohort[1997,area2Warm]"        
#> [47] "r_cohort[1998,area2Warm]"         "r_cohort[1999,area2Warm]"        
#> [49] "r_cohort[2000,area2Warm]"         "lprior"                          
#> [51] "lp__"

d1 <- mcmc_trace(posterior,
                 pars = c("b_age", "b_area2Cold", "b_area2Warm", "b_age:area2Warm",
                          "sd_cohort__area2Cold", "sd_cohort__area2Warm",
                          "sigma", "nu"),
                 facet_args = list(ncol = 3, strip.position = "left")) + 
  theme(text = element_text(size = 12),
        strip.text = element_text(size = 6),
        legend.position = "top") + 
  scale_color_manual(values = alpha(pal_diag, alpha = 0.8))
#> Scale for 'colour' is already present. Adding another scale for 'colour',
#> which will replace the existing scale.

# Resid vs fitted
d2 <- d %>%
  add_residual_draws(m0) %>%
  ggplot(aes(x = .row, y = .residual)) +
  stat_pointinterval(alpha = 0.5, size = 0.7) + 
  theme(text = element_text(size = 12))

# qq-plot
# d3 <- d %>%
#   add_residual_draws(m0) %>%
#   median_qi() %>%
#   ggplot(aes(sample = .residual)) +
#   geom_qq_line() +
#   geom_qq(alpha = 0.8) +
#   theme(text = element_text(size = 12))

summary(m0)$spec_pars
nu <- summary(m0)$spec_pars[2, 1]
nu
#> [1] 23.70847

d3 <- d %>%
  add_residual_draws(m0) %>%
  median_qi() %>%
  ggplot(aes(sample = .residual)) +
  geom_qq_line(distribution = qt, dparams = nu) +
  geom_qq(alpha = 0.8, distribution = qt, dparams = nu) +
  theme(text = element_text(size = 12))

# Posterior predictive
d4 <- pp_check(m0) + 
  theme(text = element_text(size = 12),
        legend.position = c(0.15, 0.95),
        legend.background = element_rect(fill = NA)) + 
  scale_color_manual(values = rev(pal_diag)) +
  labs(color = "", x = "log(CPUE)")
#> Using 10 posterior draws for ppc type 'dens_overlay' by default.
#> Scale for 'colour' is already present. Adding another scale for 'colour',
#> which will replace the existing scale.

d1 / (d2 / (d3 + d4)) + 
  plot_annotation(tag_levels = 'A')


ggsave("figures/supp/catch_curve_diag_fit.pdf", width = 20, height = 20, unit = "cm")