Writing /home/flr-project/www/tyflr/data/cache/f/fa93e8b5ced001a453351e50ea618d57.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/flr-project/www/tyflr/data/cache/f/fa93e8b5ced001a453351e50ea618d57.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/flr-project/www/tyflr/data/cache/f/fa93e8b5ced001a453351e50ea618d57.xhtml failed

FLBRP: Biological Reference Points


Revisions: Laurie Kell (?), 31/05/2009; Ernesto Jardim, 03/08/2010.
Versions: R 2.11.1; FLR 2.3 dev


Estimates biological and economic reference points and equilibrium values; can include stock and recruitment relationships. See Pilling et al (2008) for an exmaple of using FLBRP to calculate biological and economic reference points for mixed fisheries.

Structure

FLBRP contains slots for the expected quantities at age for a given level of F and the biological reference points.

library(FLBRP)
 
## Load the example FLStock object from FLCore
data(ple4)
 
## Create the corresponding FLBRP object
pleBrp<-FLBRP(ple4)

There are various arguments that can be used to set up the FLBRP object.

FLBRP(object, sr = NULL, params = NULL, model = NULL,
      fbar = seq(0, 4, 0.04), nyrs = 3, arithMn = TRUE, na.rm = TRUE)

These arguments are:

sr        :  FLSR object to specify stock recruitment relationship
params    :  FLPar or numeric with SR parameters
model     :  Character string specify SR functional form e.g. "bevholt"
fbar      :  FLQuant or numeric specifying range of F for equilibrium calculations
nyrs      :  Specifies the number of years used to calculate the mean values, e.g. wts-at-age, selection patterns etc. The default value is 3.
arithMn   :  Use arithmetic mean, default is TRUE, if FALSE then uses geometric mean
na.rm     :  Removes NAs when calculating means

The FLBRP class holds slots corresponding to the assumptions about selection patterns, biological parameters. These slots are time invariant and so only have length of 1 along the second dimension. There are also slots for historic observations, equilibrium values, stock recruitment relationships and economics

Slots

The stock recruitment relationship is specified in the two slots, these can be modified directly or set when creating object.

model: Formula specifying the functional form
params: FLPar specifying the parameters

The following slots are average values and can be derived (e.g. from FLStock) from other classes

Weights-at-age

stock.wt:  FLQuant
landings.wt:  FLQuant
discards.wt: FLQuant
catch.wt: FLQuant
bycatch.wt: FLQuant

Biological parameters

m: FLQuant Natural mortality
mat:  FLQuant Proportion mature-at-age
availability: FLQuant proportion of stock byh area
harvest.spwn: FLQuant proproption of fishing mortality before spawning
m.spwn: FLQuant proproption of natural mortality before spawning

Selection pattern is specified for landings and discards

landings.sel: FLQuant
discards.sel: FLQuant

Bycatch mortality

bycatch.harvest: FLQuant

Equilibrium F

fbar: FLQuant values for which n at age calculated

Economic parameters

price: FLQuant price per unit weight at age
fcost: FLQuant fixed costs
vcost: FLQuant variable costs

Historic observations slots, these are the observed values, e.g. derived from the FLStock object used to creat FLBRP object.

fbar.obs:
yield.obs:
catch.obs:
landings.obs:
discards.obs:
rec.obs:
ssb.obs:
profit.obs:

Reference points

refpts: array biological and economic reference points

Methods

These methods calculate quantities of interest from the slots

yield: FLQuant
catch: FLQuant
landings: FLQuant
discards: FLQuant
catch.n: FLQuant catch numbers at age
catch.sel: FLQuant
harvest: FLQuant fishing mortality
stock.n: FLQuant stock numbers at age
landings.n: FLQuant landings numbers at age
discards.n: FLQuant discards numbers at age
rec: FLQuant recruitment
ssb: FLQuant spawning stock biomass
stock: FLQuant biomass
revenue: FLQuant
costs: FLQuant
profit: FLQuant
spr: spawner per recruit e.g. ssb/rec
ypr: yield per recruit yield/rec
spr0: SSB per recruit at F=0
FLBRP: creates new FLBPR object
is.FLBRP: checks object of type FLBRP
computeRefpts: computes reference points and return array
brp: runs both equilibrium and computeRefpts
setPlusGroup: creates new plusgroup whose age is greater than current plus group

Examples

## Selection Patterns
catch.sel(pleBrp)
xyplot(data~age,data=catch.sel(pleBrp),type="l")
 
discards.sel(   pleBrp)
landings.sel(   pleBrp)
bycatch.harvest(pleBrp)
 
## Mass-at-age
stock.wt(   pleBrp)
catch.wt(   pleBrp)
discards.wt(pleBrp)
bycatch.wt( pleBrp)
 
xyplot(data~age,groups=qname,data=FLQuants(swt=stock.wt(pleBrp),cwt=catch.wt(pleBrp)),type="l")
 
## Biological parameters
m(  pleBrp)
mat(pleBrp)
 
xyplot(data~age|qname,data=FLQuants(sel=catch.sel(pleBrp),dsel=discards.sel(pleBrp),
                                    swt=stock.wt(pleBrp), cwt =catch.wt(pleBrp),
                                    mat=     mat(pleBrp), m   =       m(pleBrp))
                                      ,type="l",scale="free")

There are also slots corresponding to the historic observations:

## historic observations
fbar.obs(    pleBrp)
yield.obs(   pleBrp)
landings.obs(pleBrp)
discards.obs(pleBrp)
rec.obs(     pleBrp)
ssb.obs(     pleBrp)
profit.obs(  pleBrp)

The slot 'fbar' has a slightly different structure. This is a vector containing the values of fbar that the equilibrium values are calculated for.

fbar(pleBrp)

Please ignore the fact that the second dimension is labelled 'year'. This is only due to the restrictions placed on labelling dimension of FLQuant objects. The default range of 'fbar' values is from 0 to 4 in steps of 0.04. A user defined range can be specified when the object is created e.g.

pleBrp2 <- FLBRP(ple4,fbar=seq(from = 0, to = 5, by = 0.5))
fbar(pleBrp2)

Fitting

Once an FLBRP object has been created then equilibrium quantities at age and time series can be estimated. We haven't specified a stock-recruitment relationship yet. The default is a mean of value of 1. Specifying alternative relationships is covered below.

Estimates of equilibrium values at each of the values of Fbar in the 'fbar' slot.

## Fishing mortality
harvest(pleBrp)
 
## check that it worked!
sweep(harvest(pleBrp),1,catch.sel(pleBrp),"/")
apply(harvest(pleBrp)[range(pleBrp)[["minfbar"]]:range(pleBrp)[["maxfbar"]],],2,mean)
 
## other estimated quantities-at-age
stock.n(pleBrp)
landings.n(pleBrp)
discards.n(pleBrp)
 
yield(pleBrp)
rec(pleBrp)
ssb(pleBrp)
profit(pleBrp)

Reference Points

As well as calculating equilibrium quantities, you can also calculate reference points based upon these. For example, the yield and spawner per recruit reference points F0.1, Fmax.

There are two main fitting functions:

  1. computeRefpts - calculates reference points and returns them as an array
  2. brp - also calculates reference points and returns an FLBRP object with the reference points in.
## estimate reference points
pleBrp<-brp(pleBrp)
## inspect reference points
refpts(pleBrp)
 
# Alternatively just return the reference points as an array
# you need information on price, just adding 1
pleBrp@price[] <- 1
 
computeRefpts(pleBrp)

Fmsy is the same as Fmax, since the default assumed stock recruitment relationship is mean recruitment. You can plot the reference points and expected quantities over the range of fbar values.

## plot per recruit values
plot(pleBrp)

Defining reference points

There are three ways of defining reference points

  1. By name
  2. Specifying a value
  3. Specifying a ratio

By name

The reference points corresponding to f0.1, fmax, msy and mey are calculated by default. Spawner per recruit ratios can also be calculated using the name in the form spr.xx, where xx coresponds to the percentage of virgin e.g. spr.30 would be 30% of virgin.

computeRefpts(pleBrp)

You can use others e.g. crash

refpts(pleBrp)<-refpts(as.numeric(NA),refpt=c("spr.20"))
computeRefpts(pleBrp)

Specifying a value

Alternatively a single value can be specified (all other ones=NA) and then the corresponding values for all other quantities will be calculated.

refpts(pleBrp)<-refpts(c(.5,NA,NA,NA,NA,NA,NA,NA),refpt=c("mybrp"))
# Check the set up
refpts(pleBrp)
# And calculate
computeRefpts(pleBrp)

It can be useful to plot this against the historical data. First we will modify the stock-recruitment relationship in the FLBRP object so that the mean value is the mean of the historical recruitment. The parameters of the stock-recruitment relationship are held in the 'sr.params' slot. This can be easily modified. For more information on how to specify alternative stock-recruitment relationships, see below.

# Look at current value of the mean stock-recruitment relationship
params(pleBrp)
# Now set the recruitment to the mean value
params(pleBrp)["a",1]<-mean(pleBrp@rec.obs)
# Redo the brp estimation
pleBrp<-brp(pleBrp)
# And plot the results with the historical observations by setting the obs flag to TRUE
plot(brp(pleBrp),obs=TRUE)

Stock Recruitment Relationships

It is possible to include alternative stock recruitment assumptions. Details of the stock-recruitment relationship are found in the 'model' and 'params' slots:

pleBrp <- brp(FLBRP(ple4))
# The SR model
model(pleBrp)
# And the current parameter values
params(pleBrp)

The default stock-recruitment relationship is mean recruitment. It is straightforward to change the value:

 
params(pleBrp)[["a",1]]   <-exp(mean(log(rec.obs(pleBrp))))
pleBrp             <-brp(pleBrp)
plot(pleBrp)

It is sometimes preferable to use a fitted stock-recruitment relationship. First, take a look at the historical data.

## Stock recruitment relationships
plot(ssb.obs(pleBrp),rec.obs(pleBrp),xlim=c(0,max(ssb.obs(pleBrp))),ylim=c(0,max(rec.obs(pleBrp))))
lines(lowess(ssb.obs(pleBrp),rec.obs(pleBrp)))

Now fit a Ricker relationship using FLSR:

## Ricker stock recruitment relationship
ple4.sr.rk       <-as.FLSR(ple4)
model(ple4.sr.rk)<-ricker()
ple4.sr.rk       <-fmle(ple4.sr.rk)
plot(ple4.sr.rk)

Th FLSR object can then be passed directly into the FLBRP creator:

pleBrp.rk          <-FLBRP(ple4,sr=ple4.sr.rk)
# See how the SR slots have been set
model(pleBrp.rk)
params(pleBrp.rk)
# And fit it
pleBrp.rk          <-brp(pleBrp.rk)
plot(pleBrp.rk)

Compare reference points:

## reference points
refpts(pleBrp)
refpts(pleBrp.rk)

Economic reference points

Requires prices and fixed and variable costs

price(pleBrp)[]<-c(1,1,2,2,rep(3,6))
fcost(pleBrp)[]<-200000
vcost(pleBrp)[]<-50000
 
refpts(pleBrp)<-refpts()
computeRefpts(pleBrp)

Monte Carlo Simulation

Here we see how the reference points can vary with uncertainty, for example, in the natural mortality.

data(ple4)
pleBrp<-FLBRP(ple4)
# add missing information on price
price(pleBrp)[]<-c(1,1,2,2,rep(3,6))
 
# Expand along the iteration dimension
pleBrp        <-propagate(pleBrp,iter=100)
# Put some noise on the natural mortality
m(pleBrp)     <-m(pleBrp)*rlnorm(prod(dim(m(pleBrp))),0,0.3)
# Calculate reference points
pleBrp<-brp(pleBrp)
# 'ave a butchers
refpts(pleBrp)
 
# Turn refpts into a dataframe (makes plotting easier)
data<-cbind(expand.grid(dimnames(refpts(pleBrp)[,"harvest",])),val=c(refpts(pleBrp)[,"harvest",]))[,-2]
 
# Feast your eyes on this
histogram( ~ val | refpt,
    data = data,
    xlab = "Fishing Mortality", type = "density",
    panel = function(x, ...) {
        panel.histogram(x, ...)
        panel.mathdensity(dmath = dnorm, col = "black",
                          args = list(mean=mean(x),sd=sd(x)))},
    scale="free", xlim=c(0,.5))

References

Pilling, G.M., Kell, Hutton, T., Bromley, P.J., Tidd A.N. and Bolle L.J., 2008. Can economic and biological management objectives be achieved by the use of MSY-based reference points? A North Sea plaice (Pleuronectes platessa) and sole (Solea solea) case study. ICES Journal of Marine Science: Journal du Conseil 2008 65(6):1069-1080.

brp.txt · Last modified: 08/12/2010 23:12 by ernesto
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0