Species
# species <- params$species # # Species run so far... # species <- "Arrowtooth Flounder" # species <- "Pacific Cod" # species <- "Sablefish" # species <- "Silvergray Rockfish" # species <- "Lingcod" # species <- "North Pacific Spiny Dogfish" # note: using all data for maturity thresholds # species <- "Quillback Rockfish" # species <- "Pacific Ocean Perch" # species <- "Yelloweye Rockfish"
Choose model details
# covariates <- "+muddy+mixed+rocky" # covariates <- "+mixed+rocky" covariates <- "+muddy+any_rock" # covariates <- "+trawled+muddy+rocky+mixed" # covariates <- "+trawled+mixed+rocky" # covariates <- "+trawled+mixed"
Run all subsequent code...
covs <- gsub("\\+", "-", covariates) spp <- gsub(" ", "-", gsub("\\/", "-", tolower(species))) # folder to hold figs for this species dir.create(file.path("figs", spp)) dir.create(file.path("data", spp)) knitr::opts_chunk$set( fig.width = 11, fig.height = 8.5, fig.path = paste0("figs/", spp, "/"), echo = FALSE, warning = FALSE, message = FALSE )
library(dplyr) library(ggplot2) library(gfplot) library(gfdata) library(sdmTMB) library(gfranges)
Load Dissolved O2 models
rm( adult_survey1, imm_survey1, adult_survey4, imm_survey4, adult_survey16, imm_survey16 ) priors <- TRUE # covariates <- "" try({ survey <- c("SYN QCS", "SYN HS", "SYN WCVI", "SYN WCHG") model_ssid <- c(1, 3, 4, 16) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey_all <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey_all <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey_all")) adult_survey_all <- NULL if (!exists("imm_survey_all")) imm_survey_all <- NULL try({ survey <- c("SYN QCS", "SYN HS") model_ssid <- c(1, 3) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey1 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey1 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey1")) adult_survey1 <- NULL if (!exists("imm_survey1")) imm_survey1 <- NULL try({ survey <- c("SYN WCVI") model_ssid <- c(4) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey4 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey4 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey4")) adult_survey4 <- NULL if (!exists("imm_survey4")) imm_survey4 <- NULL try({ survey <- c("SYN WCHG") model_ssid <- c(16) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey16 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey16 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-do", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey16")) adult_survey16 <- NULL if (!exists("imm_survey16")) imm_survey16 <- NULL model_list <- list( adult_survey_all = adult_survey_all, imm_survey_all = imm_survey_all, adult_survey1 = adult_survey1, imm_survey1 = imm_survey1, adult_survey4 = adult_survey4, imm_survey4 = imm_survey4, adult_survey16 = adult_survey16, imm_survey16 = imm_survey16 ) model_list <- model_list[!sapply(model_list, is.null)]
Load temperature models
rm( adult_survey1, imm_survey1, adult_survey4, imm_survey4, adult_survey16, imm_survey16 ) priors <- TRUE try({ survey <- c("SYN QCS", "SYN HS") model_ssid <- c(1, 3) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey1 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey1 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey1")) adult_survey1 <- NULL if (!exists("imm_survey1")) imm_survey1 <- NULL try({ survey <- c("SYN WCVI") model_ssid <- c(4) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey4 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey4 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey4")) adult_survey4 <- NULL if (!exists("imm_survey4")) imm_survey4 <- NULL try({ survey <- c("SYN WCHG") model_ssid <- c(16) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey16 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey16 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, "-temp", covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey16")) adult_survey16 <- NULL if (!exists("imm_survey16")) imm_survey16 <- NULL temp_model_list <- list( adult_survey1 = adult_survey1, imm_survey1 = imm_survey1, adult_survey4 = adult_survey4, imm_survey4 = imm_survey4, adult_survey16 = adult_survey16, imm_survey16 = imm_survey16 ) temp_model_list <- temp_model_list[!sapply(temp_model_list, is.null)]
Save optimal values
td <- list() for (i in seq_len(length(temp_model_list))) { td[[i]] <- time_varying_density(temp_model_list[[i]], predictor = "temp") #browser() if (length(td[[i]])>0) td[[i]]$model <- names(temp_model_list[i]) } tdat <- do.call("rbind", td) tdat <- tdat %>% group_by(model) %>% mutate(maxy = max(y_hat)) %>% ungroup() %>% mutate(meanymax = mean(maxy), sdymax = sd(maxy)) %>% filter(maxy < (meanymax + 2 * sdymax)) hist(tdat$maxy) optimal_temp <- get_optimal_value(tdat, xlimits = c(3, 8)) do <- list() for (i in seq_len(length(model_list))) { do[[i]] <- time_varying_density(model_list[[i]], predictor = "do_mlpl") if (length(do[[i]])>0) do[[i]]$model <- names(model_list[i]) } odat <- do.call("rbind", do) odat <- odat %>% group_by(model) %>% mutate(maxy = max(y_hat)) %>% ungroup() %>% mutate(meanymax = mean(maxy), sdymax = sd(maxy)) %>% filter(maxy < (meanymax + 2 * sdymax)) hist(odat$maxy) optimal_do <- get_optimal_value(odat, xlimits = c(0.5, 6)) date <- Sys.Date() params <- data.frame(species, optimal_do, optimal_temp, date) other_params <- readRDS(paste0("data/optimal-values-by-species.rds")) params <- rbind(other_params, params) saveRDS(params, file = "data/optimal-values-by-species.rds") params
Build DO plots
d <- list() do_plots <- list() for (i in seq_len(length(model_list))) { d[[i]] <- time_varying_density(model_list[[i]], predictor = "do_mlpl") if (length(d[[i]]) == 0) { do_plots[[i]] <- grid::grid.rect(gp = grid::gpar(col = "white")) } else { do_plots[[i]] <- plot_mountains(d[[i]], variable_label = "Dissolved O2", xlimits = c(0, 8)) + ggtitle(paste(species, names(model_list[i]))) } } print(do_plots)
png( file = paste0("figs/", spp, "/do-", spp, covs, "-priors-TRUE.png"), res = 600, units = "in", width = 8.5, height = 11 ) gridExtra::grid.arrange( grobs = do_plots, ncol = 2, top = grid::textGrob(paste(species)) ) dev.off()
Build Temperature plots
d <- list() temp_plots <- list() for (i in seq_len(length(temp_model_list))) { d[[i]] <- time_varying_density(temp_model_list[[i]], predictor = "temp") if (length(d[[i]]) == 0) { temp_plots[[i]] <- grid::grid.rect(gp = grid::gpar(col = "white")) } else { temp_plots[[i]] <- plot_mountains(d[[i]], variable_label = "Temperature", xlimits = c(2, 10)) + ggtitle(paste(species, names(temp_model_list[i]))) } } print(temp_plots)
png( file = paste0("figs/", spp, "/temp-", spp, covs, "-priors-TRUE.png"), res = 600, units = "in", width = 8.5, height = 11 ) gridExtra::grid.arrange( grobs = temp_plots, ncol = 2, top = grid::textGrob(paste(species)) ) dev.off()
Load Depth models
rm( adult_survey1, imm_survey1, adult_survey4, imm_survey4, adult_survey16, imm_survey16 ) priors <- FALSE try({ survey <- c("SYN QCS", "SYN HS") model_ssid <- c(1, 3) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey1 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey1 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey1")) adult_survey1 <- NULL if (!exists("imm_survey1")) imm_survey1 <- NULL try({ survey <- c("SYN WCVI") model_ssid <- c(4) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey4 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey4 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey4")) adult_survey4 <- NULL if (!exists("imm_survey4")) imm_survey4 <- NULL try({ survey <- c("SYN WCHG") model_ssid <- c(16) ssid_string <- paste0(model_ssid, collapse = "n") adult_survey16 <- readRDS(paste0( "data/", spp, "/mod-mat-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) imm_survey16 <- readRDS(paste0( "data/", spp, "/mod-imm-biomass-", spp, covs, "-", ssid_string, "-prior-", priors, ".rds" )) }) if (!exists("adult_survey16")) adult_survey16 <- NULL if (!exists("imm_survey16")) imm_survey16 <- NULL depth_model_list <- list( adult_survey1 = adult_survey1, imm_survey1 = imm_survey1, adult_survey4 = adult_survey4, imm_survey4 = imm_survey4, adult_survey16 = adult_survey16, imm_survey16 = imm_survey16 ) depth_model_list <- depth_model_list[!sapply(depth_model_list, is.null)]
Build depth plots
d <- list() depth_plots <- list() for (i in seq_len(length(depth_model_list))) { d[[i]] <- time_varying_density(depth_model_list[[i]], predictor = "depth") if (length(d[[i]]) == 0) { depth_plots[[i]] <- grid::grid.rect(gp = grid::gpar(col = "white")) } else { d[[i]]$x <- exp(d[[i]]$x) depth_plots[[i]] <- plot_mountains(d[[i]], variable_label = "Depth", xlimits = c(0, 800)) + ggtitle(paste(species, names(depth_model_list[i]))) } } print(depth_plots)
png( file = paste0( "figs/", spp, "/depth-", spp, covs, "-priors-", priors, ".png" ), res = 600, units = "in", width = 8.5, height = 11 ) gridExtra::grid.arrange( grobs = depth_plots, ncol = 2, top = grid::textGrob(paste(species)) ) dev.off()
Plot time-varying effect of trawling at mean depth
trawl_plots <- list() for (i in seq_len(length(depth_model_list))) { r <- depth_model_list[[i]]$tmb_obj$report() b3 <- r$b_rw_t[, 3] yrs <- sort(unique(depth_model_list[[i]]$data$year)) b_j <- depth_model_list[[i]]$model$par[1:length(yrs)] SE <- 0.35 # Place-holder trawled <- data.frame(year = yrs, intercept = b_j, trawling = b3) # trawl_plots[[i]] <- ggplot(trawled, aes(year, y=exp(trawling) ) ) + # geom_point(colour ="red") + # #geom_pointrange(aes(ymin=exp(intercept-0.35), ymax=exp(intercept+0.35))) + # ylab("Difference in kg/ha within trawled zone") + ggtitle(names(depth_model_list[i])) trawl_plots[[i]] <- ggplot(trawled, aes(year, exp(intercept))) + geom_point() + geom_point(aes(year, y = exp(intercept + trawling)), colour = "red") + geom_pointrange(aes(ymin = exp(intercept - (1.96 * SE)), ymax = exp(intercept + (1.96 * SE)))) + # using mean se on year effects ylim(min(exp(trawled$intercept - trawled$trawling - (1.96 * SE))), max(exp(trawled$intercept + trawled$trawling + (1.96 * SE)))) + ylab("Predicted kg/ha at mean depth") + ggtitle(names(depth_model_list[i])) } print(trawl_plots)
# FIXME: need to add to sdmTMB! r <- m$tmb_obj$report() summary(m) yrs <- sort(unique(m$data$year)) .sd <- summary(m$sd_report) .sd <- as.data.frame(.sd) .sd$par <- row.names(.sd) .sd <- .sd[grepl("^b_rw_t", .sd$par), ] varnames <- colnames(model.matrix(m$time_varying, m$data)) rep(varnames, each = length(yrs)) .sd$parameter <- rep(varnames, each = length(yrs)) .sd$year <- rep(seq_along(yrs), each = length(varnames)) row.names(.sd) <- NULL .sd$par <- NULL names(.sd$Estimate) <- "estimate" names(.sd[2]) <- "se" .sd$ci <- .sd$se * 1.96 m$time_varying nrow(.sd) b3 <- r$b_rw_t[, 3] yrs <- sort(unique(m$data$year)) b_j <- m$tmb_params$b_j[1:8] trawled <- data.frame(year = yrs, intercept = b_j, trawling = b3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.