ExampleStock <- Stock("Example Stock",
CommonName = "Albacore",
Species = "Thunnus alalunga"
)6 Build a Stock Object
A Stock object contains information related the biological characteristics of a stock, including growth and maturity schedules, natural mortality rates, stock-recruitment relationship, and other information relating to spatial distribution and movement patterns (see ?Stock for more details).
Here an example Stock object is created using an expert judgment approach, where most parameters are stochastic and sampled from uniform distributions.
The stock is loosely based on albacore Thunnus alalunga and should only be considered an example for demonstration purposes.
In Chapter 9, this Stock object is added to the OM object created in the previous chapter.
6.1 Create a new Stock Object
The Stock() function is used to create new Stock objects:
In addition to Name, CommonName, and Species that were specified in the call to the Stock() function, Stock objects contain several other sub-objects that need to be populated:
The sub-objects in italics are optional, see the relevant chapters for each object for details. The other sub-objects must be populated to complete the Stock object.
The following sections describe the process to build these objects for the ExampleStock object.
Help documentation can be accessed for all openMSE objects and functions, e.g.,
?OM
?Stock
?Ages
?Length
# etc6.2 Ages
An Ages object contains information relating to the age structure of the stock. The Ages() function is used to create an Ages object for ExampleStock . The primary information required for an Ages object is the maximum age class:
Ages(ExampleStock) <- Ages(MaxAge = 20)By default, the maximum age is used as a plus-group (PlusGroup=TRUE).
The default behaviour is to set the minimum age-class to 0:
Classes(ExampleStock) [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
This can be changed by setting a positive integer value for the MinAge argument in the call to Ages(). See Chapter 11 for more details on the Ages object.
6.3 Length
The Length object describes the mean length-at-age schedule and how length-at-age is distributed around the mean.
The two key pieces of information stored in the Length object are:
-
MeanAtAge: the mean length-at-age schedule for each simulation and year; -
CVatAge: the coefficient of variability for the distribution of length-at-age, which can be either normally (Dist='normal') or log-normally (Dist='lognormal') distributed aroundMeanAtAge.
Internally, both MeanAtAge and CVatAge will be 3-dimensional arrays with dimensions containing values for each simulation, age-class, and historical and projection time step (typically years). However, the openMSE objects have been designed such that users only need to enter the minimal information to populate the model.
In this example, the values for MeanAtAge are defined by means of a list of named parameters (Pars) for a built-in growth function (vonBert):
The parameters for the vonBert function and the values for CVatAge are entered as lower and upper bounds of a uniform distribution. Internally, nSim values for the Linf, K, and t0 parameters will be sampled from uniform distributions, and these used to calculate the values for MeanAtAge. Similarly, nSim values will be sampled for CVatAge and used within each simulation as a constant value over all simulations and time steps.
There are many other ways to populate Length objects, including sampling from non-uniform distributions and having values vary over time.
See Chapter 17 for more details on the Length object.
6.4 Weight
The Weight object contains information related to the weight-at-age and/or the length-weight relationship. In this example, an allometric length-weight relationship with parameters alpha and beta is specified, with values that are constant over all simulations and time-steps:
Weight(ExampleStock) <- Weight(
Pars = list(
alpha = 1.34E-05,
beta = 3.106
)
)Internally, these alpha and beta parameters values will be used together with the information contained in the Length object to calculate the mean weight-at-age (MeanAtAge) for this stock.
Chapter 25 has more details on the Weight object.
6.5 NaturalMortality
The NaturalMortality object contains information relating to the natural mortality rate for each age-class and time step:
In this example, M is assumed to be constant across all age-classes and years, and is specified as a named parameter in the Pars list, with the values indicating lower and upper bounds of a uniform distribution.
Chapter 19 has more details on the NaturalMortality object.
6.6 Maturity
Maturity objects contain information related to the probability that a specific age- and/or length-class is mature. This example uses a 2-parameter logistic function to specify the probability of maturity-at-length, once again using lower and upper bounds of a uniform distribution to account for uncertainty:
In this example, parameters in Pars are used to calculate MeanAtLength , which is then used together with the age-length key described in the Length object to calculate the values for MeanAtAge .
Chapter 18 has more details on the Maturity object.
6.7 Fecundity
The Fecundity object contains information describing the fecundity (e.g., egg production) -at-age schedule.
Fecundity is optional in a Stock object. If it is missing, fecundity-at-age is assumed to be equal to spawning biomass-at-age (i.e., maturity-at-age multiplied by weight-at-age).
This ExampleStock object follows this assumption and leaves the Fecundity object empty.
Chapter 14 has more details on the Fecundity object.
6.8 SRR
SRR objects describe the relationship between spawning production and resulting recruitment. The SRR object also contains data on unfished recruitment (R0), and the recruitment deviations for the historical and projection years.
This example uses the Beverton-Holt stock-recruit model (specified by the named parameter h in Pars; see SRRModels() for other options):
In this example, R0 is specified as a single value, indicating that it is constant over all simulations and years. SD and AC are specified as stochastic parameters from a uniform distribution, representing the standard deviation and the lag-1 autocorrelation respectively of the log-normally distributed process errors.
Chapter 23 has more details on the SRR object.
6.9 Spatial
Spatial objects are only required if an OM has spatial structure. If an OM does not require spatial structure, Spatial can be left empty.
This example assumes a 2-area model, with Area-1 representing about 10% of the total area (RelativeSize), and about 10% of the unfished stock in Area-1 (UnfishedDist), with at least 20% probability of individuals in Area-1 remaining in the area in any given time step (ProbStaying):
There are many other ways to specify spatial structure for a stock, including any number of spatial areas and age- and time-dependent movement. See Chapter 22 for more details on the Spatial object.
6.10 Depletion
The final object to be added to ExampleStock is a Depletion object. This object is used to set the Initial or Final depletion values in the first and last historical years respectively.
By default, operating models initialize stocks in the first historical year assuming dynamic unfished conditions. The Initial depletion value is used to override this assumption and set the the age-structure in the initial historical year to match some user-specified depletion level.
Final is used to force the model to achieve user-specified depletion level in the terminal historical year. This is generally only required when users have no knowledge of the depletion of the stock (e.g., a data-limited fishery) and wish to test a range of plausible scenarios.
If a value is set for Final , the model will optimize for the Catchability value that, given the stock’s exploitation history (see Chapter 7 and Chapter 15) such that the depletion in the terminal historical year matches the user-specified value.
If neither Initial or Final depletion values are required, the Depletion object can be left empty. It is not required in most cases where an OM is conditioned (?sec-om_condition) or imported (?sec-om_import ).
In this example, current depletion (defined as \(\frac{B}{B_0}\) in this case) is assumed to be completely unknown, and a wide range of values are considered plausible:
Depletion(ExampleStock) <- Depletion(
Final = c(0.05, 0.6),
Reference = "B0"
)Chapter 13 has more details on the Depletion object.
