-
Notifications
You must be signed in to change notification settings - Fork 1
Observation error model
The Observation Error Model (OEM) defines the methods for the observation of the system. This includes observations of commercial catches catches and scientific surveys, but more fundamentally also defines the overall structure of the system as required by the Management Procedure (MP). If management resolves fleets, then the OEM returns stock biological information (in the form of FLBiols) and fleet catch information (in the form of FLFisheries) separately. If fleets are not resolved (as is the case for 99% of MPs), then the biological and catch information are combined in to a single structure (FLStocks).
We've already introduced the general structure of the OEM input object here, but we now want to break down what each of these inputs and arguments mean. The input OEM object is an FLR object FLoem that defined by the mse package, but has a neat layout that satisfies the requirements for MixME - so we use it here!
MixME makes use of three key slots in the FLoem object:
- observations
- deviances
- args
It's worth taking some time to take a closer look at each of these slots. We need to explore both the required structure for the inputs to each slot and the effect that each argument has on the behaviour of the OEM.
The observations slot of the OEM contains elements for stocks (stk) and indices (idx).
Scientific survey indices may be age-structured or a lump of biomass.
The deviances slot of the OEM contains the pre-sampled observation error for stock catch and survey observations. This pre-sampling of error is convenient because it means that stochastic simulations are repeatable for the same set of inputs.
In a typical Management Strategy Evaluation, catch and survey observations will be with observation error. However, you might want to carry out more exploratory simulations that do not have this layer of complexity.
This is a logical argument. If TRUE, then a user-supplied OEM observation object is populated with observed historical landings and discards (and hence overall catches). If FALSE, then the observation structure is directly derived from the Operating Model (OM).
There are two possible inputs to use_stk_oem. The input is either an unnamed logical element or a vector where there is a named logical element for each observed stock. The value of specifying the input for each stock individually is that some stocks can take a user-suppled OEM observation object whilst others are derived from the OM. If an unnamed logical element is supplied, MixME applies this selection to each stock.
The value of supplying an OEM observation structure is that biological parameters (individual stock, landings and discards mean weights-at-age, proportion mature-at-age, and instantaneous natural mortality-at-age), which are not dynamically observed within the simulation, can differ from the true parameter values.
Note
Supplying an OEM observation structure is currently the only way of specifying an FLStock observation structure. If the observation structure is derived from the OM, then an FLBiol and FLFisheries is created.
This is a logical argument. If TRUE, then user-supplied catch observation error is applied to Operating Model catches. If FALSE, then no observation error is applied. There are two possible inputs: either an unnamed logical element or a vector where there is a named logical element for each observed stock. If an unnamed logical element is supplied, MixME applies this selection to each stock.
This is a logical argument. If TRUE, then user-supplied survey index observation error is applied to simulated survey indices. If FALSE, then no observation error is applied. There are two possible inputs: either an unnamed logical element or a vector where there is a named logical element for each observed stock. If an unnamed logical element is supplied, MixME applies this selection to each stock.
This is a logical argument. If TRUE, then catch weights are updated from the Operating Model. This is important if changes in fleet activity or overquota discarding leads to changes in the individual mean landings and discards weights at age, which are not reflected in the user-supplied OEM observation object.
There are two possible inputs: either an unnamed logical element or a vector where there is a named logical element for each observed stock. If an unnamed logical element is supplied, MixME applies this selection to each stock.
Note
The value of use_om_weights is if you want to use an FLStock observation structure and perfect observations of landings and discards weights, but potentially observations with error of other stock properties. If the observation structure is taken from the OM, catch weights are automatically up-to-date.
This is a named list with an element for each observed stock. Each element is numeric and describes the observation lag for catches. This is given as the index of the final data year relative to assessment year (e.g. assessment year is 0, assessment year - 1 = -1, assessment year - 2 = -2, ...).
This is a named list with an element for each observed stock. Each element is a numeric vector with elements for each survey index. The order of survey indices in this vector follows the order of surveys given in the survey observations slot for each stock. Like catch_timing, this is an index of the final data year relative to the assessment year (e.g. assessment year is 0, assessment year - 1 = -1, assessment year - 2 = -2, ...).
The OEM is applied iteratively over each stock. This imposes the constraint that observations of one stock cannot depend on the observations of another stock. This assumption is probably fine for the vast, vast majority of mixed fisheries MSE.
Depending on the input arguments, stock observations are generated and coerced into either a user-supplied OEM observation structure or an observation structure that is derived from the operating model. The specific methods used to generate stock and survey observations are largely adapted from WKNSMSE (2019).
The processing steps are:
- extract stock landings and discards numbers for each fleet from the OM
- (optional) update discard and catch individual mean weights at age from the OM
- (optional) apply fleet-specific catch observation error and calculate total landings and discards numbers
- trim the
FLStockto the period for which we have catch or survey data (defined by catch_timing and idx_timing)
Note
Catch observation uncertainty impacts both landings and discards numbers, but the fraction of catch that is landed is assumed to unbiased (unaffected by observation error). This is a fairly strong assumption.
Caution
This is not currently implemented in MixME.
The processing steps are:
- extract stock and fleets data from the OM
- trim the
FLBiolandFLFisheriesto the period for which we have catch or survey data (defined by catch_timing and idx_timing)
Important
Catch observation error is not currently applied.
The process steps are:
- calculate index observations based on updated values in the OM
- (optional) apply survey-specific index observation error
- trim the
FLIndicesto the period for which we have survey data (defined by idx_timing)
The output from the observation error model is a named list with the elements:
- stk: a named
listwith an element for each stock.FLStockorFLBiolobject - flt: (optional) a named
listwith an element for each stock. Each element is anFLFisheriesobject. AlternativelyNULL - idx: (optional) a named
listwith an element for each stock. Each element is anFLIndicesobject. AlternativelyNULL
Tutorials
- Conditioning a simple single-stock Operating Model
- Conditioning a simple mixed fishery Operating Model
- Exploring simulation outputs
- Management - Constant fishing mortality
- [Management - Empirical harvest control rule]
- [Management - Model-based harvest control rule]
User Manual
- Introduction to MixME
- MixME simulation loop
- [Operating model]
- Observation error model
- [Stock estimation module]
- [Harvest control rule module]
- [Advice implementation module]
- Forward projection module
Technical Manual
MixME Development