We will also have to remove the last three length category columns, as they are greater than the specified Linf value and so result in the catch curve function taking the log of a negative number (log(1 - L/Linf)).

``` {r assign age data} naa <- TotCatAge yrs <- 21:36 naa <- naa[yrs,2:26] # We must remove the first column containing the years. ages <- 1:25 nal <- TotCatLen nal <- nal[,5:18] ``` Within the catch-at-age data, we can see there is a strong year cohort progressing through from 1990 onwards, which violates the assumption of constant recruitment. Despite the large sample sizes in the 1990s, let us instead focus our analysis on 1988 in the first instance. These are years with high sample sizes (2840 and 2974, respectively) but without visual evidence of strong recruitment pulses. To correctly format the data for input into the catchCurve function in TropFishR, catch-at-age or catch-at-length needs to be a matrix with each column being one year of data, and each row one age class. We will therefore have to transpose our data, and we will assign the column names to be the years: ``` {r correctly format the catch input data} catch_age_input <- t(naa) colnames(catch_age_input)<-c(1980:1995) catch_len_input <- t(nal) colnames(catch_len_input)<-c(1971:2001) ``` For the catchCurve function in TropFishR, the input data is fed in as function argument "param", which needs to be a list consisting of: * **midLengths or age** : midpoints of the length classes (length-frequency data) or ages (age composition data), * **Linf** : infinite length for investigated species in cm [cm], * **K** : growth coefficent for investigated species per year [1/year], * **t0** : theoretical time zero, at which individuals of this species hatch, * **catch** : catches, vector or matrix with catches of subsequent years if the catch curve with constat time intervals should be applied; ``` {r generate the input list} TestList_age <- list("age"=c(0.5:24.5),"Linf"=81.44505,"K"=0.15,"t0"=-1.87856856036483,catch=catch_age_input) TestList_length <- list("midLengths"=seq(12.5,77.5,by=5),"Linf"=81.44505,"K"=0.15,"t0"=-1.87856856036483,catch=catch_len_input) ``` # Fitting the model to our data We will now apply the catchCurve function to year 1988 (the 8th column) in the catch-at-age data. The function catchCurve is catchCurve( param, catch_columns = NA, cumulative = FALSE, calc_ogive = FALSE, reg_int = NULL, reg_num = 1, auto = FALSE, plot = TRUE ) with arguments * **param** as described above * **catch_columns** numerical; indicating the column of the catch matrix which should be used for the analysis. * **cumulative** logical; if TRUE the cumulative catch curve is applied (Jones and van Zalinge method) * **calc_ogive** logical; if TRUE the selection ogive is additionally calculated from the catchcurve (only if cumulative = FALSE) * **reg_int** instead of using the identity method a range can be determined, which is to be used for the regression analysis. If equal to NULL identity method is applied (default). For multiple regression lines provide list with the two points for the regression line in each element of the list. * **reg_num** integer indicating how many separate regression lines should be applied to the data. Default 1. * **auto** logical; no interactive functions used instead regression line is chosen automatically. Default = FALSE * **plot** logical; should a plot be displayed? Default = TRUE This function includes the identify function, which asks you to manually choose two points from a graph. The two points, which you choose by clicking on the plot in the graphical device, represent the start and end of the data points, which bracket the negative-linear section of the scatterplot and hence which should be used for the analysis. Based on these points the regression line is calculated. Here we tell the model (using the "reg_int" argument) to select points 5 and 24, as bracketing the most (negative) linear section of the scatterplot. For this demonstration, we will use the reg_int argument of the function to provide the interval used for the regression analysis. ```{r runModel} catchCurve(TestList_age,reg_int=c(5,24),catch_columns=8) ``` The function value is a list with the input parameters and following list objects: * **classes.num, tplusdt_2, t_midL, or ln_Linf_L** : age, relative age or subsitute depending on input and method, * **lnC or lnC_dt** : logarithm of (rearranged) catches, * **reg_int** : the interval used for the regression analysis, * **linear_mod** : linear model used for the regression analysis, * **Z** : instantaneous total mortality rate, confidenceInt * **se** : standard error of the total mortality; * **confidenceInt** : confidence interval of the total mortality; in case calc_ogive == TRUE, additionally: * **intercept** : intercept of regression analysis, * **linear_mod_sel** : linear model used for the selectivity analysis, * **Sobs** : observed selection ogive, * **ln_1_S_1** : dependent variable of regression analysis for selectivity parameters, * **Sest** : estimated selection ogive, * **t50** : age at first capture (age at which fish have a 50% probability to be caught), * **t75** : age at which fish have a 75 * **L50** : length at first capture (length at which fish have a 50% probability to be caught), * **L75** : length at which fish have a 75% probability to be caught This function applies the (length-converted) linearised catch curve to age composition or length-frequency data, respectively. It allows to estimate the instantaneous total mortality rate (Z). Optionally, the gear selectivity can be estimated and the cumulative catch curve can be applied. When the selection ogive is calculated by means of the catch curve the assumption is made, that Z is constant for all year classes or length groups, respectively. According to Sparre and Venema (1998) this assumption might be true, because F is smaller for young fish (Selectivity) while M is higher for young fish (high natural mortality). The selectivity for not fully exploited old fish (e.g. due to gillnet fishery) can not be calculated yet by use of the catch curve. Based on the format of the list argument catch and whether the argument catch_columns is defined, the function automatically distinguishes between the catch curve with variable parameter system (if catch is a vector) and the one with constant parameter system (if catch is a matrix or a data.frame and catch_columns = NA). In the case of the variable parameter system the catches of one year are assumed to represent the catches during the entire life span of a so called pseudo-cohort. We reiterate that the cumulative catch curve does not allow for the estimation of the selectivity ogive. Let's now run the model to also estimate the selectivity ogive, again in the year 1988.(In this case we will use the length data, because we suspect a bug with estimating selectivity using the catch-at-age data).

```{r runModel with selectivity} #catchCurve(TestList,reg_int=c(1,26),calc_ogive=TRUE,catch_columns=8) catchCurve(TestList_length,reg_int=c(9,13),calc_ogive=TRUE,catch_columns=18) ``` # Interpreting results in a management context Catch curve analysis results in an estimate of total mortality, and, assuming a fixed natural mortality, fishing mortality. They do not provide a stock status per se, except where - consistently low fishing mortality is used as a proxy for sustainability (although this would require many years of age composition data). - estimates of fishing mortality could be compared to a reference point such as fishing mortality at maximum sustainable yield, if this were available. - the exploitation rate, defined as E = F/Z, relative to a reference level of 0.5, provides a simple indication of the stock status If the gear selectivity is estimated using the catchCurve function, a yield-per-recruit model can be used to evaluate stock status as a function of the fishing mortality, using the predict_mod function within TropFishR. This function applies Beverton & Holt's yield per recruit model as well as the Thompson & Bell model. These models predict catch, yield, biomass and economic values for different fishing mortality scenarions (in combination with gear changes). The model requires selectivity parameters (which can be estimated using the catchCurve function) the parameters of the length-weight relationship, the natural and total mortality estimates, length-weight relationship coefficients, and the length or age of recruitment. An example is provided in the Mildenberger tutorial at https://cran.r-project.org/web/packages/TropFishR/vignettes/tutorial.html As only a single year of numbers-at-age or numbers-at-length is required, catch curve, or length-converted catch curve analysis suits fisheries which have occasional age-structured or length data, and whose catch-at-age or catch-at-length distribution is not expected to vary strongly through time. As such, catch-curve analysis is frequently applied to data-poor fisheries, where a variety of disparate information sources (each of low quality for stock assessment) may be available. Future work could formalize a process by which catch curves are combined with expert opinion (i.e., interviews with fishers) and other data-poor analyses (e.g., changes in mean length) into a quantitative estimate of stock status (Thorson and Prager 2011). # Key references ## Catch Curve Methodology Chapman, D. G., & Robson, D. S. (1960). The analysis of a catch curve. Biometrics, 16, 354-368. Dunn, A., Francis, R. I. C. C., & Doonan, I. J. (2002). Comparison of the Chapman-Robson and regression estimators of Z from catch-curve data when non-sampling stochastic error is present. Fisheries Research, 59, 149-159. Gulland, J. A. (1971). The fish resources of the ocean. West Byfleet, UK: Fishing News Books. Mildenberge, T.K., Taylor, M.H., and Wolff, M. (2017). TropFishR: an R package for fisheries analysis with length-frequency data. Methods in Ecology and Evolution, 8, 1520-1527. Smith, M. W., Then, A. Y., Wor, C., Ralph, G., Pollock, K. H., & Hoenig, J. M. (2012). Recommendations for catch-curve analysis. North American Journal of Fisheries Management, 32, 956-967. http://dx.doi.org/10.1080/02755947.2012.711270 Wayte, S.E. and N.L. Klaer (2010) An effective harvest strategy using improved catch-curves. Fisheries Research 106: 310-320. ## Catch Curve Evaluation Allen, M. S. (1997). Effects of variable recruitment on catch-curve analysis for crappie populations. North American Journal of Fisheries Management, 17(1), 202-205. Griffiths, S. P. (2010). Stock assessment and efficacy of size limits on longtail tuna (Thunnus tonggol) caught in Australian waters. Fisheries Research, 102(3), 248-257. https://doi.org/10.1016/j.fishres.2009.12.004 Oyarz?n, C., Cort?s, N., & Leal, E. (2013). Age, growth and mortality of southern rays bream Brama australis (Bramidae) off the southeastern Pacific coast. Revista de biolog?a marina y oceanograf?a, 48(3). See references in http://derekogle.com/fishR/examples/oldFishRVignettes/CatchCurve.pdf. ## Other Kenchington, T. J. 2014. "Natural mortality estimators for information-limited fisheries." Fish and Fisheries 15 (4): 533-62. https://doi.org/10.1111/faf.12027. Pauly, D. 1980. "On the Interrelationships Between Natural Mortality, Growth Parameters, and Mean Environmental Temperature in 175 Fish Stocks." https://doi.org/10.1093/icesjms/39.2.175. Pauly, D. 1990. Length-converted catch curves and the seasonal growth of fishes. Fishbyte 8(3): 24-29. Powers, J. E. 2014. "Age-specific natural mortality rates in stock assessments: size-based vs. density-dependent." ICES Journal of Marine Science: Journal Du Conseil 71 (7): 1629-37. Sparre, P., Venema, S.C., 1998. Introduction to tropical fish stock assessment. Part 1. Manual. FAO Fisheries Technical Paper, (306.1, Rev. 2). 407 p. Then, Amy Y., John M. Hoenig, Norman G. Hall, and David A. Hewitt. 2015. "Evaluating the prodicitve performance of emiprical estimators of natural mortality rate using information on over 200 fish species." ICES Journal of Marine Science 72 (1): 82-92. https://doi.org/10.1093/icesjms/fst034.