Add Data to OM
To condition our OM with catch-at-age (CAA) and catch-at-length (CAL) data, we create a blank Data object:
Data <- new('Data')
and populate the Year
, CAA
, and CAL
slots with our observed data:
# years - must be length(OM@nyears)
Data@Year <- RealData@Year
# must be the same as OM@maxage
Data@MaxAge <- RealData@MaxAge
# 'real' CAA (can be patchy)
Data@CAA <- RealData@CAA[1,,,drop=FALSE]
# an array with dimensions c(1, OM@nyears, OM@maxage+1)
dim(Data@CAA)
## [1] 1 50 16
# length bins
Data@CAL_bins <- RealData@CAL_bins
Data@CAL_mids <- RealData@CAL_mids
# 'real' CAL (can be patchy)
Data@CAL <- RealData@CAL[1,,,drop=FALSE]
# an array with dimensions c(1, OM@nyears, length(Data@CAL_mids))
dim(Data@CAL)
## [1] 1 50 28
The selectivity pattern for the CAA and CAL data can be added with the Data@Vuln_CAA
and Data@Vuln_CAL
slots:
Data@Vuln_CAA
: Optional vulnerability-at-age schedule for catch-at-age samples. Used to condition OM for closed-loop simulation testing. Replaces the fleet selectivity schedule in the OM used to generate CAA samples. Matrix with dimensions nsim x MaxAge+1 .Data@Vuln_CAL
: Optional vulnerability-at-length schedule for catch-at-length samples. Used to condition OM for closed-loop simulation testing. Replaces the fleet selectivity schedule in the OM used to generate CAL samples. Matrix with dimensions nsim x length(CAL_mids) .
These selectivity patterns are used to generate the CAA and CAL data in the simulation.
Note that in the case of real data, nsim
is always 1 (only one version of the real data!).
We add the Data
object to the cpars
slot:
OM <- new('OM', Albacore, Generic_IncE, Generic_Obs, Perfect_Imp, nsim=4)
OM@cpars$Data <- Data
We also need to add the CAL_bins
to cpars
:
OM@cpars$CAL_bins <- Data@CAL_bins
Condition Simulated Data
The observation model is conditioned on the index data when the historical spool-up period is simulated:
Hist <- Simulate(OM, silent=TRUE)
We can now compare our simulated CAA data with our ‘real’ observed CAA data:
# The CAA data passed to the MPs (first 5 years and 3 age-classes only shown)
Hist@Data@CAA[,1:5,1:3]
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 21 28 21 11 11
## [2,] 21 28 21 11 11
## [3,] 21 28 21 11 11
## [4,] 21 28 21 11 11
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 28 28 39 39 28
## [2,] 28 28 39 39 28
## [3,] 28 28 39 39 28
## [4,] 28 28 39 39 28
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 32 7 39 28 53
## [2,] 32 7 39 28 53
## [3,] 32 7 39 28 53
## [4,] 32 7 39 28 53
# Our 'observed' CAA data (first 5 years and 3 age-classes only shown)
OM@cpars$Data@CAA[,1:5,1:3]
## [,1] [,2] [,3]
## [1,] 21 28 32
## [2,] 28 28 7
## [3,] 21 39 39
## [4,] 11 39 28
## [5,] 11 28 53
# The CAL data passed to the MPs (first 5 years and 3 length-classes only shown)
Hist@Data@CAL[,1:5,1:3]
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0
# Our 'observed' CAL data (first 5 years and 3 length-classes only shown)
OM@cpars$Data@CAL[,1:5,1:3]
## [,1] [,2] [,3]
## [1,] 0 0 0
## [2,] 0 0 0
## [3,] 0 0 0
## [4,] 0 0 0
## [5,] 0 0 0
Note that the effective sample size in the observation model is NOT updated when CAA and CAL data are provided in the OM. That is, Obs@CAA_ESS
, and Obs@CAL_ESS
are not updated.
Obs@CAA_nsamp
and Obs@CAL_nsamp
are updated based on the mean observed sample size for the real data.