ss3-source-code
ss3-source-code copied to clipboard
Document and sim test recruitment dev_vector options
Imported from redmine, Issue #49212 Opened by @RickMethot on 2018-05-11 Status when imported: In Progress
Find while working with Cole Monnahan that the dev_vector approach to the recruitment deviations does not perform well in mceval_phase().
Three alternatives:
- ADMB developers find a fix;
- deprecate use of the dev_vector and add a penalty to the mean deviation to keep it close to 0.0. Feasible because this mean covaries strongly with ln(R0).
- add the mean deviation to ln(R0) before using ln(R0) in the spawner-recruitment relationship; need to be careful about effects on early and forecast recruitments and on recruitments outside of the dev range.
comment from @RickMethot on 2018-04-19: Currently in SS there are two choices for the recruitment devs: 1 #do_recdev: 0=none; 1=devvector; 2=simple deviations
Nearly everyone chooses option #1.
If you choose option #2, then the mean dev can drift off of 0.0, resulting in the realized mean spawner-recruitment relationship being different from the relationship defined by B0 and h.
So, if Johnoel cannot fix ADMB, I need to make recdev option #2 fully functional.
Perhaps by adding a penalty in SS to keep the mean dev close to zero, or do the zero-centering in SS without relying on the ADMB function. For example, keep one element of the vector constant so that all other elements are estimated relative to it, and then to zero-center the resultant vector before using it
Or we could come up with a completely different approach, as I know some of you have advocated in the past. Currently in SS the order of operations for recruitment is:
- Rhat(y)=f(SSB(y), SR_parms); to get the mean relationship.
- Rhat(y)*=exp(environmental effect and regime shifts); environmental influence
- Rhat(y)*=exp(-biasadj(y)*half_sigmaRsq); // bias adjustment
- R(y)=Rhat(y)*mfexp(recdev(y)); // recruitment deviation
You can see these 4 stages of recruitment creation output in the Spawn_Recr section of report.sso.
Given that the recdev vector is expected to be zero-centered, the logL for recruitment is then based entirely on that vector, sigmaR, and rho.
ALTERNATIVE:
- Rhat(y)=f(SSB(y), SR_parms); to get the mean relationship.
- Rhat(y)*=exp(environmental effect and regime shifts); environmental influence
- if(dev_is_estimated) {R(y) = R0 * newdev(y)} else {R(y)=Rhat(y)}
- recdev(y)=ln(R(y)) - ln(Rhat(y)) +biasadj(y)*half_sigmaRsq
then these derived recdevs would serve as the basis for the logL of recruitment.
closely related to #37
This issue really could use a simulation study to demonstrate the performance of the various options under MLE and MCMC. @kellijohnson-NOAA @k-doering-NOAA
related to #37
Isn't there another dec_dev issue that shows this being implemented, but needing performance testing; e.g. a paper.?
@Rick-Methot-NOAA , yes, we closed the other issue (#37) because it seemed to have more text about implementation of the option and we thought the performance testing was captured better by this open issue.