-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCCRFP_species_otolith_summary.Rmd
278 lines (222 loc) · 9.58 KB
/
CCRFP_species_otolith_summary.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
---
title: "2022 Proposed CCFRP Otolith Collections"
author: "Melissa H. Monk"
date: "`r format(Sys.time(), '%B %d, %Y')`"
output:
bookdown::pdf_document2:
keep_tex: true
keep_md: true
toc: false
header-includes:
- \usepackage{booktabs}
- \usepackage{longtable}
- \usepackage{array}
- \usepackage{multirow}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{colortbl}
- \usepackage{pdflscape}
- \usepackage{tabu}
- \usepackage{threeparttable}
- \usepackage[normalem]{ulem}
- \usepackage{makecell}
- \usepackage{xcolor}
- \usepackage{placeins}
always_allow_html: true
---
```{r load-packages, include = FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(devtools)
library(dplyr)
library(ggplot2)
library(ggridges)
library(stringr)
library(tidyr)
library(unikn)
library(viridis)
library(kableExtra)
library(knitr)
```
```{r setup, echo = FALSE, include = FALSE, warning = FALSE, message = FALSE, cache = TRUE}
knitr::opts_chunk$set(echo = FALSE)
setwd("C:/GitHub/CCFRP")
#-------------------------------------------------------------------------------
# Read in data and basic cleanup
load("CCFRP_cleanedup.RData")
#-------------------------------------------------------------------------------
# Figure out how many of each species we can collect during the 2022 season
#Subset to just Reference areas since we can't take otoliths from MPAs
#and only look at 2019-2021
dat2 <- dat %>%
filter(SITE == 'REF',
YEAR %in% c(2018, 2019, 2021))
#Get the total angler hours by monitoring area
effort_by_program <- dat2 %>%
ungroup() %>%
select(Drift.ID, YEAR, Effort, Total...Anglers.Fishing, Monitoring.Group, Name) %>%
unique()
total_effort <- effort_by_program %>%
select(Monitoring.Group, YEAR, Effort) %>%
group_by(Monitoring.Group, YEAR) %>%
summarise(tot_effort = sum(Effort)) %>%
pivot_wider(names_from = Monitoring.Group, values_from = tot_effort)
```
# First Pass at Determining 2022 Otolith Collections
The following use only data from 2018, 2019 and 2020 from the reference areas. Drifts that did not see any of the target species are also excluded. I also excluded the following MPA locations, Farallons, Point Conception, Laguna Beach, Trinidad and "BM" (error?).
As a first pass, I looked at the total number of a given species by north and south
of Point Conception. I did this because we have been separating assessments at
Point Conception for most of the nearshore species, and species compositions and
fishing practices are fundamentally different in these two regions.
If there were fewer than 4 of a given species seen across the three years, I
excluded them from the collections analysis. I also removed yelloweye rockfish
and the olive or yellowtail rockfish category.
I then took the ratios of a
species within by CCFRP institution and scaled that to either a collection total
for each region of 50 samples (otoliths) or 70% of the total. In an assessment model,
we usually exclude any age data with fewer than 30 samples per year.
I realize that we need to scale back some of the collections by programs, e.g., BML,
and also figure out if we should lingcod. The NWFSC is currently exploring
a comparison of lingcod otoliths reads with spine. Collection of spine is a bit more
difficult. There is also an interest in developing post-fillet back calculations
for lingcod. What I'd like to hear from each partner, is the maximum number of
otoliths you think you could possibly collect. We will also have staff available
to process fish (as long as COVID trends the right direction).
For species that are less common, otoliths can still be used to look at growth
curves, e.g. copper and quillback this cycle.
I will clean up the tables below and look at a few other metrics including
available habitat in the reference sites for each university's site to make sure
we're scaling samples approporiately.
This document lives on my Github page and will allow us to reproduce these values
as a moving window going forward, and also adjust according to assessment
prioritization. The Council will decide a preliminary assessments for the odd year
in the prior even year, with final decisions coming in June. That should give us
time to adjust these numbers for special collections.
We also have an interest in fin clips, especially for vermilion/sunsets and also
blue/deacons.
\newpage
```{r anghrs, echo = FALSE, warning = FALSE, message = FALSE}
#Look at the effort by year among the programs
knitr::kable(booktabs = T,
caption = "Total angler hours by institution summed across 2018, 2019, 2021.",
effort_by_program %>%
select(Monitoring.Group, YEAR, Effort) %>%
group_by(Monitoring.Group, YEAR) %>%
summarise(Total_AnglerHours = round(sum(Effort),0)) %>%
pivot_wider(names_from = Monitoring.Group, values_from = Total_AnglerHours)
) %>%
kable_styling(latex_options = "striped")
```
```{r effort2021, echo = FALSE, warning = FALSE, message = FALSE}
knitr::kable(booktabs = T,
caption = "Total effort in 2021",
effort_by_program %>%
filter(YEAR == 2021) %>%
group_by(Monitoring.Group) %>%
summarise(Total_AnglerHours = round(sum(Effort), 0)) %>%
mutate(Percent_Effort = scales::percent(Total_AnglerHours / sum(Total_AnglerHours), accuracy = 1)) %>%
data.frame
) %>%
kable_styling(latex_options = "striped")
```
```{r effort2018, echo = FALSE, warning = FALSE, message = FALSE}
knitr::kable(booktabs = T,
caption = "Total effort in 2018",
effort_by_program %>%
filter(YEAR == 2018) %>%
group_by(Monitoring.Group) %>%
summarise(Total_AnglerHours = round(sum(Effort),0)) %>%
mutate(Percent_Effort = scales::percent(Total_AnglerHours / sum(Total_AnglerHours), accuracy = 1)) %>% data.frame
)
```
```{r echo = FALSE, include = FALSE, warning = FALSE, message = FALSE}
## Get it down to the species there would be enough or or we're interested in
total.fish <- dat2 %>%
group_by(Common.Name) %>%
summarise(total = sum(n)) #%>%
# filter(total > )
dat2 <- dat2 %>%
filter(Common.Name %in% total.fish$Common.Name) %>%
filter(!(Common.Name %in% c("Yelloweye Rockfish",
"Olive or Yellowtail Rockfish")))
fish_numbers <- dat2 %>%
group_by(Common.Name, Monitoring.Group, YEAR, Region) %>%
summarise(total_fish = sum(n),
avg_annual_cpue = mean(CPUE))# %>%
# group_by(Common.Name, CA_area) %>%
# summarise(avg_fish = mean(total_fish),
# avg_cpue = mean(avg_annual_cpue)) %>%
# mutate(avg_fish = round(avg_fish,0))
#
####SOUTH
# Get the average number of fish by program per year
south0 <- fish_numbers %>%
filter(Region == "South") %>%
group_by(Common.Name, Monitoring.Group) %>%
summarise(average_fish = mean(total_fish)) %>%
filter(average_fish > 4)
#Get the percent of the fish collected by each program and multiply by 50 - goal or less
#number of otoliths per species
south_collections <- south0 %>%
group_by(Common.Name) %>%
summarise(total = sum(average_fish))
south_collections <- left_join(south_collections, south0) %>%
mutate(num_to_collect = if_else(total > 75, ceiling(((average_fish/total)*50)),
ceiling(((average_fish/total)*(.7*total))))) #%>%
#Check totals for each program to see how they fall out in terms of effort for collecting
south_program_effort <- south_collections %>%
group_by(Monitoring.Group) %>%
summarise(total_fish_for_otoliths = sum(num_to_collect))
#####NORTH
# Get the average number of fish collected over the last three years by program
north0 <- fish_numbers %>%
filter(Region %in% c("Central", "North")) %>%
group_by(Common.Name, Monitoring.Group) %>%
summarise(average_fish = mean(total_fish)) %>%
filter(average_fish > 4)
#Get the percent of the fish collected by each program and multiply by 60 - goal
#number of otoliths per species
north_collections <- north0 %>%
group_by(Common.Name) %>%
summarise(total = sum(average_fish))
north_collections <- left_join(north_collections, north0) %>%
mutate(num_to_collect = if_else(total > 75, ceiling(((average_fish/total)*50)),
ceiling(((average_fish/total)*(.7*total)))))
#Check totals for each program to see how they fall out in terms of effort for collecting
north_program_effort <- north_collections %>%
group_by(Monitoring.Group) %>%
summarise(total_fish_for_otoliths = sum(num_to_collect))
program_effort = rbind(south_program_effort, north_program_effort)
###Bind the collection numbers and make a table
collections <- rbind(north_collections, south_collections)
collections_final <- collections %>%
select(Common.Name, Monitoring.Group, num_to_collect) %>%
pivot_wider(names_from = Monitoring.Group, values_from = num_to_collect, values_fill = 0) %>%
rowwise(Common.Name) %>%
mutate(Total = sum(c_across(BML:SIO)))
```
```{r collections, echo = FALSE, warning = FALSE, message = FALSE}
kableExtra::kbl(collections_final,
booktabs = TRUE,
caption = "Suggested otolith collections for 2022 CCFRP by species and CCFRP partner",
row.names = F) %>%
kableExtra::kable_styling(latex_options = "striped")
```
```{r partnernumbers, echo = FALSE, warning = FALSE, message = FALSE}
kableExtra::kbl(program_effort,
booktabs = TRUE,
caption = "Number of structures to collect by partner for 2022 CCFRP",
row.names = F
)
```
\FloatBarrier
\clearpage
\newpage
```{r specieslong, echo = FALSE, warning = FALSE, message = FALSE}
kableExtra::kbl(fish_numbers,
longtable = TRUE,
booktabs = TRUE,
caption = "Longer table with raw data",
row.names = F
) %>%
kable_styling(latex_options=c("repeat_header", "striped", "hold_position"))
```