knitr::opts_chunk$set(echo=FALSE, warning = FALSE, 
                                            message = FALSE, cache = FALSE,
                                            progress = TRUE, verbose = FALSE, comment = F
                                            , error = FALSE, dev = 'png', dpi = 200)

options(knitr.kable.NA = '')

Background

Exploration of discard estimates from may year module developed for hake

Steps

  1. pull all merged trips from CAMS_OBS_CATCH

  2. Set stratification variables for all trips

# FULL Stratification variables

stratvars = c('SPECIES_STOCK'
              ,'CAMS_GEAR_GROUP'
                            , 'MESHGROUP'
                          , 'TRIPCATEGORY'
                          , 'ACCESSAREA')
- SPECIES_STOCK is taken from CAMS support table `MAPS.CAMS_STATAREA_STOCK`
- CAMS_GEAR_GROUP is derived from a support table (`MAPS.CAMS_GEARCODE_STRATA`)
- MESHGROUP is hardcoded for all trips according to decisions made by the mesh subgroup (see summary when available)
- SECTID comes from a CAMS matching table (`MAPS.MATCH_MULT_SECTID`)
  1. Run discaRd
    • there are sub-passes for year t and year t-1
# Assumed Stratification variables

stratvars = c('SPECIES_STOCK'
              , 'CAMS_GEAR_GROUP') 
  1. The discaRd functions allow for an assumed rate to be calculated. This assumed rate is realtive to the stratification used in the functions. Here, the stratification is coarsened to 'SPECIES_STOCK', 'CAMS_GEAR_GROUP' and 'MESHGROUP'.

  2. A transition rate is calculated between year t and year t-1. This rate determines how much, if any, information is used from previous years.

  3. Rates and DISCARD_SOURCE (in parentheses) are assigned for each trip according to:

  4. (I) in season rate; >= 5 trips in Full Stratification
  5. (T) Transition in season rate; < 5 trips in Full Stratification, year t, AND >= 5 trips in year t-1
  6. (A) Assumed rate. This is the rate when there were <5 trips in season and <5 in previous season.
  7. (O) Observed values used from obserevd trips; discard rate is NOT USED.
  8. CV calculations are available for (I) and (T). Obtaining a CV estimate for (A) would require a second pass of discaRd functions.

  9. Discard pounds per trip are calculated according to

    mutate(coalesce(DISC_MORT_RATIO, 1)) %>%
    mutate(DISCARD = case_when(!is.na(LINK1) ~ DISC_MORT_RATIO*OBS_DISCARD
                                                         , is.na(LINK1) ~ DISC_MORT_RATIO*COAL_RATE*LIVE_POUNDS)

            # COAL_RATE is the final discard rate used. It is 'coalesced' from the (I), (A) and (B) rates    

By assigning SPECIES_STOCK as a stratification variable, the computation time is reduced. Each subtrip may only occur in a single statistical area so it should never cross stock boundaries.

Once the full table (CAMS_OBS_CATCH) is loaded, each species takes ~X seconds to process on the server.

Output tables are produced for each species. These can easily be recombined. An example table has been shared on MAPS and CAMS_GARFO.

    MAPS.CAMS_DISCARD_EXAMPLE_CY_BARNDOORSKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_BARNDOORSKATE_19

    MAPS.CAMS_DISCARD_EXAMPLE_CY_CLEARNOSESKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_CLEARNOSESKATE_19

    MAPS.CAMS_DISCARD_EXAMPLE_CY_LITTLESKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_LITTLESKATE_19

    MAPS.CAMS_DISCARD_EXAMPLE_CY_ROSETTESKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_ROSETTESKATE_19

    MAPS.CAMS_DISCARD_EXAMPLE_CY_SMOOTHSKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_SMOOTHSKATE_19

    MAPS.CAMS_DISCARD_EXAMPLE_CY_WINTERSKATE_19
    CAMS_GARFO.CAMS_DISCARD_EXAMPLE_CY_WINTERSKATE_19

Diagnostic Plots/Tables

library(odbc)
library(dplyr, warn.conflicts = FALSE)
# library(dbplyr)
library(ggplot2)
# library(config)
library(stringr)
library(discaRd)
library(knitr)
library(kableExtra)
options(scipen = 999)

discard <- read.csv("~/discaRd/CAMS/MODULES/MAY/Skate_comparisons.csv")

discard %>% filter(Source %in% c("Federal"))%>%
  filter(Species %in% c("Skate complex")) %>%
    ggplot()+
    geom_bar(aes(x = Method, y = Discards, fill = Source), stat = 'identity', position = 'dodge')+
    facet_wrap(~Species, scales = 'free')+
    theme_light()

Combined skate discard estimates are much higher for the seven skate species included in the MAPS discard mortality support table (ITIS: 564139, 160855, 564130, 564130, 564136, 564151, 564149 and 564145) compared to the 11 used for QM (160845, 160846, 160848, 160855, 564037, 564130, 564136, 564139, 564145, 564149, 564151).

Probably due to differences in gear types and discard mortality rates which I believe are just one value across skates for QM.

discard <- read.csv("~/discaRd/CAMS/MODULES/MAY/Skate_comparisons.csv")

'%ni%' <- Negate("%in%")

discard %>% filter(Source %in% c("Federal")) %>%
  dplyr::select(Species, Source, Discards) %>%
        DT::datatable(caption = 'Total discards by species for state trips')
discard <- read.csv("~/discaRd/CAMS/MODULES/MAY/Skate_comparisons.csv")

'%ni%' <- Negate("%in%")

discard %>% filter(Source %in% c("State")) %>% 
  dplyr::select(Species, Source, Discards) %>%
        DT::datatable(caption = 'Total discards by species for state trips')

Red flag that some of those state estimates are the same between species.

Kall <- read.csv("~/discaRd/CAMS/MODULES/MAY/May_kall.csv")

Kall %>% 
    ggplot()+
    geom_bar(aes(x = Method, y = kall, fill = Source), stat = 'identity', position = 'dodge')+
    #facet_wrap(~Species, scales = 'free')+
    theme_light()

Not quite sure why the QM kall estimate is so much lower. Got it from the 2019 ACL skate complex excel file.

 dw_maps <- config::get(config = "maps", file = "~/config_group.yml")

# Connect to database - move this to config file in the future - quick addition for server
  connectString <- paste(
    "(DESCRIPTION=",
    "(ADDRESS=(PROTOCOL=tcp)(HOST=", dw_maps$host, ")(PORT=", dw_maps$port, "))",
    "(CONNECT_DATA=(SERVICE_NAME=",dw_maps$svc, ")))",
    sep = ""
  )

# Connect to oracle each loop in case of timeouts
    bcon <- ROracle::dbConnect(
      drv = ROracle::Oracle(),
      username = dw_maps$uid,
      password = dw_maps$pwd,
      dbname = connectString
    )

db_barndoor = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_BARNDOORSKATE_19")) %>% 
    collect

db_barndoor$SPECIES <- "BARNDOOR SKATE"

db_clearnose = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_CLEARNOSESKATE_19")) %>% 
    collect

db_clearnose$SPECIES <- "CLEARNOSE SKATE"

db_little = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_LITTLESKATE_19")) %>% 
    collect

db_little$SPECIES <- "LITTLENOSE SKATE"

db_rosette = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_ROSETTESKATE_19")) %>% 
    collect

db_rosette$SPECIES <- "ROSETTE SKATE"

db_smooth = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_SMOOTHSKATE_19")) %>% 
    collect

db_smooth$SPECIES <- "SMOOTH SKATE"

db_winter = tbl(bcon, sql("select * from MAPS.CAMS_DISCARD_EXAMPLE_CY_WINTERSKATE_19")) %>% 
    collect

db_winter$SPECIES <- "WINTER SKATE"

db_final <- rbind(db_barndoor,db_clearnose,
                  db_little, db_rosette,
                  db_smooth, db_winter)

strat_barndoor <- db_barndoor %>%   
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)
             # ,CV) 
             #dplyr::arrange(desc(DISCARD))

strat_clearnose <- db_clearnose %>%     
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)

strat_little <- db_little %>%   
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)

strat_rosette <- db_rosette %>%     
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)

strat_smooth <- db_smooth %>%   
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)

strat_winter <- db_winter %>%   
  filter(DISCARD_SOURCE != 'O') %>%
  group_by(SPECIES, STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(
                              SPECIES,
                              STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD
              ,DISCARD_SOURCE
              ,TRIP_TYPE)

strat_final <- rbind(strat_barndoor, strat_clearnose,
                     strat_little, strat_rosette,
                     strat_smooth, strat_winter)


strat_final %>% 
    filter(DISCARD_SOURCE != 'O' & CAMS_DISCARD_RATE) %>% 
    dplyr::group_by(SPECIES, STRATA, DISCARD_SOURCE, TRIP_TYPE) %>% 
    #slice(1) %>% 
    ggplot()+
    geom_histogram(aes(x = CAMS_DISCARD_RATE, fill = DISCARD_SOURCE), bins=60, position = "dodge") +
    facet_wrap(~SPECIES)+
    theme_light()
db_final %>% 
    # filter(DISCARD_SOURCE != 'O') %>% 
    group_by(SPECIES, SPECIES_ITIS, DISCARD_SOURCE,SPECIES_STOCK) %>% 
    dplyr::summarise(DSUM = sum(DISCARD, na.rm = T)) %>% 
    # slice(1) %>% 
    ggplot()+
    geom_bar(aes(x = SPECIES_STOCK, y = DSUM, fill = DISCARD_SOURCE), stat = 'identity', position = 'dodge')+
 facet_wrap(~SPECIES, scales = 'free')+
    theme_light()

Not suprisingly, total discards at the end of the year come from strata with an in season rate.

db_barndoor %>%     
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>%
        DT::datatable(caption = 'Discard rates by Strata for Barndoor Skate')
 db_clearnose %>%   
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>%
        DT::datatable(caption = 'Discard rates by Strata for Clearnose Skate based on federal trips')
db_little %>%   
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>%
        DT::datatable(caption = 'Discard rates by Strata for Little Skate based on federal trips')
db_rosette %>%  
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>% 
        DT::datatable(caption = 'Discard rates by Strata for Rosette Skate based on federal trips')
db_smooth %>%   
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>% 
        DT::datatable(caption = 'Discard rates by Strata for Smoothnose Skate based on federal trips')
db_winter %>%   
  filter(DISCARD_SOURCE != 'O' & TRIP_TYPE=="FED") %>%
  group_by(STRATA_FULL, STRATA_ASSUMED, DISCARD_SOURCE, TRIP_TYPE) %>%
  dplyr::summarise(SUBTRIP_KALL = sum(SUBTRIP_KALL)
                       , CAMS_DISCARD_RATE = round(mean(CAMS_DISCARD_RATE), digits=5)
                       , DISC_MORT_RATIO = mean(DISC_MORT_RATIO)
                      # , CV = mean(CV, na.rm=TRUE)
                       , DISCARD = round(sum(DISCARD))) %>%
                      # , N_OBS_TRIPS_F = mean(N_OBS_TRIPS_F)) %>% 
  mutate(STRATA = case_when(DISCARD_SOURCE == "I" ~ STRATA_FULL, DISCARD_SOURCE == "A" ~ STRATA_ASSUMED)) %>% ungroup() %>% dplyr::select(STRATA 
             # ,N_OBS_TRIPS_F
              ,CAMS_DISCARD_RATE
              ,SUBTRIP_KALL
              ,DISC_MORT_RATIO
              ,DISCARD) %>%
             # ,CV) 
             dplyr::arrange(desc(DISCARD)) %>% top_n(10) %>%
        DT::datatable(caption = 'Discard rates by Strata for Winter Skate based on federal trips')

Appendix

For more information regarding stratfication variables and discard rates by species see

MAPS.CAMS_STATAREA_STOCK, MAPS.CAMS_DISCARD_MORTALITY_STOCK, MAPS.CAMS_GEARCODE_STRATA, MAPS.CAMS_MASTER_GEAR, MAPS.CAMS_OBS_CATCH,

I may need to grant selection to APSD if you do not have access to MAPS.



noaa-garfo/discaRd documentation built on April 17, 2025, 10:32 p.m.