Description Usage Arguments Value Which arguments to specifiy in case files Author(s) See Also Examples
View source: R/sample_agecomp.R
Extract age-composition data from a .ss_new
data file and sample
the data. It is assumed that the composition data will be expected values
as written by Stock Synthesis in the second section of the data file, but
one can also sample input data. The resulting age-composition
data are assumed to represent observed age composition and will overwrite
the age data in dat_list
, which is returned invisibly.
The data file can also be written to the disk, if a file path is provided to
outfile
, and used as simulated data by an estimation model.
If used with run_ss3sim
, the case file should be named
agecomp
. A suggested (default) case letter is D
for data.
1 2 | sample_agecomp(dat_list, outfile = NULL, fleets, Nsamp, years,
cpar = 1, ESS = NULL, keep_conditional = TRUE)
|
dat_list |
An SS data list object as read in from
|
outfile |
A character string specifying the file name to use
when writing the information to the disk. The string must include
the proper file extension. No file is written using the default value
of |
fleets |
*A vector of integers specifying which fleets to include.
The order of the fleets pertains to the input order of other arguments.
An entry of |
Nsamp |
*A numeric list of the same length as |
years |
*A list the same length as |
cpar |
A numeric value or vector the same length as
|
ESS |
The final effective sample size (ESS) associated with the
simulated data. The ESS is not used to generate the simulated data
but can be used as an input sample size in subsequent models that estimate
population parameters or status.
The default, |
keep_conditional |
A logical if conditional age-at-length data
should be kept or removed entirely from the data file.
|
A modified .dat
file if !is.null(outfile)
. A list object
containing the modified .dat
file is returned invisibly.
All function argument descriptions that start with an asterisk (*) will be passed
through the case files to run_ss3sim
. If one of these arguments
is not specified in a case file, then a value of NULL
will be passed,
which may or may not be an appropriate value. Other arguments will be ignored
if specified.
Cole Monnahan and Kotaro Ono
Other sampling functions: clean_data
,
sample_calcomp
, sample_index
,
sample_lcomp
, sample_mlacomp
,
sample_wtatage
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 | d <- system.file("extdata", package = "ss3sim")
f_in <- file.path(d, "models", "cod-om", "codOM.dat")
dat_list <- r4ss::SS_readdat(f_in, version = NULL, verbose = FALSE)
## Turn off age comps by specifying fleets=NULL
test <- sample_agecomp(dat_list = dat_list, fleets = NULL)
## Generate with a smaller number of fleet taking samples
ex1 <- sample_agecomp(dat_list = dat_list, outfile = NULL,
fleets = 2, Nsamp = list(c(10, 50)), years = list(c(26, 27)))
NROW(ex1$agecomp) == 2
## Generate with varying Nsamp by year for first fleet
ex2 <- sample_agecomp(dat_list = dat_list, outfile = NULL,
fleets = c(1, 2),
Nsamp = list(c(rep(50, 5), rep(100, 5)), 50),
years = list(seq(26, 44, 2), c(26:100)))
## Run three cases showing Multinomial, Dirichlet(1), and over-dispersed
## Dirichlet for different levels of sample sizes
op <- par(mfrow = c(1, 3))
set.seed(1)
true <- prop.table(dat_list$agecomp[
dat_list$agecomp$FltSvy == 1 & dat_list$agecomp$Yr == 50, -(1:9)])
cpars <- c(NA, 1, 4)
for (samplesize in c(30, 100, 1000)) {
if (samplesize > 30) par(mar = c(5.1, 1, 4.1, 2.1))
plot(dat_list$agebin_vector, true, type = "b", ylim = c(0, 1),
col = 4, lwd = 2, xlab = "Age",
ylab = ifelse(samplesize == 30, "Proportion", ""),
main = paste("Sample size =", samplesize))
if (samplesize == 30) {
legend("topright", lty = 1, col = 1:4, bty = "n",
legend = c("Multinomial", "Dirichlet(1)", "Dirichlet(4)", "Truth"))
}
for (i in seq_along(cpars)) {
ex <- sample_agecomp(dat_list = dat_list, outfile = NULL, fleets = 1,
Nsamp = list(samplesize), years = list(50), cpar = cpars[i])$agecomp
lines(dat_list$agebin_vector, prop.table(ex[1, -(1:9)]),
col = i, type = "b")
}
}
par(op)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.