[codex] Add three-parameter double logistic selectivity - #1436
Conversation
🎨 Chore: code formatting workflowOur automated workflows cannot run on forks because of permission issues, and thus, we ask that you run the following code locally and push any changes that are created to your feature branch. You will only be reminded of this once per PR. Thank you! Format C++ code
Format R code
styler::style_pkg() # Style R code
roxygen2::roxygenise() # Update documentation
styler::style_pkg() # Style R code again
roxygen2::roxygenise() # Update documentation again
usethis::use_tidy_description() # Style DESCRIPTION filePush changes
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1436 +/- ##
==========================================
+ Coverage 82.97% 88.40% +5.42%
==========================================
Files 54 85 +31
Lines 2214 8613 +6399
Branches 578 581 +3
==========================================
+ Hits 1837 7614 +5777
- Misses 277 965 +688
+ Partials 100 34 -66 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@jimianelli sorry that it has taken me so long to get to this PR. I am wondering if you can outline the benefits of the three-parameter curve compared to the four-parameter curve that we already have implemented? |
one-fewer parameter, and each remaining parameter has better interpretation for establishing prior distributions. |
|
also, unclear how this PR relates to the example app I set up in https://jimianelli.github.io/ebswp_fims/qmd/fims-implementation.html |
what do you mean by the above? |
just if you're seeking example applications, I could update it with the latest version, but if no interest that's fine too! |
|
@iantaylor-NOAA @ericward-noaa @MOshima-PIFSC @JonBrodziak @peterkuriyama-NOAA @alexjensen-NOAA @dgoethel-noaa @grantdadams @emilyliljestrand @timjmiller @erikhwilliams @nathanvaughan-NOAA thoughts on the 3-parameter double-logistic selectivity curve provided here? I am more than happy to update the PR and work with Jim to bring it in but I think we should decide (vote) as a group if we want to bring this in. Please use the thumbs up or thumbs down on this comment to let me know your preference. |
|
If it's an easy add, why not! If no stock is going to use it, maybe we prioritize something else. |
|
Adding it is pretty easy given Jim provided all the code. What I am trying to prevent is the ongoing maintenance of stuff that is not widely used. I do think it is a good start towards adding functionality in selectivity, which we desperately need but I am not sure if a curve that we already have, just parameterized in a different way, is what the team wants. |
|
It would be nice to recommend a small set of flexible selectivity curves which can fit most users needs, but in order to do the research exploring the options, we need to have any good candidates built into an assessment model. I think that there's relatively little cost to including a larger set of selectivity options in FIMS and the benefits of having FIMS be the platform used to explore the options likely outweigh that cost. I'll note that Mark Maunder also made a compelling argument in favor of a "Double Richards" selectivity at the 2026-04-07 UW Think Tank (starting at 29:22 in this recording https://www.youtube.com/watch?v=2qzct5y5LA0&t=1762s): I would be interested in trying both. I don't see a need to map over selectivity options from other models (e.g. double-normal from SS3) as long as the alternatives in FIMS are able to achieve similar-enough shapes and there's a compelling reason why they might be better. |
|
I should add that if we add two parameterizations of the same selectivity option, or two similarly flexible selectivity options, we should commit to doing enough explorations to see which performs better (e.g. less parameter confounding, better posterior convergence, or whatever) and then deprecate or remove whichever options don't perform as well. |
Summary
Validation
Instructions for code reviewer
👋Hello reviewer👋, thank you for taking the time to review this PR!
nit:(for nitpicking) as the comment type. For example,nit:I prefer using adata.frame()instead of amatrixbecause ...This PR is now ready to be merged.Checklist