dbsra | R Documentation |
This function estimates MSY from catch following Dick and MAcCall (2011).
dbsra(year = NULL, catch = NULL, catchCV = NULL,
catargs = list(dist = "none", low = 0, up = Inf, unit = "MT"),
agemat = NULL, maxn=25, k = list(low = 0, up = NULL, tol = 0.01, permax = 1000),
b1k = list(dist = "unif", low = 0, up = 1, mean = 0, sd = 0),
btk = list(dist = "unif", low = 0, up = 1, mean = 0, sd = 0, refyr = NULL),
fmsym = list(dist = "unif", low = 0, up = 1, mean = 0, sd = 0),
bmsyk = list(dist = "unif", low = 0, up = 1, mean = 0, sd = 0),
M = list(dist = "unif", low = 0, up = 1, mean = 0, sd = 0), nsims = 10000,
catchout = 0, grout = 1,
graphs = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
grargs = list(lwd = 1, cex = 1, nclasses = 20, mains = " ", cex.main = 1,
cex.axis = 1,
cex.lab = 1), pstats = list(ol = 1, mlty = 1, mlwd = 1.5, llty = 3, llwd = 1,
ulty = 3, ulwd = 1),
grtif = list(zoom = 4, width = 11, height = 13, pointsize = 10))
year |
vector containing the time series of numeric year labels. |
catch |
vector containing the time series of catch data (in weight). Missing values are not allowed. |
catchCV |
vector containing the time series of coefficients of variation associated with catch if resampling of catch is desired; otherwise, catchCV = NULL. |
catargs |
list arguments associated with resampling of catch. |
agemat |
median age at entry to the reproductive biomass. |
maxn |
the maximum limit of the Pella-Tomlinson shape parameter that should not be exceeded in the rule for accepting a run. |
k |
list arguments for estimation of |
b1k |
list arguments for B1/K, the relative depletive level in the first year.
|
btk |
list arguments for Bt/K, the relative depletive level in a specific reference year ( |
fmsym |
list arguments for Fmsy/M. |
bmsyk |
list arguments for Bmsy/k. |
M |
list arguments for natural mortality. |
nsims |
number of Monte Carlos samples. |
catchout |
if catch is resampled, output the time series from every MC sample to a .csv file. 0 = no (default), 1 = yes. |
grout |
numeric argument specifying whether graphs should be printed to console only (1) or to
both the console and TIF graph files (2).Use |
graphs |
vector specifying which graphs should be produced. 1 = line plot of observed catch versus
year, 2 = histogram of plausible (accepted) |
grargs |
list control arguments for plotting functions. |
pstats |
list control arguments for plotting the median and 2.5
and management quantities on respective graphs. |
grtif |
list arguments for the .TIF graph files. See |
The method of Dick and MAcCall (2011) is used to produce estimates of MSY where only catch and information on resilience and current relative depletion is known.
The delay-difference model is used to propogate biomass:
B[t+1]<-B[t]+P[Bt-a]-C[t]
where B[t]
is biomass in year t, P[Bt-a]
is latent annual production based
on parental biomass agemat
years earlier and C[t]
is the catch in year
t. Biomass in the first year is assumed equal to k
.
If Bmsy/k>=0.5, then P[t] is calculated as
P[t]<-g*MSY*(B[t-agemat]/k)-g*MSY*(B[t-agemat]/k)^n
where MSY is k*Bmsy/k*Umsy, n is solved iteratively using the equation, Bmsy/k=n^(1/(1-n)), and g is (n^(n/(n-1)))/(n-1). Fmsy is calculated as Fmsy=Fmsy/M*M and Umsy is calculated as (Fmsy/(Fmsy+M))*(1-exp(-Fmsy-M)).
If Bsmy/k < 0.5, Bjoin is calculated based on linear rules: If Bmsy/k<0.3, Bjoin=0.5*Bmsy/k*k If Bmsy/k>0.3 and Bmsy/k<0.5, Bjoin=(0.75*Bmsy/k-0.075)*k
If any B[t-a]<Bjoin, then the Schaefer model is used to calculated P:
P[Bt-agematt<Bjoin]<-B[t-agemat]*(P(Bjoin)/Bjoin+c(B[t-agemat]-Bjoin))
where c =(1-n)*g*MSY*Bjoin^(n-2)*K^(-n)
Biomass at MSY is calculated as: Bmsy=(Bmsy/k)*k
The overfishing limit (OFL) is Umsy*B[termyr].
length(year)+1
biomass estimates are made for each run.
The rule for accepting a run is: if(min(B)>0 && max(B)<=k &&
(objective function minimum<=tol^2) && abs(((max(B)-k)/k)*100)<=permax && n<=maxn
If using the R Gui (not Rstudio), run
graphics.off() windows(width=10, height=12,record=TRUE) .SavedPlots <- NULL
before running the dbsra function to recall plots.
Initial |
dataframe containing the descriptive statistics for each explored parameter. |
Parameters |
dataframe containing the mean, median, 2.5th and 97.5 of the plausible (accepted: likelihood(ll)=1) parameters. |
Estimates |
dataframe containing the mean, median, 2.5th and 97.5 of the management quantities (i.e., MSY, Bmsy, etc.) from the plausible parameters (likelihood=1) |
Values |
dataframe containing the values of likelihood, k, Bt/k, Bmsy/k, M and associated management quantities for all (likelihood=0 and likelihood=1) random draws. |
agemat |
agemat for use in function |
end1yr |
value of the last year of catch data + 1 for use in function |
type |
designates the output object as a |
The biomass estimates from each simulation are not stored in memory but are automatically
saved to a .csv file named "Biotraj-dbsra.csv". Yearly values for each simulation are stored across
columns. The first column holds the likelihood values for each simulation (1= accepted, 0 = rejected).
The number of rows equals the number of simulations (nsims
). This file is loaded to plot
graph 13 and it must be present in the default or setwd()
directory.
When catchout
=1, catch values randomly selected are saved to a .csv file named "Catchtraj-dbsra.csv".
Yearly values for each simulation are stored across columns. The first column holds the likelihood
values (1= accepted, 0 = rejected). The number of rows equals the number of simulations (nsims
).
Use setwd()
before running the function to change the directory where .csv files are stored.
The random distribution function was adapted from Nadarajah, S and S. Kotz. 2006. R programs for computing truncated distributions. Journal of Statistical Software 16, code snippet 2.
Gary A. Nelson, Massachusetts Division of Marine Fisheries gary.nelson@mass.gov
Dick, E. J. and A. D. MacCall. 2011. Depletion-based stock reduction analysis: a catch-based method for determining sustainable yield for data-poor fish stocks. Fisheries Research 110: 331-341.
catchmsy
dlproj
## Not run:
data(cowcod)
dbsra(year =cowcod$year, catch = cowcod$catch, catchCV = NULL,
catargs = list(dist="none",low=0,up=Inf,unit="MT"),
agemat=11, k = list(low=100,up=15000,tol=0.01,permax=1000),
b1k = list(dist="none",low=0.01,up=0.99,mean=1,sd=0.1),
btk = list(dist="beta",low=0.01,up=0.99,mean=0.4,sd=0.1,refyr=2009),
fmsym = list(dist="lnorm",low=0.1,up=2,mean=-0.223,sd=0.2),
bmsyk = list(dist="beta",low=0.05,up=0.95,mean=0.4,sd=0.05),
M = list(dist="lnorm",low=0.001,up=1,mean=-2.90,sd=0.4),
nsims = 10000)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.