8  Compilation of international catches

8.1 Compile catch in CAR and NED jurisdictional waters by discards and reporting type

Now that we have separated the EEZ catch by region, we will summarize it according to the areas used in the dolphin management strategy evaluation operating model. We will separate the catch by discards versus landings and reported versus unreported data so that we can use these data in various sensitivity analyses.

rm(list = ls())  # clear the workspace

# load data
load("data/outputs/SAU_EEZs_WCA.RData")  # SAU EEZ data for NED and NCA saved from earlier
d <- dwest

# summarize the catch by area, discards/landings and reported/unreported
tapply(d$lbs, list(d$catch_type, d$reporting_status, d$reg), sum, na.rm = T)
, , Canadian EEZ

         Reported Unreported
Discards       NA         NA
Landings  1220146         NA

, , Western Central Atlantic EEZs

          Reported Unreported
Discards        NA    2179444
Landings 393279187  176215080

The catch from the Canadian EEZs is 100% landings, with no unreported data and no discards. In the WCA there are no reported discards, only unreported discards. Thus, we only need to separate out unreported discards and landings for the WCA.

# summarize the catch by year, area, discards/landings and reported/unreported

d$year <- factor(d$year, levels = 1950:2019)
dc <- d[which(d$reg == "Canadian EEZ"), ]
dw <- d[which(d$reg == "Western Central Atlantic EEZs"), ]

#  remove those erroneous catches identified previously from the database prior to summarizing
#dim(dw)
dw <- dw[-which(dw$area_name == "Venezuela" & dw$fishing_entity == "Unknown Fishing Country"), ]
dw <- dw[-which(dw$area_name == "Curaçao (Netherlands)" & dw$fishing_entity == "USA"), ]
#dim(dw)

CAN <- tapply(dc$lbs, list(dc$year, dc$catch_type, dc$reporting_status), sum, na.rm = T)
tail(CAN)
, , Reported

      Landings
2014 531022.55
2015  38945.76
2016 354370.65
2017  83776.88
2018  12588.88
2019  36112.19
tab_dw <- tapply(dw$lbs, list(dw$year, dw$catch_type, dw$reporting_status), sum, na.rm = T)
tail(tab_dw)
, , Reported

     Discards Landings
2014       NA  9324873
2015       NA 10425753
2016       NA 10003833
2017       NA 10128483
2018       NA  9507877
2019       NA  9332567

, , Unreported

     Discards Landings
2014 38062.63  2816498
2015 39134.61  2794662
2016 38973.17  2778493
2017 38728.81  2762926
2018 38769.93  2732351
2019 38655.51  2743182
# combine CAR reported landings, unreported discards, unreported landings
CAR <- data.frame(cbind(tab_dw[, 2, 1], tab_dw[, , 2]))  
names(CAR) <- c("landings", "discards", "unreported")

matplot(rownames(CAR), cbind(CAN, CAR)/10^6, type = "l", lwd = 2, lty = 1, col = 2:5,
        xlab = "", ylab = "total catch (millions of pounds)",
        main = "Total dolphinfish catches in NED and NCA jurisdictional waters")
legend("topleft", col = 2:5, c("Canadian reported landings", "Caribbean landings", 
                    "Caribbean discards", "Caribbean unreported landings"), lty = 1, lwd = 3, bty = "n")

round(sum(CAR$discards, na.rm = T) / (sum(CAR$discards, na.rm = T) + sum(CAR$landings, na.rm = T)) * 100, 2)  # discards are 0.6% of landings
[1] 0.62

Note that the Caribbean unreported discards in the database are negligible (< 1%) and we exclude them from further analysis.

8.2 Distribute the territorial international catches across quarters of the year

The international catches are only reported as annual catches and do not have any month or season associated with them. However, the MSE operating model requires seasonal catches. Lacking other information on the seasonality of these fleets, we will assume that the fleet distribution of the U.S. pelagic longline is representative of the seasonality of the jurisdictional fleets. Now we parse the annual catches according to the seasonality of the U.S. fleet.

The pelagic longline logbook data is only available going back to 1997, but there are Caribbean catches extending back to the 1950s. To interpolate the seasonality for 1986 - 1996, we take the average seasonality of the oldest 10 years of logbook data (1997 - 2006) and use those averages for the unknown years.

At the time of analysis, the SAU database only contained catches to 2019, so we interpolated the 2019 values to cover years 2020 - 2022.

#par(mar = c(5, 10, 3, 1))
#barplot(tapply(dw$lbs, dw$gear_type, sum, na.rm = T), horiz = T, las = 2)
#barplot(tapply(dc$lbs, dc$gear_type, sum, na.rm = T), horiz = T, las = 2)

# read in the percentage of the catch by area and year-quarter combinations from the U.S. PLL
load("data/outputs/per_PLLcatch_by_area_yearquarter.RData")  

names(percatch[1, 1, ]) # matrix 2 == Caribbean, matrix 7 == NED (Atlantic Northwest)
[1] "NCA"  "CAR"  "FLK"  "NCFL" "NNC"  "VBM"  "NED" 
CAN <- CAN[which(rownames(CAN) >= 1997)]  # PLL data are only available from 1997 on 
CAN <- c(CAN, CAN[length(CAN)], CAN[length(CAN)], CAN[length(CAN)])  # interpolate 2019 catches for 2020-2022

CANqrt <- percatch[, , 7]   # create matrix for final catch data
for (i in 1:ncol(percatch))  { 
  CANqrt[, i] <- percatch[, i, 7] * CAN[i]  }

percatch_car <- percatch[, , 2] # create matrix for Caribbean percentages
int <- rowMeans(percatch_car[, 1:10]) # calculate the average seasonality using the oldest 10 years of logbook data
percatch_car <- cbind(matrix(rep(int, length(1986:1996)), nrow = 4), percatch_car)  # attach those 10-year averages to years 1986:1996
colnames(percatch_car) <- 1986:2022   # full data frame for Caribbean seasonality 1986 - 2022

CAR <- CAR[which(rownames(CAR) >= 1986), ]  # only need Caribbean data from 1986 on 
CAR <- rbind(CAR, CAR[nrow(CAR), ], CAR[nrow(CAR), ], CAR[nrow(CAR), ])  # interpolate 2019 catches for 2020-2022

#dim(CAR)
#dim(percatch_car)

CARrep <- percatch_car   # create matrices for final catch data
CARunr <- percatch_car

for (i in 1:ncol(percatch_car))  { 
  CARrep[, i] <- percatch_car[, i] * CAR[i, 1]
  CARunr[, i] <- percatch_car[, i] * CAR[i, 3]
}

# ensure sums are equal after parsing
sum(CARrep); sum(CAR$landings)
[1] 272388267
[1] 272388267
sum(CARunr); sum(CAR$unreported)
[1] 112754888
[1] 112754888
sum(CAN, na.rm = T); sum(CANqrt, na.rm = T)
[1] 1328482
[1] 1328482

The Canada jurisdictional data need to be combined with the NED high seas data calculated in the previous section, because both of these are a component of the international catches in the NED area.

load("data/outputs/NED_year_quarter.RData")

NEDtot <- NED + CANqrt
# ensure sums are correct
sum(NED, na.rm = T) + sum(CANqrt, na.rm = T); sum(NEDtot, na.rm = T)
[1] 1808855
[1] 1808855
NEDtot <- NEDtot[, !is.na(colSums(NEDtot))] # remove NA columns from CAN data

# plot the parsed out data by year-quarter
yrs <- sort(rep(as.numeric(colnames(CARrep)), 4))
qrt <- rep(1:4, length(yrs)/4)
yrs1 <- sort(rep(as.numeric(colnames(NEDtot)), 4))
qrt1 <- rep(1:4, length(yrs1)/4)

matplot(yrs + qrt/4, cbind(matrix(CARrep), matrix(CARunr))/10^6, lty = 1, lwd = 2, 
        col = 2:3, type = "l", main = "International jurisdictional catches by quarter", 
        xlab = "", ylab = "total catch (millions of pounds)")
lines(yrs1 + qrt1/4, as.numeric(matrix(NEDtot))/10^6, lwd = 2, col = 4)
legend("topleft", c("Caribbean reported landings", "Caribbean unreported landings", "NED reported landings"),        
       lwd = 2, col = 2:4, bty = "n")

Finally, we format the data in the format for input into the operating model.

# format for operating model - Caribbean 
flt <- rep("Intl", length(yrs))
are <- rep("CAR", length(yrs))
fin1 <- data.frame(cbind(yrs, qrt, flt, are, matrix(CARrep)))
flt <- rep("UnRep", length(yrs))
fin2 <- data.frame(cbind(yrs, qrt, flt, are, matrix(CARunr)))

findat <- data.frame(rbind(fin1, fin2), stringsAsFactors = FALSE)
names(findat) <- c("Year", "Quarter", "Fleet", "Area", "Catch_lbs")
findat$Catch_lbs <- as.numeric(findat$Catch_lbs)
head(findat)
  Year Quarter Fleet Area Catch_lbs
1 1986       1  Intl  CAR 1983610.3
2 1986       2  Intl  CAR 1363432.3
3 1986       3  Intl  CAR  216194.7
4 1986       4  Intl  CAR  104564.4
5 1987       1  Intl  CAR 1491251.1
6 1987       2  Intl  CAR 1025009.7
#plot(findat$Catch_lbs, type = "l")
#plot(findat$Catch_lbs ~ factor(findat$Fleet))
#plot(findat$Catch_lbs ~ factor(findat$Quarter))
#plot(findat$Catch_lbs ~ factor(findat$Year))
#apply(findat, 2, table)

# write the output file
write.csv(findat, file = "data/FINAL_files/CAR_Intl_unrep_TomFormat.csv", row.names = FALSE)

# format for operating model - NED 
flt <- rep("Intl", length(yrs1))
are <- rep("NED", length(yrs1))
fin <- data.frame(cbind(yrs1, qrt1, flt, are, matrix(NEDtot)), stringsAsFactors = FALSE)
names(fin) <- c("Year", "Quarter", "Fleet", "Area", "Catch_lbs")
fin$Catch_lbs <- as.numeric(fin$Catch_lbs)
head(fin)
  Year Quarter Fleet Area Catch_lbs
1 2007       1  Intl  NED     0.000
2 2007       2  Intl  NED  1450.366
3 2007       3  Intl  NED 13279.912
4 2007       4  Intl  NED     0.000
5 2008       1  Intl  NED     0.000
6 2008       2  Intl  NED  1312.750
#apply(fin, 2, table)

# write output file
write.csv(fin, file = "data/FINAL_files/NED_Intl_TomFormat.csv", row.names = FALSE)

#barplot(tapply(fin$Catch_lbs, list(fin$Quarter), sum, na.rm = T), col = rainbow(4))