This is the master function for running metafolio simulations. It runs a single iteration of a simulation. The arguments can be manipulated with other functions in the package to use this function as part of a portfolio analysis.
meta_sim(n_t = 130, n_pop = 10, stray_decay_rate = 0.1,
stray_fraction = 0.02, b = rep(1000, n_pop), spawners_0 = round(b),
sigma_v = 0.7, v_rho = 0.4, a_width_param = c(seq(0.08, 0.04, length.out
= n_pop/2), rev(seq(0.08, 0.04, length.out = n_pop/2))),
optim_temp = seq(13, 19, length.out = n_pop),
max_a = thermal_integration(n_pop), env_type = c("sine", "arma", "regime",
"linear", "constant"), env_params = list(amplitude = 3.2, ang_frequency =
0.2, phase = runif(1, -pi, pi), mean_value = 15, slope = 0, sigma_env = 0.3),
start_assessment = 20, a_lim = c(0.02, 4), b_lim = c(0.5, 1.5),
silence_warnings = TRUE, sigma_impl = 0.1, assess_freq = 10,
use_cache = FALSE, cache_env = FALSE, add_straying = TRUE,
add_impl_error = TRUE, skip_saving_cache = FALSE, decrease_b = 0,
debug = FALSE)The number of years.
Number of populations
Rate that straying (exponentially) decays with distance.
Fraction of fish that stray from natal streams.
Ricker density-dependent parameter. A vector with one numeric value per population.
A vector of spawner abundances at the start of the simulation. Length of the vector should equal the number of populations.
Stock-recruit residual standard deviation of the log-deviations.
AR1 serial correlation of stock-recruit residuals.
Width of the thermal curves by population.
Optimal temperatures by population.
Maximum Ricker productivity parameters (a)
by population. The value obtained at the optimum
temperature. Note how the default argument uses the
thermal_integration function.
The type of environmental time series to
generate. One of "sine", "arma",
"regime", "linear", or "constant".
See generate_env_ts.
Parameters to pass on to
generate_env_ts. You must provide the
appropriate list given your chosen type of environmental
signal.
Generation to start estimating
the stock recruit relationship for escapement targets.
The assessment is carried out using
fit_ricker.
A vector of length two giving the lower and upper limits for Ricker a values. If a value is estimated beyond these limits it will be set to the limit value.
A vector of length two giving the lower and upper limits for the estimated Ricker b values *as fractions* of the previously assessed value. If a value is estimated beyond these limits it will be set to the limit value.
Should the warnings be skipped if
the Ricker a or b values exceed their specified bounds?
meta_sim will still print other warnings
regardless of this argument value.
Implementation standard deviation for the implementation error beta distribution.
How many generations before re-assessing Ricker a and b parameters.
Use the stochastically generated values (stock-recruit residuals and possibly environmental time series) from the previous run? See the Details section below.
Logical: Should the environmental time
series be cached? If use_cache = TRUE then this
will automatically happen. But, you could set
cache_env = TRUE and use_cache = FALSE to
only cache the environmental time series. See the Details
section below.
Implement straying between populations?
Add implementation error?
Implementation error is derived using
impl_error.
A numeric value to decrease all streams by each generation. This is intended to be used to simulate habitat loss, for example though stream flow reduction with climate change.
Logical: if TRUE then no
data will be cached for the next iteration. This will
save time when running many simulations.
Logical: if TRUE then meta_sim
will print a number of debugging statements while it
runs.
A list is returned that contains the following elements. All matrices that are returned (except the straying matrix) feature populations along the columns and generations/years along the rows.
AA matrix of abundances.
FA matrix of fishing mortality in numbers.
EA matrix of realized escapement.
EpsA matrix of (log) spawner-return residuals. These have been log-normal bias corrected so their expected value after exponentiation will be one.
A_paramsA matrix of actual Ricker a parameters.
Strays_leavingA matrix of strays leaving.
Strays_joiningA matrix of strays joining.
env_tsA vector of the environmental time series.
stray_matThe straying matrix. These fractions are constant across generations/years. Rows and columns are populations.
n_popThe total possible populations as input in the simulation.
n_tThe number of generations/years the simulation was run for.
bThe original Ricker b values as specified.
Est_aA matrix of estimated Ricker a values.
Est_bA matrix of estimated Ricker b values.
To use either of the caching options, you must have run
meta_sim at least once in the current session with
both caching arguments set to FALSE to generate the
cached values first. If you're running many iterations of
meta_sim and you want to cache, then the first
iteration should have both cache arguments set to
FALSE, and subsequent runs can set one or both to
TRUE. Internally, meta_sim caches by writing
the appropriate data to an .rda file in a temporary
directory.
# NOT RUN {
arma_env_params <- list(mean_value = 16, ar = 0.1, sigma_env = 2, ma = 0)
base1 <- meta_sim(n_pop = 10, env_params = arma_env_params,
env_type = "arma", assess_freq = 5)
plot_sim_ts(base1, years_to_show = 70, burn = 30)
# }
Run the code above in your browser using DataLab