nmfs-ost / ss3-source-code

The source code for Stock Synthesis (SS3).
https://nmfs-ost.github.io/ss3-website/
Creative Commons Zero v1.0 Universal
36 stars 16 forks source link

[Feature]: 10+ multiyear average F_std_scaling; with change to log(ratio) approach #586

Closed HaikunXu closed 4 months ago

HaikunXu commented 4 months ago

Describe the solution you would like.

After considering thealternatives listed below, a third approach has been implemented: 120.1 # F_std_scaling: 0=no scaling; 1=F/Fspr; 2=F/Fmsy; 3=F/Fbtgt; where F means annual F_std, Fmsy means F_std@msy; values >=11 invoke N multiyr using 10s and 100s digit; append .1 to invoke log(ratio) This approach breaks backward compatibility for anyone previously using values >100 to invoke log(ratio), but other proposed approaches also broke compatibility or introduced more complexity to the algorithm.

Describe alternatives you have considered

2 # F_std_scaling: 0=no scaling; 1=F/Fspr; 2=F/Fmsy; 3=F/Fbtgt; where F means annual F_std, Fmsy means Fstd@msy; values >=11 invoke N multiyr (up to 9!) using 10's digit; >100 invokes log(ratio); < -100 invoke N multiyr (more than 9) using 100’s and 10's digits to choose the years to average; < -1000 invoke log(ratio)_

2 # F_std_scaling: 0=no scaling; 1=F/Fspr; 2=F/Fmsy; 3=F/Fbtgt; where F means annual F_std, Fmsy means Fstd@msy; values >=11 invoke N multiyr (up to 9!) using 10's digit; >100 invokes log(ratio); **< -1000 invoke N multiyr (more than 9) using 1000’s and 100's digits (could use more than two digits for 100+ years) to choose the years to average; the 10’s digit informs whether to use log (1) or not (0)_**

Statistical validity, if applicable

No response

Describe if this is needed for a management application

We need to estimate the std of F/FMSY for a 12-year window for management purposes.

Additional context

No response

Rick-Methot-NOAA commented 4 months ago

I do not see a way to do this without breaking backwards compatibility for the log(ratio). How about moving the log flag to the decimal? enter 132.1 where the leading 13 would translate to 13 years the 2 would invoke f/fmsy and the .1 would invoke log(ratio).

adding @chantelwetzel-noaa for comment.

HaikunXu commented 4 months ago

Hi Rick,

Your proposed specification looks reasonable to me.

Rick-Methot-NOAA commented 4 months ago

Option looks like: 120.1 # F_std_scaling: 0=no scaling; 1=F/Fspr; 2=F/Fmsy; 3=F/Fbtgt; where F means annual F_std, Fmsy means F_std@msy; values >=11 invoke N multiyr using 10s and 100s digit; append .1 to invoke log(ratio)