From 968f09936616127a7ee4327386483b60446688ee Mon Sep 17 00:00:00 2001 From: MOshima-PIFSC Date: Fri, 16 Feb 2024 20:51:52 +0000 Subject: [PATCH] Built site for ss3diags: 2.1.1@ed50986 --- articles/Jitter.html | 2 +- articles/Retrospective-Analysis.html | 2 +- articles/aspm.html | 2 +- articles/likelihood.html | 2 +- .../figure-html/unnamed-chunk-6-1.png | Bin 93402 -> 92874 bytes pkgdown.yml | 2 +- reference/SSplotJABBAres.html | 2 +- reference/SSplotModelcomp.html | 2 +- reference/SSplotRunstest.html | 2 +- reference/SSrunstest.html | 2 +- search.json | 2 +- 11 files changed, 10 insertions(+), 10 deletions(-) diff --git a/articles/Jitter.html b/articles/Jitter.html index b6898f6..70ddc30 100644 --- a/articles/Jitter.html +++ b/articles/Jitter.html @@ -137,7 +137,7 @@

Model inputsget_ss3_exe().

 r4ss::get_ss3_exe(dir = dir_jitter, version = "v3.30.21")
-#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpVmtrIM/jitter/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmp6Xyarr/jitter/ss3

We will run the model in dir_jitter first to produce the necessary output files. It is recommended to do jitter runs in a subdirectory of your model run. This will keep all of the output files diff --git a/articles/Retrospective-Analysis.html b/articles/Retrospective-Analysis.html index 1051f53..b7e7f9b 100644 --- a/articles/Retrospective-Analysis.html +++ b/articles/Retrospective-Analysis.html @@ -134,7 +134,7 @@

Model inputsget_ss3_exe().

 r4ss::get_ss3_exe(dir = dir_retro, version = "v3.30.21")
-#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpBUW48p/retrospectives/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpUqXETR/retrospectives/ss3

Retrospective Analysis diff --git a/articles/aspm.html b/articles/aspm.html index f3b7f1d..81f0d54 100644 --- a/articles/aspm.html +++ b/articles/aspm.html @@ -134,7 +134,7 @@

Model inputsget_ss3_exe().

 r4ss::get_ss3_exe(dir = dir_tmp, version = "v3.30.21")
-
## The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpKUkFNj/ss3
+
## The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmpb2T15m/ss3

ASPM diff --git a/articles/likelihood.html b/articles/likelihood.html index 06b282b..eb2f6d7 100644 --- a/articles/likelihood.html +++ b/articles/likelihood.html @@ -135,7 +135,7 @@

Model inputsget_ss3_exe().

 r4ss::get_ss3_exe(dir = dir_tmp, version = "v3.30.21")
-#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpdzfWEJ/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpakzV4r/ss3

Running a Profile on R0 diff --git a/articles/residuals_files/figure-html/unnamed-chunk-6-1.png b/articles/residuals_files/figure-html/unnamed-chunk-6-1.png index 087073a6a298515e1de7dc66068081236978df4b..fedb09865a64e6fa20eff538a507faf5a825842b 100644 GIT binary patch literal 92874 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 Lbakk)3%K-O@IxM5 literal 93402 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
SSplotJABBAres(
-  ss3rep = ss3diags::simple,
+  ss3rep,
   subplots = c("cpue", "len", "age", "size", "con")[1],
   seas = NULL,
   plot = TRUE,
diff --git a/reference/SSplotModelcomp.html b/reference/SSplotModelcomp.html
index 19e0633..167dc19 100644
--- a/reference/SSplotModelcomp.html
+++ b/reference/SSplotModelcomp.html
@@ -69,7 +69,7 @@
     

Usage

SSplotModelcomp(
-  summaryoutput = ss3diags::retroSimple,
+  summaryoutput,
   plot = TRUE,
   print = deprecated(),
   print_plot = FALSE,
diff --git a/reference/SSplotRunstest.html b/reference/SSplotRunstest.html
index b9e09bc..70e47ba 100644
--- a/reference/SSplotRunstest.html
+++ b/reference/SSplotRunstest.html
@@ -69,7 +69,7 @@
     

Usage

SSplotRunstest(
-  ss3rep = ss3diags::simple,
+  ss3rep,
   mixing = "less",
   subplots = c("cpue", "len", "age", "size", "con")[1],
   plot = TRUE,
diff --git a/reference/SSrunstest.html b/reference/SSrunstest.html
index 4de1a09..84e5f54 100644
--- a/reference/SSrunstest.html
+++ b/reference/SSrunstest.html
@@ -75,7 +75,7 @@
     

Usage

SSrunstest(
-  ss3rep = ss3diags::simple,
+  ss3rep,
   mixing = "less",
   quants = c("cpue", "len", "age", "con")[1],
   indexselect = NULL,
diff --git a/search.json b/search.json
index 94ef489..97d6002 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"path":"https://pifscstockassessments.github.io/ss3diags/CODE_OF_CONDUCT.html","id":null,"dir":"","previous_headings":"","what":"Code of Conduct","title":"Code of Conduct","text":"follow NFMS Fisheries Toolbox Code Conduct. NFMS Fisheries Toolbox Code Conduct adapted Contributor Covenant, version 1.4, available https://www.contributor-covenant.org/version/1/4/code--conduct.html answers common questions code conduct, see https://www.contributor-covenant.org/faq","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to ss3diags","title":"Contributing to ss3diags","text":"Thank interest contributing! strive follow NMFS Fisheries Toolbox Contribution Guide. Note guidelines, rules, open collaborations ways may work better . Please feel free reach us opening issue repository emailing project maintatainer megumi.oshima@noaa.gov. project everyone participating governed NMFS Fisheries Toolbox Code Conduct. participating, expected uphold code. Please report unacceptable behavior fisheries.toolbox@noaa.gov. Note maintainers ss3diags access email account, unacceptable behavior maintainers can also reported .","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Jitter Analysis","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running retrospective (case dir_jitter). easy way get latest release stock synthesis use r4ss function get_ss3_exe(). run model dir_jitter first produce necessary output files. recommended jitter runs subdirectory model run. keep output files separate diagnostic tests may run.","code":"install_github(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_jitter <- file.path(tempdir(check = TRUE), \"jitter\") dir.create(dir_jitter, showWarnings = FALSE, recursive = TRUE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_jitter) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_jitter, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpVmtrIM/jitter/ss3 r4ss::run(dir = dir_jitter, exe = \"ss3\", verbose = FALSE) #> [1] \"ran model\""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"jitter","dir":"Articles","previous_headings":"","what":"Jitter","title":"Jitter Analysis","text":"example, run 50 jitters. jitter() function automates entire process need give arguments run produce total likelihoods run. Full documentation jitter() function can found r4ss website. analyze output 50 runs, use r4ss::SSgetoutput() r4ss::SSsummarize() shown . key sections may want check compare across models , likelihoods, derived quantities, estimated parameters. may also want check models converged. can check maximum gradients make sure small (< 0.0001). can also compare estimated spawning biomass, extreme values (+2x <0.5x base spawning biomass) suggests model didn’t converge.","code":"Njitter <- 50 jit.likes <- r4ss::jitter(   dir = dir_jitter,   Njitter = Njitter,   init_values_src = 1,   jitter_fraction = 0.1,   exe = \"ss3\",   printlikes = FALSE,   verbose = FALSE ) jit_mods <- SSgetoutput(   keyvec = 0:Njitter, # 0 to include reference run (Report0.sso)   getcomp = FALSE,   dirvec = dir_jitter,   getcovar = FALSE,   verbose = FALSE ) jit_summary <- SSsummarize(jit_mods, verbose = FALSE) head(jit_summary$likelihoods) #>       replist0     replist1     replist2     replist3     replist4     replist5 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>       replist6     replist7     replist8     replist9    replist10    replist11 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist12    replist13    replist14    replist15    replist16    replist17 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist18    replist19    replist20    replist21    replist22    replist23 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist24    replist25    replist26    replist27    replist28    replist29 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist30    replist31    replist32    replist33    replist34    replist35 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist36    replist37    replist38    replist39    replist40    replist41 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist42    replist43    replist44    replist45    replist46    replist47 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist48    replist49    replist50       Label #> 1  7.54302e+02  7.54302e+02  7.54302e+02       TOTAL #> 2  1.33479e-10  1.33479e-10  1.33479e-10       Catch #> 3  1.74852e-01  1.74852e-01  1.74852e-01 Equil_catch #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00      Survey #> 5  3.66756e+02  3.66756e+02  3.66756e+02 Length_comp #> 6  2.31845e+02  2.31845e+02  2.31845e+02    Age_comp head(jit_summary$quants) #>   replist0 replist1 replist2 replist3 replist4 replist5 replist6 replist7 #> 1  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8 #> 2  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4 #> 3  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4 #> 4  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1 #> 5  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1 #> 6  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5 #>   replist8 replist9 replist10 replist11 replist12 replist13 replist14 replist15 #> 1  54773.8  54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2  26071.4  26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3  26071.4  26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4  24096.1  24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5  22126.1  22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6  20143.5  20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist16 replist17 replist18 replist19 replist20 replist21 replist22 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist23 replist24 replist25 replist26 replist27 replist28 replist29 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist30 replist31 replist32 replist33 replist34 replist35 replist36 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist37 replist38 replist39 replist40 replist41 replist42 replist43 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist44 replist45 replist46 replist47 replist48 replist49 replist50 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>         Label   Yr #> 1  SSB_Virgin   NA #> 2 SSB_Initial   NA #> 3    SSB_2011 2011 #> 4    SSB_2012 2012 #> 5    SSB_2013 2013 #> 6    SSB_2014 2014 head(jit_summary$pars) #>    replist0  replist1  replist2  replist3  replist4  replist5  replist6 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>    replist7  replist8  replist9 replist10 replist11 replist12 replist13 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist14 replist15 replist16 replist17 replist18 replist19 replist20 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist21 replist22 replist23 replist24 replist25 replist26 replist27 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist28 replist29 replist30 replist31 replist32 replist33 replist34 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist35 replist36 replist37 replist38 replist39 replist40 replist41 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist42 replist43 replist44 replist45 replist46 replist47 replist48 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist49 replist50                 Label Yr recdev #> 1  0.100000  0.100000 NatM_uniform_Fem_GP_1 NA  FALSE #> 2 22.769000 22.769000    L_at_Amin_Fem_GP_1 NA  FALSE #> 3 71.807200 71.807200    L_at_Amax_Fem_GP_1 NA  FALSE #> 4  0.142165  0.142165    VonBert_K_Fem_GP_1 NA  FALSE #> 5  0.100000  0.100000     CV_young_Fem_GP_1 NA  FALSE #> 6  0.100000  0.100000       CV_old_Fem_GP_1 NA  FALSE # Maximum gradient converged_grad <- which(jit_summary$maxgrad < 0.0001)  converged_ssb <- jit_summary$SpawnBio %>%   mutate(across(c(1:(Njitter + 1)),     .fns = ~ . / replist0   )) %>% # for each column, divide SSB by SSB from the reference run (replist)   select(-Label) %>%   pivot_longer(col = c(1:(Njitter + 1)), names_to = \"jitter\", values_to = \"SSB\") %>%   pivot_wider(names_from = Yr, values_from = SSB) %>%   mutate(rownumber = seq(1, nrow(.))) %>%   tibble::column_to_rownames(\"jitter\") %>%   filter_at(vars(1:(ncol(.) - 1)), all_vars((.) < 2 & (.) > 0.5)) %>% # keep only rows where SSB is a reasonable value   select(rownumber) %>%   pull(rownumber) converged_mods <- intersect(converged_grad, converged_ssb) # getting which models are in both groups converged_jitters <- jit_mods[converged_grad] converged_sum <- SSsummarize(converged_jitters, verbose = FALSE)"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Jitter Analysis","text":"compare likelihoods runs, plot shown . built functions (writing vignette) r4ss ss3diags generate likelihood plot, therefore provide code tidyverse syntax (using ggplot2) visualize results.  figure plots total likelihood jitter run red line indicates total likelihood value reference run. runs points red line, use converged parameter values run lowest likelihood value starting values base model. can also use r4ss::SSplotComparisons() compare spawning biomass trajectories jitter runs see impact different parameter values estimated quantities.","code":"converged_sum$likelihoods %>%   filter(str_detect(Label, \"TOTAL\")) %>%   select(-Label) %>%   pivot_longer(cols = everything(), names_to = \"jitter\", values_to = \"likelihood\") %>%   separate(jitter, into = c(\"replist\", \"jitter\"), sep = \"(?<=[A-Za-z])(?=[0-9])\") %>%   mutate(jitter = as.numeric(jitter)) %>%   ggplot(aes(x = jitter, y = likelihood)) +   geom_point(size = 3) +   geom_hline(aes(yintercept = likelihood[1]), color = \"red\") +   theme_classic() +   labs(     y = \"Total Likelihood\",     x = \"Jitter runs at a converged solution\"   ) SSplotComparisons(converged_sum,   subplots = 2,   ylimAdj = 1,   new = FALSE ) #> showing uncertainty for all models #> subplot 2: spawning biomass with uncertainty intervals"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Retrospective Analysis","text":"run stock synthesis model, 4 input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running retrospective (case dir_retro). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_retro <- file.path(tempdir(check = TRUE), \"retrospectives\") dir.create(dir_retro, showWarnings = FALSE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_retro) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_retro, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpBUW48p/retrospectives/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"retrospective-analysis","dir":"Articles","previous_headings":"","what":"Retrospective Analysis","title":"Retrospective Analysis","text":"4 input files SS executable file, can run retrospective analysis shown . running five one-year peels, run, one five years data removed reference model model re-run total five times (.e. peel 1 removes last year data, peel 2 removes last 2 years data, etc.) . number year peels can adjusted years argument. SS executable file using named something “ss3” (e.g. ss_opt_win.exe), need specify argument exe = \"ss_opt_win\". Full documentation retro() function can found r4ss website.","code":"r4ss::retro(dir = dir_retro, exe = \"ss3\", years = 0:-5, verbose = FALSE) #> Warning in base::sink(type = \"output\", split = FALSE): no sink to remove"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Retrospective Analysis","text":"visualize outputted results inspect retrospective patterns, need load report files R use SSplotRetro() function ss3diags. easiest way load multiple report files using r4ss::SSgetoutput() r4ss::SSsummarize() functions. default sub-directories peel, 0 5, labeled retro0 retro-5.  default settings plot spawning stock biomass time series peel, reference run (.e. original, full time series model) “Ref” line successive peel colored lines labeled terminal year value. solid line ends terminal year followed dashed line extending circle representing one year forecast estimate. Displaying projected SSB value helps assessing forecast bias. note, forecasts done automatically using r4ss::retro() based settings forecast.ss. grey shaded area represents 95% confidence intervals uncertainty around spawning biomass time series. Displayed center plot combined Mohn’s \\(\\rho\\) retrospective runs, parentheses forecast Mohn’s \\(\\rho\\).","code":"retro_mods <- r4ss::SSgetoutput(dirvec = file.path(dir_retro, \"retrospectives\", paste0(\"retro\", seq(0, -5, by = -1))), verbose = F) retroSummary <- r4ss::SSsummarize(retro_mods, verbose = F) SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE) #> Mohn's Rho stats, including one step ahead forecasts: #>   type     peel         Rho  ForecastRho #> 1  SSB     2021 -0.20753686 -0.221050163 #> 2  SSB     2020 -0.19601072 -0.227304734 #> 3  SSB     2019 -0.29238505 -0.338600758 #> 4  SSB     2018 -0.00474920 -0.007462034 #> 5  SSB     2017  0.08716428  0.098849082 #> 6  SSB Combined -0.12270351 -0.139113722"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Visualizing Output","what":"Customizing the Plot","title":"Retrospective Analysis","text":"Retro plots can customized many ways, common features may want specify : removing uncertainty intervals adjusting years shown x-axis turning 1-year ahead forecasting displaying combined \\(\\rho\\) value plot Examples changes shown , incrementally making adjustment.  Additionally, fishing mortality can plotted instead spawning biomass replacing subplots = \"SSB\" subplots = \"F\"","code":"r4ss::sspar(mfrow = c(2, 2), plot.cex = 0.8) retro1 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE) #> Mohn's Rho stats, including one step ahead forecasts: retro2 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022)) #> Mohn's Rho stats, including one step ahead forecasts: retro3 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022), forecast = FALSE) #> Mohn's Rho stats, including one step ahead forecasts: retro4 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022), forecast = FALSE, showrho = FALSE, forecastrho = FALSE) #> Mohn's Rho stats, including one step ahead forecasts:"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"summary-table","dir":"Articles","previous_headings":"Visualizing Output","what":"Summary Table","title":"Retrospective Analysis","text":"addition retrospective plots, summary statistics table can produced using SShcbias(). table includes type estimate (SSB F) year removed “peel” Mohn’s \\(\\rho\\) forecast bias year overall (“Combined”). Mohn’s \\(\\rho\\) measure severity bias retrospective patterns forecast bias estimate bias forecasted quantities years data removed. rule thumb proposed Hurtado-Ferror et al. (2014) Mohn’s \\(\\rho\\) values long-lived species, \\(\\rho\\) value fall -0.15 0.20.","code":"SShcbias(retroSummary) #> Mohn's Rho stats, including one step ahead forecasts: #>    type     peel         Rho   ForcastRho #> 1   SSB     2021 -0.20753686 -0.221050163 #> 2   SSB     2020 -0.19601072 -0.227304734 #> 3   SSB     2019 -0.29238505 -0.338600758 #> 4   SSB     2018 -0.00474920 -0.007462034 #> 5   SSB     2017  0.08716428  0.098849082 #> 6   SSB Combined -0.12270351 -0.139113722 #> 7     F     2021  0.28425747  0.285936183 #> 8     F     2020  0.30941305  0.349748774 #> 9     F     2019  0.52629045  0.632574831 #> 10    F     2018  0.01822898  0.022822958 #> 11    F     2017 -0.04896989 -0.053882358 #> 12    F Combined  0.21784401  0.247440078"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"ASPM","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running ASPM (case dir_aspm). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_tmp <- tempdir(check = TRUE) dir_aspm <- file.path(dir_tmp, \"aspm\") dir.create(dir_aspm, showWarnings = FALSE, recursive = TRUE) list.files(files_path) ## [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_tmp) ## [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_tmp, version = \"v3.30.21\") ## The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpKUkFNj/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"aspm","dir":"Articles","previous_headings":"","what":"ASPM","title":"ASPM","text":"4 input files, need determine components need turned run ASPM. ASPM depend index abundance catch data, composition data, recruitment deviations, etc. need turned . provide example includes multiple types data recruitment deviations, however, exact steps necessary individual model may vary depending complexity components included. Therefore steps may fully comprehensive model sure check components may need change. , show use r4ss functions make necessary changes control.ss ss.par files.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"generate-files","dir":"Articles","previous_headings":"ASPM","what":"Generate files","title":"ASPM","text":"order get ss.par file, need run model . also produce new data control file use input files. run model dir_tmp copy new files dir_aspm.","code":"r4ss::run(dir = dir_tmp, verbose = FALSE, exe = \"ss3\") ## [1] \"ran model\" files <- c(\"data_echo.ss_new\", \"control.ss_new\", \"starter.ss\", \"forecast.ss\", \"ss.par\", \"ss3\") file.copy(from = file.path(dir_tmp, files), to = dir_aspm) ## [1] TRUE TRUE TRUE TRUE TRUE TRUE"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"recruitment-deviations","dir":"Articles","previous_headings":"ASPM","what":"Recruitment Deviations","title":"ASPM","text":"Set recruitment devations ss.par 0.","code":"par <- SS_readpar_3.30(   parfile = file.path(dir_aspm, \"ss.par\"),   datsource = file.path(dir_aspm, \"data_echo.ss_new\"),   ctlsource = file.path(dir_aspm, \"control.ss_new\"),   verbose = FALSE ) par$recdev1 ##       year      recdev ##  [1,] 2011 -0.06005247 ##  [2,] 2012 -0.01284866 ##  [3,] 2013  0.13478706 ##  [4,] 2014  0.11410144 ##  [5,] 2015 -0.08325396 ##  [6,] 2016  0.14556845 ##  [7,] 2017 -0.12973978 ##  [8,] 2018 -0.18308123 ##  [9,] 2019  0.02442762 ## [10,] 2020 -0.08979813 ## [11,] 2021 -0.07812317 ## [12,] 2022  0.21801284 par$recdev_forecast ##       year recdev ##  [1,] 2023      0 ##  [2,] 2024      0 ##  [3,] 2025      0 ##  [4,] 2026      0 ##  [5,] 2027      0 ##  [6,] 2028      0 ##  [7,] 2029      0 ##  [8,] 2030      0 ##  [9,] 2031      0 ## [10,] 2032      0 par$recdev1[, \"recdev\"] <- 0  # Would run if forecasts recdevs were not already 0 # par$recdev_forecast[,\"recdev\"] <- 0 SS_writepar_3.30(   parlist = par,   outfile = file.path(dir_aspm, \"ss.par\"),   overwrite = T, verbose = FALSE ) ## $headerlines ## [1] \"# Number of parameters = 32 Objective function value = 754.301687441726  Maximum gradient component = 8.77017492766611e-07\" ## [2] \"# dummy_parm:\"                                                                                                              ## [3] \"1.00000000000\"                                                                                                              ##  ## $MG_parms ##                            INIT       ESTIM ## NatM_p_1_Fem_GP_1    0.10000000  0.10000000 ## L_at_Amin_Fem_GP_1  22.76900000 22.76899194 ## L_at_Amax_Fem_GP_1  71.80720000 71.80721125 ## VonBert_K_Fem_GP_1   0.14216500  0.14216482 ## CV_young_Fem_GP_1    0.10000000  0.10000000 ## CV_old_Fem_GP_1      0.10000000  0.10000000 ## Wtlen_1_Fem_GP_1     0.00000244  0.00000244 ## Wtlen_2_Fem_GP_1     3.34694000  3.34694000 ## Mat50%_Fem_GP_1     55.00000000 55.00000000 ## Mat_slope_Fem_GP_1  -0.25000000 -0.25000000 ## Eggs_alpha_Fem_GP_1  1.00000000  1.00000000 ## Eggs_beta_Fem_GP_1   0.00000000  0.00000000 ## NatM_p_1_Mal_GP_1    0.00000000  0.00000000 ## L_at_Amin_Mal_GP_1   0.00000000  0.00000000 ## L_at_Amax_Mal_GP_1   0.00000000  0.00000000 ## VonBert_K_Mal_GP_1   0.00000000  0.00000000 ## CV_young_Mal_GP_1    0.00000000  0.00000000 ## CV_old_Mal_GP_1      0.00000000  0.00000000 ## Wtlen_1_Mal_GP_1     0.00000244  0.00000244 ## Wtlen_2_Mal_GP_1     3.34694000  3.34694000 ## CohortGrowDev        1.00000000  1.00000000 ## FracFemale_GP_1      0.50000000  0.50000000 ##  ## $SR_parms ##               INIT    ESTIM ## SR_LN(R0)   8.9274 8.927395 ## SR_BH_steep 0.8000 0.800000 ## SR_sigmaR   0.6000 0.600000 ## SR_regime   0.0000 0.000000 ## SR_autocorr 0.0000 0.000000 ##  ## $recdev1 ##       year recdev ##  [1,] 2011      0 ##  [2,] 2012      0 ##  [3,] 2013      0 ##  [4,] 2014      0 ##  [5,] 2015      0 ##  [6,] 2016      0 ##  [7,] 2017      0 ##  [8,] 2018      0 ##  [9,] 2019      0 ## [10,] 2020      0 ## [11,] 2021      0 ## [12,] 2022      0 ##  ## $recdev_forecast ##       year recdev ##  [1,] 2023      0 ##  [2,] 2024      0 ##  [3,] 2025      0 ##  [4,] 2026      0 ##  [5,] 2027      0 ##  [6,] 2028      0 ##  [7,] 2029      0 ##  [8,] 2030      0 ##  [9,] 2031      0 ## [10,] 2032      0 ##  ## $init_F ## [1] 0.1 ##  ## $Q_parms ##                           INIT      ESTIM ## LnQ_base_SURVEY1(2)   0.476759  0.4767585 ## Q_extraSD_SURVEY1(2)  0.000000  0.0000000 ## LnQ_base_SURVEY2(3)  -6.304070 -6.3040672 ##  ## $S_parms ##                            INIT     ESTIM ## SizeSel_P_1_FISHERY(1) 56.51380 56.513807 ## SizeSel_P_2_FISHERY(1) 20.17930 20.179340 ## SizeSel_P_1_SURVEY1(2) 36.02330 36.023325 ## SizeSel_P_2_SURVEY1(2)  5.33502  5.335021 ## AgeSel_P_1_SURVEY2(3)   0.00000  0.000000 ## AgeSel_P_2_SURVEY2(3)   0.00000  0.000000"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"starter-file","dir":"Articles","previous_headings":"ASPM","what":"Starter File","title":"ASPM","text":"Change starter file read ss.par (init_values_src = 1) use new data control files.","code":"starter <- SS_readstarter(file = file.path(dir_aspm, \"starter.ss\"), verbose = FALSE) starter$datfile <- \"data_echo.ss_new\" starter$ctlfile <- \"control.ss_new\" starter$init_values_src <- 1 SS_writestarter(starter,   dir = dir_aspm,   overwrite = TRUE,   verbose = FALSE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"control-file","dir":"Articles","previous_headings":"ASPM","what":"Control File","title":"ASPM","text":"estimation phases following parameters may need changed: length selectivity age selectivity size selectivity steepness sigmaR recruitment deviations Additionally, likelihood components may need turned well. can using lambda options control file. examples include: length-composition data age-composition data size-composition data initial F","code":"control <- SS_readctl_3.30(   file = file.path(dir_aspm, \"control.ss_new\"),   datlist = file.path(dir_aspm, \"data_echo.ss_new\"),   verbose = FALSE )  control$SR_parms ##               LO HI   INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link ## SR_LN(R0)    6.0 12 8.9274  10.3  10.0       0     1            0        0 ## SR_BH_steep  0.2  1 0.8000   0.8   1.0       0    -4            0        0 ## SR_sigmaR    0.0  2 0.6000   0.8   0.8       0    -4            0        0 ## SR_regime   -5.0  5 0.0000   0.0   1.0       0    -4            0        0 ## SR_autocorr  0.0  0 0.0000   0.0   0.0       0   -99            0        0 ##             dev_minyr dev_maxyr dev_PH Block Block_Fxn ## SR_LN(R0)           0         0      0     0         0 ## SR_BH_steep         0         0      0     0         0 ## SR_sigmaR           0         0      0     0         0 ## SR_regime           0         0      0     0         0 ## SR_autocorr         0         0      0     0         0 # Would need to run if PHASES were positive for \"steep\" and \"sigmaR\" # control$SR_parms[c(2,3),\"PHASE\"] <- c(-4,-4) control$age_selex_parms ##                       LO HI INIT PRIOR PR_SD PR_type PHASE env_var&link ## AgeSel_P_1_SURVEY2(3)  0 20    0     5    99       0   -99            0 ## AgeSel_P_2_SURVEY2(3)  0 20    0     6    99       0   -99            0 ##                       dev_link dev_minyr dev_maxyr dev_PH Block Block_Fxn ## AgeSel_P_1_SURVEY2(3)        0         0         0      0     0         0 ## AgeSel_P_2_SURVEY2(3)        0         0         0      0     0         0 # would need to run if PHASES were positive for age selectivity # control$age_selex_parms[,\"PHASE\"] <- control$age_selex_parms[,\"PHASE\"] * -1 control$size_selex_parms[, \"PHASE\"] <- control$size_selex_parms[, \"PHASE\"] * -1 control$recdev_early_phase <- -4 control$recdev_phase <- -2  new_lambdas <- data.frame(   like_comp = c(4, 4, 5, 5, 7, 7, 9, 9, 9, 10),   fleet = c(1, 2, 1, 2, 1, 2, 1, 2, 3, 1),   phase = rep(1, 10),   value = rep(0, 10),   sizefreq_method = rep(1, 10) ) new_lambdas ##    like_comp fleet phase value sizefreq_method ## 1          4     1     1     0               1 ## 2          4     2     1     0               1 ## 3          5     1     1     0               1 ## 4          5     2     1     0               1 ## 5          7     1     1     0               1 ## 6          7     2     1     0               1 ## 7          9     1     1     0               1 ## 8          9     2     1     0               1 ## 9          9     3     1     0               1 ## 10        10     1     1     0               1 control$lambdas <- new_lambdas control$N_lambdas <- nrow(new_lambdas) SS_writectl_3.30(control,   outfile = file.path(dir_aspm, \"control.ss_new\"),   overwrite = TRUE, verbose = FALSE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"run-aspm","dir":"Articles","previous_headings":"ASPM","what":"Run ASPM","title":"ASPM","text":"","code":"r4ss::run(dir = dir_aspm, exe = \"ss3\", skipfinished = FALSE, verbose = FALSE) ## [1] \"ran model\""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"visualize-results","dir":"Articles","previous_headings":"ASPM","what":"Visualize Results","title":"ASPM","text":"compare ASPM model age-structured model, can use SSplotComparisons(). Comparing spawning biomass F estimates two models fits indices abundance can help understand enough information indices inform production function.","code":"mods <- SSgetoutput(dirvec = c(   dir_tmp,   dir_aspm ), verbose = FALSE)  mods_sum <- SSsummarize(mods, verbose = FALSE)  SSplotComparisons(mods_sum,   legendlabels = c(\"Ref\", \"ASPM\"),   subplots = c(2, 8, 14), new = F ) ## showing uncertainty for all models ## subplot 2: spawning biomass with uncertainty intervals ## subplot 8: F value with uncertainty ## subplot 14: index fits on a log scale"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Hindcast Cross-Validation","text":"HCxval implemented using ss3diags::SSplotHCxval(), produces novel HCxval diagnostic plot computes MASE scores indices abundance, mean lengths, mean ages observations falling within hindcast evaluation period.  plots , see , fleets, model fairly good prediction skills index abundance data (compared random walk). plots, white points white dashed line observed data included model truncated time series. larger colored points observed data retrospective peel (.e. data removed peel). smaller colored points dashed lines show model predicted values. “Ref” line model run complete time series data. grey shaded areas represent uncertainty data, darker portion indicating portion included model lighter portion indicating ones removed projected. MASE scores displayed MASE adjusted MASE parentheses.","code":"r4ss::sspar(mfrow = c(1, 2)) SSplotHCxval(retroSummary, subplots = \"cpue\", add = TRUE) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with only 1 of 5  prediction residuals for Index SURVEY1  #>  #>  Warning:  Unequal spacing of naive predictions residuals may influence the interpretation of MASE #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index SURVEY2 #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR  MAE.base  MASE.adj n.eval #> 1 SURVEY1      1 0.5026435 0.08879379 0.1766536 0.5026435      1 #> 2 SURVEY2      1 0.6149530 0.37737925 0.6136717 0.6149530      5"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"composition-data","dir":"Articles","previous_headings":"Visualizing Output","what":"Composition Data","title":"Hindcast Cross-Validation","text":"visualize mean length mean age, need add additional step. forecast length- age-composition information stored “ghost files” SS report.sso file, need use ss3diags::SSretroComps() extract summarize information creating plots.","code":"retroSummary_comps <- SSretroComps(retro_mods)  r4ss::sspar(mfrow = c(1, 2)) hcl <- SSplotHCxval(retroSummary_comps, subplots = \"len\", add = TRUE, ylim = c(40, 75)) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #>  Computing MASE with only 1 of 5  prediction residuals for Index SURVEY1  #>  #>  Warning:  Unequal spacing of naive predictions residuals may influence the interpretation of MASE #>  #> MASE stats by Index:"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Visualizing Output","what":"Customizing the Plot","title":"Hindcast Cross-Validation","text":"HCxval plots can customized many ways, common features may want specify : displaying specific fleet removing uncertainty intervals adjusting x- y-axis displaying adjusted MASE value plot Examples changes shown , incrementally making adjustment.","code":"r4ss::sspar(mfrow = c(2, 2)) SSplotHCxval(retroSummary_comps, subplots = \"len\", add = TRUE, indexselect = 1) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE, ylim = c(45, 70) ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE, ylim = c(45, 70), show.mase.adj = F ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"summary-table","dir":"Articles","previous_headings":"","what":"Summary Table","title":"Hindcast Cross-Validation","text":"addition HCxval plots, summary statistics table can produced using ss3diags::SSmase(). table includes: Index - fleet Season MASE - MASE score MAE.PR - mean absolute error prediction residuals MASE.base - naive prediction MASE.adj - adjusted MASE score n.eval - number points prediction skill calculated Adjusted MASE gets invoked cases inter-annual variation observed values small (default MAE < 0.1 naive predictions log(y[t+1])-log(y[t])). reasoning prediction residuals must already accurate fall threshold. adjusted MASE essential keep naive prediction MAE denominator MASE maximum. show effect changing adjustment threshold default MAE.base.adj = 0.1 larger value MAE.base.adj = 0.15 MASE ratio mean absolute error prediction residuals MAE.PR residuals naive predictions MAE.base MASE.adj","code":"mase1 <- SSmase(retroSummary_comps, quant = \"len\", MAE.base.adj = 0.1) mase1 #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 #> 2 SURVEY1      1 0.6526074 0.05142002 0.07879167 0.5142002      1 #> 3   joint        0.4628955 0.01719056 0.03713702 0.1719056      6 SSmase(retroSummary_comps, quant = \"len\", MAE.base.adj = 0.15) #>     Index Season      MASE     MAE.PR   MAE.base   MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.06896444      5 #> 2 SURVEY1      1 0.6526074 0.05142002 0.07879167 0.34280015      1 #> 3   joint        0.4628955 0.01719056 0.03713702 0.11460372      6 mase1$MAE.PR / mase1$MAE.base #> [1] 0.3591138 0.6526074 0.4628955 mase1$MASE #> [1] 0.3591138 0.6526074 0.4628955 mase1$MAE.PR / pmax(mase1$MAE.base, 0.1) #> [1] 0.1034467 0.5142002 0.1719056 mase1$MASE.adj #> [1] 0.1034467 0.5142002 0.1719056"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Likelihood Profile","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running profile (case dir_profile). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_tmp <- tempdir(check = TRUE) dir_profile <- file.path(dir_tmp, \"profile\") dir.create(dir_profile, showWarnings = FALSE, recursive = TRUE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_tmp) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_tmp, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpdzfWEJ/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"running-a-profile-on-r0","dir":"Articles","previous_headings":"","what":"Running a Profile on R0","title":"Likelihood Profile","text":"four input files SS executable file, can run likelihood profile shown . first step run model like profile . dir_tmp copy necessary files dir_profile. ’s best run profile subdirectory main model run keep output files separate diagnostic tests may run. input files dir_profile directory, need create vector values profile across. range increments choose depend model resolution want analyze likelihood profile. example use fairly coarse resolution speed total run time. also need modify starter file changing name control file read making sure likelihood calculated non-estimated quantities. run profile, use r4ss::profile() need specify partial string name parameter profiling (case “SR_LN” match “SR_LN(R0)”), vector values profile across. newctlfile control file adjusted values profilevec can named anything prefer, just needs match put starter file “ctlfile”. Full documentation profile() function can found r4ss website.","code":"r4ss::run(dir = dir_tmp, exe = \"ss3\", verbose = FALSE) #> [1] \"ran model\" files <- c(\"data.ss\", \"control.ss_new\", \"starter.ss\", \"forecast.ss\", \"ss.par\", \"ss3\") file.copy(from = file.path(dir_tmp, files), to = dir_profile) #> [1] TRUE TRUE TRUE TRUE TRUE TRUE CTL <- SS_readctl_3.30(file = file.path(dir_profile, \"control.ss_new\"), datlist = file.path(dir_profile, \"data.ss\"))  CTL$SR_parms #>               LO HI   INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link #> SR_LN(R0)    6.0 12 8.9274  10.3  10.0       0     1            0        0 #> SR_BH_steep  0.2  1 0.8000   0.8   1.0       0    -4            0        0 #> SR_sigmaR    0.0  2 0.6000   0.8   0.8       0    -4            0        0 #> SR_regime   -5.0  5 0.0000   0.0   1.0       0    -4            0        0 #> SR_autocorr  0.0  0 0.0000   0.0   0.0       0   -99            0        0 #>             dev_minyr dev_maxyr dev_PH Block Block_Fxn #> SR_LN(R0)           0         0      0     0         0 #> SR_BH_steep         0         0      0     0         0 #> SR_sigmaR           0         0      0     0         0 #> SR_regime           0         0      0     0         0 #> SR_autocorr         0         0      0     0         0 # getting the estimated r0 value r0 <- CTL$SR_parms$INIT[1] # creating a vector that is +/- 1 unit away from the estimated value in increments of 0.2 r0_vec <- seq(r0 - 1, r0 + 1, by = 0.2) r0_vec #>  [1] 7.9274 8.1274 8.3274 8.5274 8.7274 8.9274 9.1274 9.3274 9.5274 9.7274 #> [11] 9.9274 START <- SS_readstarter(file = file.path(dir_profile, \"starter.ss\"), verbose = FALSE) START$prior_like <- 1 START$ctlfile <- \"control_modified.ss\" SS_writestarter(START, dir = dir_profile, overwrite = TRUE, verbose = F) profile(   dir = dir_profile,   newctlfile = \"control_modified.ss\",   string = \"SR_LN\",   profilevec = r0_vec,   exe = \"ss3\",   verbose = FALSE ) #> running profile i=1/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.9274  7.9274        1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=2/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  7.9274  8.1274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=3/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.1274  8.3274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=4/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.3274  8.5274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=5/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.5274  8.7274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=6/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.7274  8.9274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=7/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.9274  9.1274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=8/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.1274  9.3274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=9/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.3274  9.5274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=10/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.5274  9.7274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=11/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.7274  9.9274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #>     Value converged[whichruns]    TOTAL       Catch Equil_catch    Survey #> 1  7.9274                 TRUE 1067.570 4.40715e-01   16.620400  6.065520 #> 2  8.1274                 TRUE  940.077 2.29735e-01   12.985200  1.965820 #> 3  8.3274                 TRUE  844.236 1.08857e-01    9.799480 -2.132340 #> 4  8.5274                 TRUE  790.513 9.17170e-06    3.930790 -5.726270 #> 5  8.7274                 TRUE  762.562 6.48948e-08    0.271032 -7.140910 #> 6  8.9274                 TRUE  754.302 1.33458e-10    0.174869 -7.118110 #> 7  9.1274                 TRUE  758.927 2.10816e-13    1.337060 -6.106700 #> 8  9.3274                 TRUE  767.708 1.90347e-13    3.424990 -4.917570 #> 9  9.5274                 TRUE  777.243 1.15331e-13    6.433440 -3.857200 #> 10 9.7274                 TRUE  787.189 6.73658e-14   10.382600 -2.563580 #> 11 9.9274                 TRUE  798.152 4.05051e-14   15.279300 -0.380771 #>    Length_comp Age_comp Size_at_age Recruitment InitEQ_Regime #> 1      453.198  341.340     230.715   19.181500   0.00000e+00 #> 2      418.750  291.595     201.557   12.989400   0.00000e+00 #> 3      393.384  257.968     179.068    6.036600   0.00000e+00 #> 4      379.721  243.456     167.416    1.713560   1.54502e-30 #> 5      370.420  234.970     163.525    0.515980   1.54502e-30 #> 6      366.756  231.845     162.399    0.244060   1.54502e-30 #> 7      367.497  233.210     162.675    0.312441   0.00000e+00 #> 8      369.543  235.957     163.170    0.529082   0.00000e+00 #> 9      371.605  238.622     163.598    0.839498   1.54502e-30 #> 10     373.376  240.872     163.942    1.178030   0.00000e+00 #> 11     374.815  242.718     164.208    1.510550   0.00000e+00 #>    Forecast_Recruitment Parm_priors Parm_softbounds Parm_devs Crash_Pen #> 1                     0           0      0.00756177         0         0 #> 2                     0           0      0.00433602         0         0 #> 3                     0           0      0.00337783         0         0 #> 4                     0           0      0.00197985         0         0 #> 5                     0           0      0.00143663         0         0 #> 6                     0           0      0.00141332         0         0 #> 7                     0           0      0.00150262         0         0 #> 8                     0           0      0.00159065         0         0 #> 9                     0           0      0.00166199         0         0 #> 10                    0           0      0.00171844         0         0 #> 11                    0           0      0.00176282         0         0"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Likelihood Profile","text":"profile finished running, can visualize results determine conflict data sources. data sources reach negative log-likelihood (NLL) minimum R0 value, indicates good agreement . However, likely, one reach NLL minimum different R0 values global R0 value. sign conflict data sources may require consider data weighting.  profile plot shows changes log-likelihood across selected range values contributing data components. adjustable minimum contribution threshold component must meet appear figure (data source model show plot, contribution total likelihood may large enough). steepness trajectory indicates informative () data source . example, age data plot much steeper left side minimum R0 value index data, suggests age composition data informative model. can also plot data-type fleet-specific profiles using r4ss::PinerPlot(). plotting profile length composition data fleet likelihood survey data fleet. allow us see conflicts sources main drivers.","code":"profile_mods <- SSgetoutput(dirvec = dir_profile, keyvec = 1:length(r0_vec), verbose = FALSE) profile_mods_sum <- SSsummarize(profile_mods, verbose = FALSE) SSplotProfile(profile_mods_sum,   profile.string = \"SR_LN\",   profile.label = \"SR_LN(R0)\" ) #> Parameter matching profile.string=SR_LN: SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274 #> Likelihood components showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>                      frac_change include                            label #> TOTAL                     1.0000    TRUE                            Total #> Catch                     0.0014   FALSE                            Catch #> Equil_catch               0.0525    TRUE                Equilibrium catch #> Survey                    0.0422    TRUE                       Index data #> Length_comp               0.2759    TRUE                      Length data #> Age_comp                  0.3495    TRUE                         Age data #> Size_at_age               0.2181    TRUE                 Size-at-age data #> Recruitment               0.0605    TRUE                      Recruitment #> InitEQ_Regime             0.0000   FALSE Initital equilibrium recruitment #> Forecast_Recruitment      0.0000   FALSE             Forecast recruitment #> Parm_priors               0.0000   FALSE                           Priors #> Parm_softbounds           0.0000   FALSE                      Soft bounds #> Parm_devs                 0.0000   FALSE             Parameter deviations #> Crash_Pen                 0.0000   FALSE                    Crash penalty sspar(mfrow = c(1, 2)) PinerPlot(profile_mods_sum,   component = \"Length_like\",   main = \"Length\" ) #> Parameter matching profile.string = 'R0': 'SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274, #> Fleet-specific likelihoods showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>         frac_change include #> FISHERY      0.6825    TRUE #> SURVEY1      0.3208    TRUE #> SURVEY2      0.0000   FALSE PinerPlot(profile_mods_sum,   component = \"Surv_like\",   main = \"Survey\" ) #> Parameter matching profile.string = 'R0': 'SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274, #> Fleet-specific likelihoods showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>         frac_change include #> FISHERY      0.0000   FALSE #> SURVEY1      0.3218    TRUE #> SURVEY2      0.9202    TRUE"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"runs-test","dir":"Articles","previous_headings":"","what":"Runs Test","title":"Residual Analyses","text":"runs test nonparametric hypothesis test randomness data sequence calculates 2-sided p-value estimate number runs (.e., sequences values sign) reference value. runs test can diagnose model misspecification using residuals fits index composition data (Carvalho et al. 2017) testing non-random patterns residuals. addition, three-sigma limits can considered useful identifying potential outliers data point three standard deviations away expected residual process average unlikely given random process error observed residual distribution. example using “simple_small” SS model included within r4ss package. can read report file model output using r4ss::SS_output() function shown .  output SSplotRunstest() includes plot residuals fleet table results runs test ‘three-sigma limit’ values. plots , shaded area represents ‘three-sigma limit’, three residual standard deviations zero. individual residual points fall outside three-sigma limit, colored red. Green shaded area indicates residuals randomly distributed (p-value >= 0.05) whereas red shaded area indicates residuals randomly distributed. Failing runs test (p-value < 0.05) can indicative misspecification conflict indices composition data.","code":"library(r4ss)  files_path <- system.file(\"extdata\", \"simple_small\", package = \"r4ss\") report <- SS_output(dir = files_path, verbose = FALSE, printstats = FALSE) sspar(mfrow = c(1, 2)) SSplotRunstest(report, add = TRUE) #> Running Runs Test Diagnostics w/ plots forIndex #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Index: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1  0.159 Passed -0.7301441 0.7301441 cpue #> 2 SURVEY2  0.887 Passed -1.1052361 1.1052361 cpue"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Runs Test","what":"Customizing the Plot","title":"Residual Analyses","text":"Runs test plots can customized needed. common features may want specify : plotting data types (default Index Abundance) plotting specific fleet(s) adjusting y-axis range Examples changes shown , incrementally making adjustment. plot data types, can specified subplots argument, options include “cpue”, “len”, “age”, “size”, “con”. “con” conditional size--age data “size” generalized size composition data. Fleets can specified using indexselect() function, takes vector fleet numbers plot.  Note small adjustment automatically added ylim provide extra white space. third plot, even though set y-axis range -0.5 0.5, y-axis goes -0.6 0.6. want extra space, set ylimAdj = 1 done 4th plot.","code":"sspar(mfrow = c(2, 2)) SSplotRunstest(report, subplots = \"len\", indexselect = 1, add = TRUE) #> Running Runs Test Diagnostics w/ plots forMean length #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean length: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 FISHERY  0.126 Passed -0.0613176 0.0613176  len SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE, ylim = c(-0.5, 0.5)) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE, ylim = c(-0.5, 0.5), ylimAdj = 1) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"summary-table","dir":"Articles","previous_headings":"Runs Test","what":"Summary Table","title":"Residual Analyses","text":"addition residual plots, SSplotRunstest() produces summary table runs test output values, including: p-value runs test test passed failed (indicated green red shading plot) upper lower limits 3-sigma interval type data tested (CPUE, length-composition, age-composition, conditional age--length) produce summary table skip plot, e.g. faciliate automated processing, use SSrunstest().","code":"rcpue <- SSrunstest(report, quants = \"cpue\") #> Running Runs Test Diagnosics for Index #> Computing Residual Runs Tests #> Residual Runs Test stats by Index: rlen <- SSrunstest(report, quants = \"len\") #> Running Runs Test Diagnosics for Mean length #> Computing Residual Runs Tests #> Residual Runs Test stats by Mean length: rbind(rcpue, rlen) #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1  0.159 Passed -0.7301441 0.7301441 cpue #> 2 SURVEY2  0.887 Passed -1.1052361 1.1052361 cpue #> 3 FISHERY  0.126 Passed -0.0613176 0.0613176  len #> 4 SURVEY1  0.841 Passed -0.1725225 0.1725225  len"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"rmse","dir":"Articles","previous_headings":"","what":"RMSE","title":"Residual Analyses","text":"RMSE root mean square error useful evaluating far predictions fall observed data. ss3diags::SSplotJABBAres() function allows visualize full time series residuals fleets indicated data (index abundance composition). example , plot residuals index abundance, mean age (age-composition), mean length (length composition) fleets.  plots , point represents difference observed expected value (residual) color-coded correspond specific fleet. solid, color-coded vertical lines horizontal dashed line (y = 0) show distance 0 residual value. Box plots summarize spread residual values across fleets within year thick solid black line loess smoother fit residual points. Total RMSE displayed top right corner. assessing plot, important see patterns trends residuals, large overall RMSE , whether data different fleets generally agrees conflicts . retrieve just RMSE residual values without generating plot, SSrmse() produces named list 2 objects, RMSE residuals. can accessed shown . function useful automating analyses.","code":"sspar(mfrow = c(2, 2)) SSplotJABBAres(report, subplots = \"cpue\", add = TRUE) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 SURVEY1       21.6     4 #> 2 SURVEY2       27.7    12 #> 3 Combined      26.3    16 SSplotJABBAres(report, subplots = \"age\", add = TRUE) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 FISHERY        9      12 #> 2 SURVEY1        8.1     4 #> 3 Combined       8.8    16 SSplotJABBAres(report, subplots = \"len\", add = TRUE, ylim = c(-0.2, 0.2)) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 FISHERY        2.1    12 #> 2 SURVEY1        3.4     4 #> 3 Combined       2.5    16 rmse <- SSrmse(report, quants = \"cpue\")$RMSE residuals <- SSrmse(report, quants = \"cpue\")$residuals  rmse #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 SURVEY1       21.6     4 #> 2 SURVEY2       27.7    12 #> 3 Combined      26.3    16  head(residuals) #>     Fleet Fleet_name Area   Yr Seas Subseas Month   Time Vuln_bio         Obs #> 925     2    SURVEY1    1 2013    1       2     7 2013.5 62947.50 144745.0000 #> 926     2    SURVEY1    1 2016    1       2     7 2016.5 49335.70  63760.3000 #> 927     2    SURVEY1    1 2019    1       2     7 2019.5 38132.00  59242.9000 #> 928     2    SURVEY1    1 2022    1       2     7 2022.5 34045.80  49649.7000 #> 929     3    SURVEY2    1 2011    1       2     7 2011.5  6306.83     11.5668 #> 930     3    SURVEY2    1 2012    1       2     7 2012.5  6544.96     13.9955 #>             Exp     Calc_Q      Eff_Q  SE SE_input         Dev        Like #> 925 101399.0000 1.61084000 1.61084000 0.3      0.3  0.35591400 7.03749e-01 #> 926  79472.2000 1.61084000 1.61084000 0.3      0.3 -0.22027600 2.69564e-01 #> 927  61424.7000 1.61084000 1.61084000 0.3      0.3 -0.03616590 7.26653e-03 #> 928  54842.4000 1.61084000 1.61084000 0.3      0.3 -0.09947210 5.49706e-02 #> 929     11.5342 0.00182885 0.00182885 0.7      0.7  0.00281831 8.10497e-06 #> 930     11.9698 0.00182885 0.00182885 0.7      0.7  0.15635300 2.49451e-02 #>     Like+log(s) SuprPer Use    residuals #> 925   -0.500223      NA   1  0.355910344 #> 926   -0.934409      NA   1 -0.220276535 #> 927   -1.196710      NA   1 -0.036166093 #> 928   -1.149000      NA   1 -0.099471269 #> 929   -0.356667      NA   1  0.002822391 #> 930   -0.331730      NA   1  0.156349038"},{"path":"https://pifscstockassessments.github.io/ss3diags/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Henning Winker. Author. Felipe Carvalho. Author. Massimiliano Cardinale. Author. Laurence Kell. Author. Megumi Oshima. Author, maintainer. Eric Fletcher. Author.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Winker H, Carvalho F, Cardinale M, Kell L, Oshima M, Fletcher E (2024). ss3diags: Stock Synthesis Model Diagnostics Intergated Stock Assessments. R package version 2.1.1, https://github.com/PIFSCstockassessments/ss3diags.","code":"@Manual{,   title = {ss3diags: Stock Synthesis Model Diagnostics for Intergated Stock Assessments},   author = {Henning Winker and Felipe Carvalho and Massimiliano Cardinale and Laurence Kell and Megumi Oshima and Eric Fletcher},   year = {2024},   note = {R package version 2.1.1},   url = {https://github.com/PIFSCstockassessments/ss3diags}, }"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"ss3diags-","dir":"","previous_headings":"","what":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"R package ss3diags enables users apply advanced diagnostics evaluate Stock Synthesis model. Diagnostics include residual analyses, hindcast cross-validation techniques, retrospective analyses. Functions also allow users reproduce key model diagnostics plots presented paper ‘Cookbook Using Model Diagnostics Integrated Stock Assessments’ (Carvalho et al. 2021). ss3diags Github repository provides step--step R recipes : Run jitter analysis Conduct retrospective analysis Use hindcast cross-validation log-likelood profiling R0 Run ASPM diagnostic Evaluate model fit Stock Synthesis making use comprehensive collection R functions available R packages r4ss ss3diags.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"ss3diags currently supported CRAN. can install development version ss3diags GitHub : package installed can loaded : examples run common diagnostic tests SS models visualize results diagnostic tests using r4ss ss3diags packages, please refer articles package website.","code":"# install.packages(\"remotes\") remotes::install_github(\"PIFSCstockassessments/ss3diags\") library(ss3diags)"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"contributing-to-ss3diags","dir":"","previous_headings":"","what":"Contributing to ss3diags","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"like contribute ss3diags suggestions diagnostic tests include package, can submit new issue email Meg megumi.oshima@noaa.gov.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"reference","dir":"","previous_headings":"","what":"Reference","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"cite ss3diags publication can use","code":"citation(\"ss3diags\") #> To cite package 'ss3diags' in publications use: #>  #>   Winker H, Carvalho F, Cardinale M, Kell L, Oshima M, Fletcher E #>   (2023). _ss3diags: Stock Synthesis Model Diagnostics for Intergated #>   Stock Assessments_. R package version 2.1.1, #>   . #>  #> A BibTeX entry for LaTeX users is #>  #>   @Manual{, #>     title = {ss3diags: Stock Synthesis Model Diagnostics for Intergated Stock Assessments}, #>     author = {Henning Winker and Felipe Carvalho and Massimiliano Cardinale and Laurence Kell and Megumi Oshima and Eric Fletcher}, #>     year = {2023}, #>     note = {R package version 2.1.1}, #>     url = {https://github.com/PIFSCstockassessments/ss3diags}, #>   }"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"disclaimer","dir":"","previous_headings":"","what":"Disclaimer","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"United States Department Commerce (DOC) GitHub project code provided ‘’ basis user assumes responsibility use. DOC relinquished control information longer responsibility protect integrity, confidentiality, availability information. claims Department Commerce stemming use GitHub project governed applicable Federal law. reference specific commercial products, processes, services service mark, trademark, manufacturer, otherwise, constitute imply endorsement, recommendation favoring Department Commerce. Department Commerce seal logo, seal logo DOC bureau, shall used manner imply endorsement commercial product activity DOC United States Government.”","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":null,"dir":"Reference","previous_headings":"","what":"Francis Weighting for compositional data — SScompsTA1.8","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"TA1.8 Francis function modified r4ss::SSMethod.TA1.8 r4ss::SSMethod.Cond.TA1.8 apply Francis weighting method TA1.8 length-, age-, generalized size-composition data, conditional age--length data Stock Synthesis model. conditional age--length data, mean age year calculated based recommendations Punt (2015). main purpose create dataframe annual observed expected mean length age fleet used calculate residuals testing model fit. function used SSplotRunstest SSplotJABBAres.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"","code":"SScompsTA1.8(   ss3rep,   type = c(\"len\", \"age\", \"size\", \"con\"),   fleet = NULL,   seas = NULL,   plotit = FALSE,   maxpanel = 1000 )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"ss3rep Stock Synthesis output read r4SS function SS_output type string either 'len' (length composition data), 'size' (generalized size composition data), 'age' (age composition data), 'con' (conditional age length data) fleet vector one fleet numbers whose data analysed simultaneously, NULL, fleets analysed seas string indicating treat data multiple seasons 'comb' - combine seasonal data year plot Yr 'sep' - treat season separately, plotting Yr.S. .null(seas), assumed one season option 'comb' used. plotit TRUE, make illustrative plot like one panels Fig. 4 Francis (2011). maxpanel maximum number panels within plot, default 1000","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"ss_out data.frame observed, predicted mean length/age 95% confidence intervals based stage 1 stage 2 weighting runs_dat data.frame observed predicted mean length age year/fleet.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"Francis, R..C.C. (2011). Data weighting statistical fisheries stock assessment models. Canadian Journal Fisheries Aquatic Sciences 68: 1124-1138. #' Punt, .E. (2015). insights data weighting integrated stock assessments. Fish. Res.  0.05 (residuals random) failed p-value < 0.5 (residuals random)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSplotRunstest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Residual Diagnostics — SSplotRunstest","text":"Henning Winker (JRC-EC) Laurance Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":null,"dir":"Reference","previous_headings":"","what":"Read SS MCMC — SSreadMCMC","title":"Read SS MCMC — SSreadMCMC","text":"function read mcmc file outputs Stock Synthesis model","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read SS MCMC — SSreadMCMC","text":"","code":"SSreadMCMC(mcmcdir)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read SS MCMC — SSreadMCMC","text":"mcmcdir file path folder derived_posteriors.sso file","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read SS MCMC — SSreadMCMC","text":"Stock Synthesis mcmc output file","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read SS MCMC — SSreadMCMC","text":"Henning Winker (JRC-EC) & Laurence Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Composition Data from Multiple SS Models — SSretroComps","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"Wrapper get observed expected mean length/age multiple Stock Synthesis models.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"","code":"SSretroComps(retroModels)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"retroModels object list replists r4ss::SSgetoutput()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"list observed expected mean Length/age comps (c.f. ss3rep[[\"cpue\"]])","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"Henning Winker","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"Function calculating RMSE used SSplotJABBAres()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"","code":"SSrmse(   ss3rep,   quants = c(\"cpue\", \"len\", \"age\", \"con\"),   seas = NULL,   indexselect = NULL )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"ss3rep output SS_output() quants dataset calculate RMSE . \"cpue\" index abundance, \"len\" length comp, \"age\" age composition, \"con\" conditional age--length. seas string indicating treat data multiple seasons 'comb' - combine seasonal data year plot Yr 'sep' - treat season separately, plotting Yr.S. .null(seas), assumed one season option 'comb' used. indexselect Vector fleet numbers model compare","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"returns list includes RMSE table output (fleet combined) dataframe residuals can used creating SSplotJABBAres() plot","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":null,"dir":"Reference","previous_headings":"","what":"Residual Diagnostics Plot — SSrunstest","title":"Residual Diagnostics Plot — SSrunstest","text":"Function residual diagnostics. Outputs runs test table gives runs test p-values, runs test passed (p-value > 0.05, residuals random) failed (p-value < 0.05, residuals random), 3x sigma limits indices mean age length type input data (cpue, length comp, age comp, size comp, conditional age--length).","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Residual Diagnostics Plot — SSrunstest","text":"","code":"SSrunstest(   ss3rep = ss3diags::simple,   mixing = \"less\",   quants = c(\"cpue\", \"len\", \"age\", \"con\")[1],   indexselect = NULL,   verbose = TRUE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Residual Diagnostics Plot — SSrunstest","text":"ss3rep Stock Synthesis output read r4ss::SS_output() mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation quants optional use c(\"cpue\",\"len\",\"age\",\"con\"), default uses \"cpue\". \"cpue\" Index abundance data \"len\" Length composition data \"age\" Age composition data \"con\" Conditional age--length data indexselect Vector fleet numbers model compare verbose Report progress R GUI?","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Residual Diagnostics Plot — SSrunstest","text":"dataframe runs test p-value, test passed failed, 3x sigma high low limits, type data used. Rows fleet. Note, runs test passed p-value > 0.05 (residuals random) failed p-value < 0.5 (residuals random)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Residual Diagnostics Plot — SSrunstest","text":"Henning Winker (JRC-EC) Laurance Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Stock Status Settings — SSsettingsBratioF","title":"Get Stock Status Settings — SSsettingsBratioF","text":"function get Bratio F settings","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Stock Status Settings — SSsettingsBratioF","text":"","code":"SSsettingsBratioF(ss3rep, status = c(\"Bratio\", \"F\"), verbose = TRUE)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Stock Status Settings — SSsettingsBratioF","text":"ss3rep r4ss::SSgetoutput() status covarying stock status quantaties extract Hessian verbose Report progress R GUI?","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Stock Status Settings — SSsettingsBratioF","text":"output list Bratio F settings","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Stock Status Settings — SSsettingsBratioF","text":"Henning Winker (JRC-EC)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot Indices — ensemble_plot_index","title":"Plot Indices — ensemble_plot_index","text":"function plot different fits single index abundance","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot Indices — ensemble_plot_index","text":"","code":"ensemble_plot_index(   summaryoutput,   varlist,   indexfleets = 1,   verbose = TRUE,   legendloc = \"topright\",   legendcex = 1,   legendsp = 0.9,   legendncol = 1,   type = \"l\" )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot Indices — ensemble_plot_index","text":"summaryoutput summaryoutput varlist variable list indexfleets Fleet vector index verbose Option output messages Rconsole legendloc Location legend. Either string like \"topleft\" vector two numeric values representing fraction maximum x y dimensions, respectively. See ?legend info string options. legendcex Allows adjust legend cex legendsp Space legend labels legendncol Number columns legend. type Type parameter passed points (default 'o' overplots points top lines)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":null,"dir":"Reference","previous_headings":"","what":"Runs Test for Residuals — ssruns_sig3","title":"Runs Test for Residuals — ssruns_sig3","text":"function uses randtests::runs.test perform runs test residuals determine randomly distributed. also calculates 3 x sigma limits","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Runs Test for Residuals — ssruns_sig3","text":"","code":"ssruns_sig3(x, type = NULL, mixing = \"less\")"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Runs Test for Residuals — ssruns_sig3","text":"x residuals CPUE fits type c(\"resid\",\"observations\") mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation ","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Runs Test for Residuals — ssruns_sig3","text":"runs p value 3 x sigma limits","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Runs Test for Residuals — ssruns_sig3","text":"runs test conducted library(randtests)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Runs Test for Residuals — ssruns_sig3","text":"Henning Winker (JRC-EC) Laurence Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-210","dir":"Changelog","previous_headings":"","what":"ss3diags 2.1.0","title":"ss3diags 2.1.0","text":"RMSE calculations modularized standalone function can called independently SSplotJABBAres() SSrmse(). (#50) Bugfixes adjusting y-axis limits SSplotRunstest SSplotJABBAres: Use ylim parameter adjust y-axis limits. (#46) Added option remove median trajectory SSplotKobe() (#3) Added rlang, dplyr, magrittr dependencies. SSmase SSplotHcxval: Corrected validation messsage clarify validation issue fix issue code styler. (#33, #35) Added Date field DESCRIPTION. DESCRIPTION metadata now used generate package citations. (#25) Package vingettes formatted html_vignette reduce file size. Removed redundant PDF word document versions ss3diags_Handbook vignette. Enabled markdown support roxygen. Enabled Cross-reference links.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-203","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.3","title":"ss3diags 2.0.3","text":"Changed r4ss dependency 1.44.0 (CRAN version) . Replaced default R CMD CHECK workflow NOAA-fish-tools/ghactions4r’s version. Fixed Ensemble Quantile Shading Issues (#4) Replaced example datasets ss3diags cookbook, handbook current “simple” ensemble model. Fixup minor code documentation formatting issues. SSmase SSplotHcxval: Fixed code styler’s dollar subset conversion issues. example:`message(‘x$name 1,2,3,4’)`","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-202","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.2","title":"ss3diags 2.0.2","text":"Changed r4ss CRAN version (1.36.1) dependency development version legendfun -> r4ss::add_legend pngfun -> r4ss::save_png rc -> r4ss::rich_colors_short sspar -> r4ss::sspar Fix SSplotRetro.R indention causing issues code styler","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-201","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.1","title":"ss3diags 2.0.1","text":"Change SSplotJABBAres show combined seasonal data boxplots Fixup links Cookbook sripts. Formatted DESCRIPTION URL BugReports links PIFSCstockassessments repo add R package site.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-200","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.0","title":"ss3diags 2.0.0","text":"simple, cod-like, Stock Synthesis model, simulated via ss3sim, replaces Pacific North Hake (pac.hke) North Atlantic Shortfin Mako Shark (natl.sma) example datasets. SSplotRetro: fixed bug shading uncertainty area shows xlims specified. SSplotJABBAres: added ‘con’ option subplots argument conditional age--length data can plotted. Also added seas argument user can specify data combined across seasons within year kept separate. SScompsTA1.8: added seas argument users can specify data combined across seasons within year kept separate. SSplot functions (SSplotModelComp, SSplotEnsemble, SSplotHCxval, SSplotJABBAres, SSplotRetro): Marked plot, png, pdf, print, new deprecated. defunct future version. Added NEWS.md file track changes package.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-108","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.8","title":"ss3diags 1.0.8","text":"Fixed MASE","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-107","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.7","title":"ss3diags 1.0.7","text":"Bug fixes","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-106","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.6","title":"ss3diags 1.0.6","text":"Improved SSdiagsMCMC","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-105","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.5","title":"ss3diags 1.0.5","text":"Updated SSdeltaMVLN","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-104","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.4","title":"ss3diags 1.0.4","text":"Reference: authors changes","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-103","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.3","title":"ss3diags 1.0.3","text":"Added annF_ quantaties","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-102","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.2","title":"ss3diags 1.0.2","text":"Added aut","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-101","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.1","title":"ss3diags 1.0.1","text":"Added SSplotH","code":""}]
+[{"path":"https://pifscstockassessments.github.io/ss3diags/CODE_OF_CONDUCT.html","id":null,"dir":"","previous_headings":"","what":"Code of Conduct","title":"Code of Conduct","text":"follow NFMS Fisheries Toolbox Code Conduct. NFMS Fisheries Toolbox Code Conduct adapted Contributor Covenant, version 1.4, available https://www.contributor-covenant.org/version/1/4/code--conduct.html answers common questions code conduct, see https://www.contributor-covenant.org/faq","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/CONTRIBUTING.html","id":null,"dir":"","previous_headings":"","what":"Contributing to ss3diags","title":"Contributing to ss3diags","text":"Thank interest contributing! strive follow NMFS Fisheries Toolbox Contribution Guide. Note guidelines, rules, open collaborations ways may work better . Please feel free reach us opening issue repository emailing project maintatainer megumi.oshima@noaa.gov. project everyone participating governed NMFS Fisheries Toolbox Code Conduct. participating, expected uphold code. Please report unacceptable behavior fisheries.toolbox@noaa.gov. Note maintainers ss3diags access email account, unacceptable behavior maintainers can also reported .","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Jitter Analysis","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running retrospective (case dir_jitter). easy way get latest release stock synthesis use r4ss function get_ss3_exe(). run model dir_jitter first produce necessary output files. recommended jitter runs subdirectory model run. keep output files separate diagnostic tests may run.","code":"install_github(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_jitter <- file.path(tempdir(check = TRUE), \"jitter\") dir.create(dir_jitter, showWarnings = FALSE, recursive = TRUE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_jitter) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_jitter, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmp6Xyarr/jitter/ss3 r4ss::run(dir = dir_jitter, exe = \"ss3\", verbose = FALSE) #> [1] \"ran model\""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"jitter","dir":"Articles","previous_headings":"","what":"Jitter","title":"Jitter Analysis","text":"example, run 50 jitters. jitter() function automates entire process need give arguments run produce total likelihoods run. Full documentation jitter() function can found r4ss website. analyze output 50 runs, use r4ss::SSgetoutput() r4ss::SSsummarize() shown . key sections may want check compare across models , likelihoods, derived quantities, estimated parameters. may also want check models converged. can check maximum gradients make sure small (< 0.0001). can also compare estimated spawning biomass, extreme values (+2x <0.5x base spawning biomass) suggests model didn’t converge.","code":"Njitter <- 50 jit.likes <- r4ss::jitter(   dir = dir_jitter,   Njitter = Njitter,   init_values_src = 1,   jitter_fraction = 0.1,   exe = \"ss3\",   printlikes = FALSE,   verbose = FALSE ) jit_mods <- SSgetoutput(   keyvec = 0:Njitter, # 0 to include reference run (Report0.sso)   getcomp = FALSE,   dirvec = dir_jitter,   getcovar = FALSE,   verbose = FALSE ) jit_summary <- SSsummarize(jit_mods, verbose = FALSE) head(jit_summary$likelihoods) #>       replist0     replist1     replist2     replist3     replist4     replist5 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>       replist6     replist7     replist8     replist9    replist10    replist11 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist12    replist13    replist14    replist15    replist16    replist17 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist18    replist19    replist20    replist21    replist22    replist23 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist24    replist25    replist26    replist27    replist28    replist29 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist30    replist31    replist32    replist33    replist34    replist35 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist36    replist37    replist38    replist39    replist40    replist41 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist42    replist43    replist44    replist45    replist46    replist47 #> 1  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02  7.54302e+02 #> 2  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10  1.33479e-10 #> 3  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01  1.74852e-01 #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 -7.11813e+00 #> 5  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02  3.66756e+02 #> 6  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02  2.31845e+02 #>      replist48    replist49    replist50       Label #> 1  7.54302e+02  7.54302e+02  7.54302e+02       TOTAL #> 2  1.33479e-10  1.33479e-10  1.33479e-10       Catch #> 3  1.74852e-01  1.74852e-01  1.74852e-01 Equil_catch #> 4 -7.11813e+00 -7.11813e+00 -7.11813e+00      Survey #> 5  3.66756e+02  3.66756e+02  3.66756e+02 Length_comp #> 6  2.31845e+02  2.31845e+02  2.31845e+02    Age_comp head(jit_summary$quants) #>   replist0 replist1 replist2 replist3 replist4 replist5 replist6 replist7 #> 1  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8  54773.8 #> 2  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4 #> 3  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4  26071.4 #> 4  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1  24096.1 #> 5  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1  22126.1 #> 6  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5  20143.5 #>   replist8 replist9 replist10 replist11 replist12 replist13 replist14 replist15 #> 1  54773.8  54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2  26071.4  26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3  26071.4  26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4  24096.1  24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5  22126.1  22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6  20143.5  20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist16 replist17 replist18 replist19 replist20 replist21 replist22 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist23 replist24 replist25 replist26 replist27 replist28 replist29 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist30 replist31 replist32 replist33 replist34 replist35 replist36 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist37 replist38 replist39 replist40 replist41 replist42 replist43 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>   replist44 replist45 replist46 replist47 replist48 replist49 replist50 #> 1   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8   54773.8 #> 2   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 3   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4   26071.4 #> 4   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1   24096.1 #> 5   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1   22126.1 #> 6   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5   20143.5 #>         Label   Yr #> 1  SSB_Virgin   NA #> 2 SSB_Initial   NA #> 3    SSB_2011 2011 #> 4    SSB_2012 2012 #> 5    SSB_2013 2013 #> 6    SSB_2014 2014 head(jit_summary$pars) #>    replist0  replist1  replist2  replist3  replist4  replist5  replist6 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>    replist7  replist8  replist9 replist10 replist11 replist12 replist13 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist14 replist15 replist16 replist17 replist18 replist19 replist20 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist21 replist22 replist23 replist24 replist25 replist26 replist27 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist28 replist29 replist30 replist31 replist32 replist33 replist34 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist35 replist36 replist37 replist38 replist39 replist40 replist41 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist42 replist43 replist44 replist45 replist46 replist47 replist48 #> 1  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 2 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 22.769000 #> 3 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 71.807200 #> 4  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165  0.142165 #> 5  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #> 6  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000  0.100000 #>   replist49 replist50                 Label Yr recdev #> 1  0.100000  0.100000 NatM_uniform_Fem_GP_1 NA  FALSE #> 2 22.769000 22.769000    L_at_Amin_Fem_GP_1 NA  FALSE #> 3 71.807200 71.807200    L_at_Amax_Fem_GP_1 NA  FALSE #> 4  0.142165  0.142165    VonBert_K_Fem_GP_1 NA  FALSE #> 5  0.100000  0.100000     CV_young_Fem_GP_1 NA  FALSE #> 6  0.100000  0.100000       CV_old_Fem_GP_1 NA  FALSE # Maximum gradient converged_grad <- which(jit_summary$maxgrad < 0.0001)  converged_ssb <- jit_summary$SpawnBio %>%   mutate(across(c(1:(Njitter + 1)),     .fns = ~ . / replist0   )) %>% # for each column, divide SSB by SSB from the reference run (replist)   select(-Label) %>%   pivot_longer(col = c(1:(Njitter + 1)), names_to = \"jitter\", values_to = \"SSB\") %>%   pivot_wider(names_from = Yr, values_from = SSB) %>%   mutate(rownumber = seq(1, nrow(.))) %>%   tibble::column_to_rownames(\"jitter\") %>%   filter_at(vars(1:(ncol(.) - 1)), all_vars((.) < 2 & (.) > 0.5)) %>% # keep only rows where SSB is a reasonable value   select(rownumber) %>%   pull(rownumber) converged_mods <- intersect(converged_grad, converged_ssb) # getting which models are in both groups converged_jitters <- jit_mods[converged_grad] converged_sum <- SSsummarize(converged_jitters, verbose = FALSE)"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Jitter.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Jitter Analysis","text":"compare likelihoods runs, plot shown . built functions (writing vignette) r4ss ss3diags generate likelihood plot, therefore provide code tidyverse syntax (using ggplot2) visualize results.  figure plots total likelihood jitter run red line indicates total likelihood value reference run. runs points red line, use converged parameter values run lowest likelihood value starting values base model. can also use r4ss::SSplotComparisons() compare spawning biomass trajectories jitter runs see impact different parameter values estimated quantities.","code":"converged_sum$likelihoods %>%   filter(str_detect(Label, \"TOTAL\")) %>%   select(-Label) %>%   pivot_longer(cols = everything(), names_to = \"jitter\", values_to = \"likelihood\") %>%   separate(jitter, into = c(\"replist\", \"jitter\"), sep = \"(?<=[A-Za-z])(?=[0-9])\") %>%   mutate(jitter = as.numeric(jitter)) %>%   ggplot(aes(x = jitter, y = likelihood)) +   geom_point(size = 3) +   geom_hline(aes(yintercept = likelihood[1]), color = \"red\") +   theme_classic() +   labs(     y = \"Total Likelihood\",     x = \"Jitter runs at a converged solution\"   ) SSplotComparisons(converged_sum,   subplots = 2,   ylimAdj = 1,   new = FALSE ) #> showing uncertainty for all models #> subplot 2: spawning biomass with uncertainty intervals"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Retrospective Analysis","text":"run stock synthesis model, 4 input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running retrospective (case dir_retro). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_retro <- file.path(tempdir(check = TRUE), \"retrospectives\") dir.create(dir_retro, showWarnings = FALSE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_retro) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_retro, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpUqXETR/retrospectives/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"retrospective-analysis","dir":"Articles","previous_headings":"","what":"Retrospective Analysis","title":"Retrospective Analysis","text":"4 input files SS executable file, can run retrospective analysis shown . running five one-year peels, run, one five years data removed reference model model re-run total five times (.e. peel 1 removes last year data, peel 2 removes last 2 years data, etc.) . number year peels can adjusted years argument. SS executable file using named something “ss3” (e.g. ss_opt_win.exe), need specify argument exe = \"ss_opt_win\". Full documentation retro() function can found r4ss website.","code":"r4ss::retro(dir = dir_retro, exe = \"ss3\", years = 0:-5, verbose = FALSE) #> Warning in base::sink(type = \"output\", split = FALSE): no sink to remove"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Retrospective Analysis","text":"visualize outputted results inspect retrospective patterns, need load report files R use SSplotRetro() function ss3diags. easiest way load multiple report files using r4ss::SSgetoutput() r4ss::SSsummarize() functions. default sub-directories peel, 0 5, labeled retro0 retro-5.  default settings plot spawning stock biomass time series peel, reference run (.e. original, full time series model) “Ref” line successive peel colored lines labeled terminal year value. solid line ends terminal year followed dashed line extending circle representing one year forecast estimate. Displaying projected SSB value helps assessing forecast bias. note, forecasts done automatically using r4ss::retro() based settings forecast.ss. grey shaded area represents 95% confidence intervals uncertainty around spawning biomass time series. Displayed center plot combined Mohn’s \\(\\rho\\) retrospective runs, parentheses forecast Mohn’s \\(\\rho\\).","code":"retro_mods <- r4ss::SSgetoutput(dirvec = file.path(dir_retro, \"retrospectives\", paste0(\"retro\", seq(0, -5, by = -1))), verbose = F) retroSummary <- r4ss::SSsummarize(retro_mods, verbose = F) SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE) #> Mohn's Rho stats, including one step ahead forecasts: #>   type     peel         Rho  ForecastRho #> 1  SSB     2021 -0.20753686 -0.221050163 #> 2  SSB     2020 -0.19601072 -0.227304734 #> 3  SSB     2019 -0.29238505 -0.338600758 #> 4  SSB     2018 -0.00474920 -0.007462034 #> 5  SSB     2017  0.08716428  0.098849082 #> 6  SSB Combined -0.12270351 -0.139113722"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Visualizing Output","what":"Customizing the Plot","title":"Retrospective Analysis","text":"Retro plots can customized many ways, common features may want specify : removing uncertainty intervals adjusting years shown x-axis turning 1-year ahead forecasting displaying combined \\(\\rho\\) value plot Examples changes shown , incrementally making adjustment.  Additionally, fishing mortality can plotted instead spawning biomass replacing subplots = \"SSB\" subplots = \"F\"","code":"r4ss::sspar(mfrow = c(2, 2), plot.cex = 0.8) retro1 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE) #> Mohn's Rho stats, including one step ahead forecasts: retro2 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022)) #> Mohn's Rho stats, including one step ahead forecasts: retro3 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022), forecast = FALSE) #> Mohn's Rho stats, including one step ahead forecasts: retro4 <- SSplotRetro(retroSummary, subplots = \"SSB\", add = TRUE, uncertainty = FALSE, xlim = c(2015, 2022), forecast = FALSE, showrho = FALSE, forecastrho = FALSE) #> Mohn's Rho stats, including one step ahead forecasts:"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/Retrospective-Analysis.html","id":"summary-table","dir":"Articles","previous_headings":"Visualizing Output","what":"Summary Table","title":"Retrospective Analysis","text":"addition retrospective plots, summary statistics table can produced using SShcbias(). table includes type estimate (SSB F) year removed “peel” Mohn’s \\(\\rho\\) forecast bias year overall (“Combined”). Mohn’s \\(\\rho\\) measure severity bias retrospective patterns forecast bias estimate bias forecasted quantities years data removed. rule thumb proposed Hurtado-Ferror et al. (2014) Mohn’s \\(\\rho\\) values long-lived species, \\(\\rho\\) value fall -0.15 0.20.","code":"SShcbias(retroSummary) #> Mohn's Rho stats, including one step ahead forecasts: #>    type     peel         Rho   ForcastRho #> 1   SSB     2021 -0.20753686 -0.221050163 #> 2   SSB     2020 -0.19601072 -0.227304734 #> 3   SSB     2019 -0.29238505 -0.338600758 #> 4   SSB     2018 -0.00474920 -0.007462034 #> 5   SSB     2017  0.08716428  0.098849082 #> 6   SSB Combined -0.12270351 -0.139113722 #> 7     F     2021  0.28425747  0.285936183 #> 8     F     2020  0.30941305  0.349748774 #> 9     F     2019  0.52629045  0.632574831 #> 10    F     2018  0.01822898  0.022822958 #> 11    F     2017 -0.04896989 -0.053882358 #> 12    F Combined  0.21784401  0.247440078"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"ASPM","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running ASPM (case dir_aspm). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_tmp <- tempdir(check = TRUE) dir_aspm <- file.path(dir_tmp, \"aspm\") dir.create(dir_aspm, showWarnings = FALSE, recursive = TRUE) list.files(files_path) ## [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_tmp) ## [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_tmp, version = \"v3.30.21\") ## The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmpb2T15m/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"aspm","dir":"Articles","previous_headings":"","what":"ASPM","title":"ASPM","text":"4 input files, need determine components need turned run ASPM. ASPM depend index abundance catch data, composition data, recruitment deviations, etc. need turned . provide example includes multiple types data recruitment deviations, however, exact steps necessary individual model may vary depending complexity components included. Therefore steps may fully comprehensive model sure check components may need change. , show use r4ss functions make necessary changes control.ss ss.par files.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"generate-files","dir":"Articles","previous_headings":"ASPM","what":"Generate files","title":"ASPM","text":"order get ss.par file, need run model . also produce new data control file use input files. run model dir_tmp copy new files dir_aspm.","code":"r4ss::run(dir = dir_tmp, verbose = FALSE, exe = \"ss3\") ## [1] \"ran model\" files <- c(\"data_echo.ss_new\", \"control.ss_new\", \"starter.ss\", \"forecast.ss\", \"ss.par\", \"ss3\") file.copy(from = file.path(dir_tmp, files), to = dir_aspm) ## [1] TRUE TRUE TRUE TRUE TRUE TRUE"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"recruitment-deviations","dir":"Articles","previous_headings":"ASPM","what":"Recruitment Deviations","title":"ASPM","text":"Set recruitment devations ss.par 0.","code":"par <- SS_readpar_3.30(   parfile = file.path(dir_aspm, \"ss.par\"),   datsource = file.path(dir_aspm, \"data_echo.ss_new\"),   ctlsource = file.path(dir_aspm, \"control.ss_new\"),   verbose = FALSE ) par$recdev1 ##       year      recdev ##  [1,] 2011 -0.06005247 ##  [2,] 2012 -0.01284866 ##  [3,] 2013  0.13478706 ##  [4,] 2014  0.11410144 ##  [5,] 2015 -0.08325396 ##  [6,] 2016  0.14556845 ##  [7,] 2017 -0.12973978 ##  [8,] 2018 -0.18308123 ##  [9,] 2019  0.02442762 ## [10,] 2020 -0.08979813 ## [11,] 2021 -0.07812317 ## [12,] 2022  0.21801284 par$recdev_forecast ##       year recdev ##  [1,] 2023      0 ##  [2,] 2024      0 ##  [3,] 2025      0 ##  [4,] 2026      0 ##  [5,] 2027      0 ##  [6,] 2028      0 ##  [7,] 2029      0 ##  [8,] 2030      0 ##  [9,] 2031      0 ## [10,] 2032      0 par$recdev1[, \"recdev\"] <- 0  # Would run if forecasts recdevs were not already 0 # par$recdev_forecast[,\"recdev\"] <- 0 SS_writepar_3.30(   parlist = par,   outfile = file.path(dir_aspm, \"ss.par\"),   overwrite = T, verbose = FALSE ) ## $headerlines ## [1] \"# Number of parameters = 32 Objective function value = 754.301687441726  Maximum gradient component = 8.77017492766611e-07\" ## [2] \"# dummy_parm:\"                                                                                                              ## [3] \"1.00000000000\"                                                                                                              ##  ## $MG_parms ##                            INIT       ESTIM ## NatM_p_1_Fem_GP_1    0.10000000  0.10000000 ## L_at_Amin_Fem_GP_1  22.76900000 22.76899194 ## L_at_Amax_Fem_GP_1  71.80720000 71.80721125 ## VonBert_K_Fem_GP_1   0.14216500  0.14216482 ## CV_young_Fem_GP_1    0.10000000  0.10000000 ## CV_old_Fem_GP_1      0.10000000  0.10000000 ## Wtlen_1_Fem_GP_1     0.00000244  0.00000244 ## Wtlen_2_Fem_GP_1     3.34694000  3.34694000 ## Mat50%_Fem_GP_1     55.00000000 55.00000000 ## Mat_slope_Fem_GP_1  -0.25000000 -0.25000000 ## Eggs_alpha_Fem_GP_1  1.00000000  1.00000000 ## Eggs_beta_Fem_GP_1   0.00000000  0.00000000 ## NatM_p_1_Mal_GP_1    0.00000000  0.00000000 ## L_at_Amin_Mal_GP_1   0.00000000  0.00000000 ## L_at_Amax_Mal_GP_1   0.00000000  0.00000000 ## VonBert_K_Mal_GP_1   0.00000000  0.00000000 ## CV_young_Mal_GP_1    0.00000000  0.00000000 ## CV_old_Mal_GP_1      0.00000000  0.00000000 ## Wtlen_1_Mal_GP_1     0.00000244  0.00000244 ## Wtlen_2_Mal_GP_1     3.34694000  3.34694000 ## CohortGrowDev        1.00000000  1.00000000 ## FracFemale_GP_1      0.50000000  0.50000000 ##  ## $SR_parms ##               INIT    ESTIM ## SR_LN(R0)   8.9274 8.927395 ## SR_BH_steep 0.8000 0.800000 ## SR_sigmaR   0.6000 0.600000 ## SR_regime   0.0000 0.000000 ## SR_autocorr 0.0000 0.000000 ##  ## $recdev1 ##       year recdev ##  [1,] 2011      0 ##  [2,] 2012      0 ##  [3,] 2013      0 ##  [4,] 2014      0 ##  [5,] 2015      0 ##  [6,] 2016      0 ##  [7,] 2017      0 ##  [8,] 2018      0 ##  [9,] 2019      0 ## [10,] 2020      0 ## [11,] 2021      0 ## [12,] 2022      0 ##  ## $recdev_forecast ##       year recdev ##  [1,] 2023      0 ##  [2,] 2024      0 ##  [3,] 2025      0 ##  [4,] 2026      0 ##  [5,] 2027      0 ##  [6,] 2028      0 ##  [7,] 2029      0 ##  [8,] 2030      0 ##  [9,] 2031      0 ## [10,] 2032      0 ##  ## $init_F ## [1] 0.1 ##  ## $Q_parms ##                           INIT      ESTIM ## LnQ_base_SURVEY1(2)   0.476759  0.4767585 ## Q_extraSD_SURVEY1(2)  0.000000  0.0000000 ## LnQ_base_SURVEY2(3)  -6.304070 -6.3040672 ##  ## $S_parms ##                            INIT     ESTIM ## SizeSel_P_1_FISHERY(1) 56.51380 56.513807 ## SizeSel_P_2_FISHERY(1) 20.17930 20.179340 ## SizeSel_P_1_SURVEY1(2) 36.02330 36.023325 ## SizeSel_P_2_SURVEY1(2)  5.33502  5.335021 ## AgeSel_P_1_SURVEY2(3)   0.00000  0.000000 ## AgeSel_P_2_SURVEY2(3)   0.00000  0.000000"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"starter-file","dir":"Articles","previous_headings":"ASPM","what":"Starter File","title":"ASPM","text":"Change starter file read ss.par (init_values_src = 1) use new data control files.","code":"starter <- SS_readstarter(file = file.path(dir_aspm, \"starter.ss\"), verbose = FALSE) starter$datfile <- \"data_echo.ss_new\" starter$ctlfile <- \"control.ss_new\" starter$init_values_src <- 1 SS_writestarter(starter,   dir = dir_aspm,   overwrite = TRUE,   verbose = FALSE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"control-file","dir":"Articles","previous_headings":"ASPM","what":"Control File","title":"ASPM","text":"estimation phases following parameters may need changed: length selectivity age selectivity size selectivity steepness sigmaR recruitment deviations Additionally, likelihood components may need turned well. can using lambda options control file. examples include: length-composition data age-composition data size-composition data initial F","code":"control <- SS_readctl_3.30(   file = file.path(dir_aspm, \"control.ss_new\"),   datlist = file.path(dir_aspm, \"data_echo.ss_new\"),   verbose = FALSE )  control$SR_parms ##               LO HI   INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link ## SR_LN(R0)    6.0 12 8.9274  10.3  10.0       0     1            0        0 ## SR_BH_steep  0.2  1 0.8000   0.8   1.0       0    -4            0        0 ## SR_sigmaR    0.0  2 0.6000   0.8   0.8       0    -4            0        0 ## SR_regime   -5.0  5 0.0000   0.0   1.0       0    -4            0        0 ## SR_autocorr  0.0  0 0.0000   0.0   0.0       0   -99            0        0 ##             dev_minyr dev_maxyr dev_PH Block Block_Fxn ## SR_LN(R0)           0         0      0     0         0 ## SR_BH_steep         0         0      0     0         0 ## SR_sigmaR           0         0      0     0         0 ## SR_regime           0         0      0     0         0 ## SR_autocorr         0         0      0     0         0 # Would need to run if PHASES were positive for \"steep\" and \"sigmaR\" # control$SR_parms[c(2,3),\"PHASE\"] <- c(-4,-4) control$age_selex_parms ##                       LO HI INIT PRIOR PR_SD PR_type PHASE env_var&link ## AgeSel_P_1_SURVEY2(3)  0 20    0     5    99       0   -99            0 ## AgeSel_P_2_SURVEY2(3)  0 20    0     6    99       0   -99            0 ##                       dev_link dev_minyr dev_maxyr dev_PH Block Block_Fxn ## AgeSel_P_1_SURVEY2(3)        0         0         0      0     0         0 ## AgeSel_P_2_SURVEY2(3)        0         0         0      0     0         0 # would need to run if PHASES were positive for age selectivity # control$age_selex_parms[,\"PHASE\"] <- control$age_selex_parms[,\"PHASE\"] * -1 control$size_selex_parms[, \"PHASE\"] <- control$size_selex_parms[, \"PHASE\"] * -1 control$recdev_early_phase <- -4 control$recdev_phase <- -2  new_lambdas <- data.frame(   like_comp = c(4, 4, 5, 5, 7, 7, 9, 9, 9, 10),   fleet = c(1, 2, 1, 2, 1, 2, 1, 2, 3, 1),   phase = rep(1, 10),   value = rep(0, 10),   sizefreq_method = rep(1, 10) ) new_lambdas ##    like_comp fleet phase value sizefreq_method ## 1          4     1     1     0               1 ## 2          4     2     1     0               1 ## 3          5     1     1     0               1 ## 4          5     2     1     0               1 ## 5          7     1     1     0               1 ## 6          7     2     1     0               1 ## 7          9     1     1     0               1 ## 8          9     2     1     0               1 ## 9          9     3     1     0               1 ## 10        10     1     1     0               1 control$lambdas <- new_lambdas control$N_lambdas <- nrow(new_lambdas) SS_writectl_3.30(control,   outfile = file.path(dir_aspm, \"control.ss_new\"),   overwrite = TRUE, verbose = FALSE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"run-aspm","dir":"Articles","previous_headings":"ASPM","what":"Run ASPM","title":"ASPM","text":"","code":"r4ss::run(dir = dir_aspm, exe = \"ss3\", skipfinished = FALSE, verbose = FALSE) ## [1] \"ran model\""},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"visualize-results","dir":"Articles","previous_headings":"ASPM","what":"Visualize Results","title":"ASPM","text":"compare ASPM model age-structured model, can use SSplotComparisons(). Comparing spawning biomass F estimates two models fits indices abundance can help understand enough information indices inform production function.","code":"mods <- SSgetoutput(dirvec = c(   dir_tmp,   dir_aspm ), verbose = FALSE)  mods_sum <- SSsummarize(mods, verbose = FALSE)  SSplotComparisons(mods_sum,   legendlabels = c(\"Ref\", \"ASPM\"),   subplots = c(2, 8, 14), new = F ) ## showing uncertainty for all models ## subplot 2: spawning biomass with uncertainty intervals ## subplot 8: F value with uncertainty ## subplot 14: index fits on a log scale"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Hindcast Cross-Validation","text":"HCxval implemented using ss3diags::SSplotHCxval(), produces novel HCxval diagnostic plot computes MASE scores indices abundance, mean lengths, mean ages observations falling within hindcast evaluation period.  plots , see , fleets, model fairly good prediction skills index abundance data (compared random walk). plots, white points white dashed line observed data included model truncated time series. larger colored points observed data retrospective peel (.e. data removed peel). smaller colored points dashed lines show model predicted values. “Ref” line model run complete time series data. grey shaded areas represent uncertainty data, darker portion indicating portion included model lighter portion indicating ones removed projected. MASE scores displayed MASE adjusted MASE parentheses.","code":"r4ss::sspar(mfrow = c(1, 2)) SSplotHCxval(retroSummary, subplots = \"cpue\", add = TRUE) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with only 1 of 5  prediction residuals for Index SURVEY1  #>  #>  Warning:  Unequal spacing of naive predictions residuals may influence the interpretation of MASE #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index SURVEY2 #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR  MAE.base  MASE.adj n.eval #> 1 SURVEY1      1 0.5026435 0.08879379 0.1766536 0.5026435      1 #> 2 SURVEY2      1 0.6149530 0.37737925 0.6136717 0.6149530      5"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"composition-data","dir":"Articles","previous_headings":"Visualizing Output","what":"Composition Data","title":"Hindcast Cross-Validation","text":"visualize mean length mean age, need add additional step. forecast length- age-composition information stored “ghost files” SS report.sso file, need use ss3diags::SSretroComps() extract summarize information creating plots.","code":"retroSummary_comps <- SSretroComps(retro_mods)  r4ss::sspar(mfrow = c(1, 2)) hcl <- SSplotHCxval(retroSummary_comps, subplots = \"len\", add = TRUE, ylim = c(40, 75)) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #>  Computing MASE with only 1 of 5  prediction residuals for Index SURVEY1  #>  #>  Warning:  Unequal spacing of naive predictions residuals may influence the interpretation of MASE #>  #> MASE stats by Index:"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Visualizing Output","what":"Customizing the Plot","title":"Hindcast Cross-Validation","text":"HCxval plots can customized many ways, common features may want specify : displaying specific fleet removing uncertainty intervals adjusting x- y-axis displaying adjusted MASE value plot Examples changes shown , incrementally making adjustment.","code":"r4ss::sspar(mfrow = c(2, 2)) SSplotHCxval(retroSummary_comps, subplots = \"len\", add = TRUE, indexselect = 1) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE, ylim = c(45, 70) ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 SSplotHCxval(retroSummary_comps,   subplots = \"len\", add = TRUE,   indexselect = 1, indexUncertainty = FALSE, ylim = c(45, 70), show.mase.adj = F ) #> Plotting Hindcast Cross-Validation (one-step-ahead)  #>  #>  Computing MASE with all 5 of 5  prediction residuals for Index FISHERY #>  #> MASE stats by Index: #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/hcxval.html","id":"summary-table","dir":"Articles","previous_headings":"","what":"Summary Table","title":"Hindcast Cross-Validation","text":"addition HCxval plots, summary statistics table can produced using ss3diags::SSmase(). table includes: Index - fleet Season MASE - MASE score MAE.PR - mean absolute error prediction residuals MASE.base - naive prediction MASE.adj - adjusted MASE score n.eval - number points prediction skill calculated Adjusted MASE gets invoked cases inter-annual variation observed values small (default MAE < 0.1 naive predictions log(y[t+1])-log(y[t])). reasoning prediction residuals must already accurate fall threshold. adjusted MASE essential keep naive prediction MAE denominator MASE maximum. show effect changing adjustment threshold default MAE.base.adj = 0.1 larger value MAE.base.adj = 0.15 MASE ratio mean absolute error prediction residuals MAE.PR residuals naive predictions MAE.base MASE.adj","code":"mase1 <- SSmase(retroSummary_comps, quant = \"len\", MAE.base.adj = 0.1) mase1 #>     Index Season      MASE     MAE.PR   MAE.base  MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.1034467      5 #> 2 SURVEY1      1 0.6526074 0.05142002 0.07879167 0.5142002      1 #> 3   joint        0.4628955 0.01719056 0.03713702 0.1719056      6 SSmase(retroSummary_comps, quant = \"len\", MAE.base.adj = 0.15) #>     Index Season      MASE     MAE.PR   MAE.base   MASE.adj n.eval #> 1 FISHERY      1 0.3591138 0.01034467 0.02880609 0.06896444      5 #> 2 SURVEY1      1 0.6526074 0.05142002 0.07879167 0.34280015      1 #> 3   joint        0.4628955 0.01719056 0.03713702 0.11460372      6 mase1$MAE.PR / mase1$MAE.base #> [1] 0.3591138 0.6526074 0.4628955 mase1$MASE #> [1] 0.3591138 0.6526074 0.4628955 mase1$MAE.PR / pmax(mase1$MAE.base, 0.1) #> [1] 0.1034467 0.5142002 0.1719056 mase1$MASE.adj #> [1] 0.1034467 0.5142002 0.1719056"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"model-inputs","dir":"Articles","previous_headings":"","what":"Model inputs","title":"Likelihood Profile","text":"run Stock Synthesis model, four input files required: starter.ss, forecast.ss, control.ss, data.ss. input files example model can found within ss3diags package accessed shown . Also, r4ss package installed, need install tutorial. need make sure SS executable file either path directory running profile (case dir_profile). easy way get latest release stock synthesis use r4ss function get_ss3_exe().","code":"install.packages(\"pak\") pak::pkg_install(\"r4ss/r4ss\") library(r4ss)  files_path <- system.file(\"extdata\", package = \"ss3diags\") dir_tmp <- tempdir(check = TRUE) dir_profile <- file.path(dir_tmp, \"profile\") dir.create(dir_profile, showWarnings = FALSE, recursive = TRUE) list.files(files_path) #> [1] \"control.ss\"  \"data.ss\"     \"forecast.ss\" \"starter.ss\" file.copy(from = list.files(files_path, full.names = TRUE), to = dir_tmp) #> [1] TRUE TRUE TRUE TRUE r4ss::get_ss3_exe(dir = dir_tmp, version = \"v3.30.21\") #> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpakzV4r/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"running-a-profile-on-r0","dir":"Articles","previous_headings":"","what":"Running a Profile on R0","title":"Likelihood Profile","text":"four input files SS executable file, can run likelihood profile shown . first step run model like profile . dir_tmp copy necessary files dir_profile. ’s best run profile subdirectory main model run keep output files separate diagnostic tests may run. input files dir_profile directory, need create vector values profile across. range increments choose depend model resolution want analyze likelihood profile. example use fairly coarse resolution speed total run time. also need modify starter file changing name control file read making sure likelihood calculated non-estimated quantities. run profile, use r4ss::profile() need specify partial string name parameter profiling (case “SR_LN” match “SR_LN(R0)”), vector values profile across. newctlfile control file adjusted values profilevec can named anything prefer, just needs match put starter file “ctlfile”. Full documentation profile() function can found r4ss website.","code":"r4ss::run(dir = dir_tmp, exe = \"ss3\", verbose = FALSE) #> [1] \"ran model\" files <- c(\"data.ss\", \"control.ss_new\", \"starter.ss\", \"forecast.ss\", \"ss.par\", \"ss3\") file.copy(from = file.path(dir_tmp, files), to = dir_profile) #> [1] TRUE TRUE TRUE TRUE TRUE TRUE CTL <- SS_readctl_3.30(file = file.path(dir_profile, \"control.ss_new\"), datlist = file.path(dir_profile, \"data.ss\"))  CTL$SR_parms #>               LO HI   INIT PRIOR PR_SD PR_type PHASE env_var&link dev_link #> SR_LN(R0)    6.0 12 8.9274  10.3  10.0       0     1            0        0 #> SR_BH_steep  0.2  1 0.8000   0.8   1.0       0    -4            0        0 #> SR_sigmaR    0.0  2 0.6000   0.8   0.8       0    -4            0        0 #> SR_regime   -5.0  5 0.0000   0.0   1.0       0    -4            0        0 #> SR_autocorr  0.0  0 0.0000   0.0   0.0       0   -99            0        0 #>             dev_minyr dev_maxyr dev_PH Block Block_Fxn #> SR_LN(R0)           0         0      0     0         0 #> SR_BH_steep         0         0      0     0         0 #> SR_sigmaR           0         0      0     0         0 #> SR_regime           0         0      0     0         0 #> SR_autocorr         0         0      0     0         0 # getting the estimated r0 value r0 <- CTL$SR_parms$INIT[1] # creating a vector that is +/- 1 unit away from the estimated value in increments of 0.2 r0_vec <- seq(r0 - 1, r0 + 1, by = 0.2) r0_vec #>  [1] 7.9274 8.1274 8.3274 8.5274 8.7274 8.9274 9.1274 9.3274 9.5274 9.7274 #> [11] 9.9274 START <- SS_readstarter(file = file.path(dir_profile, \"starter.ss\"), verbose = FALSE) START$prior_like <- 1 START$ctlfile <- \"control_modified.ss\" SS_writestarter(START, dir = dir_profile, overwrite = TRUE, verbose = F) profile(   dir = dir_profile,   newctlfile = \"control_modified.ss\",   string = \"SR_LN\",   profilevec = r0_vec,   exe = \"ss3\",   verbose = FALSE ) #> running profile i=1/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.9274  7.9274        1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=2/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  7.9274  8.1274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=3/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.1274  8.3274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=4/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.3274  8.5274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=5/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.5274  8.7274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=6/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.7274  8.9274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=7/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  8.9274  9.1274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=8/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.1274  9.3274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=9/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.3274  9.5274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=10/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.5274  9.7274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #> running profile i=11/11 #> Parameter names in control file matching input vector  #> 'strings' (n=1): SR_LN(R0) #> line numbers in control file (n=1): 120 #> Wrote new file to control_modified.ss with the following changes: #>   oldvals newvals oldphase newphase oldlos newlos oldhis newhis oldprior #> 1  9.7274  9.9274       -1       -1      6      6     12     12     10.3 #>   newprior oldprsd newprsd oldprtype newprtype     comment #> 1     10.3      10      10         0         0 # SR_LN(R0) #>     Value converged[whichruns]    TOTAL       Catch Equil_catch    Survey #> 1  7.9274                 TRUE 1067.570 4.40715e-01   16.620400  6.065520 #> 2  8.1274                 TRUE  940.077 2.29735e-01   12.985200  1.965820 #> 3  8.3274                 TRUE  844.236 1.08857e-01    9.799480 -2.132340 #> 4  8.5274                 TRUE  790.513 9.17170e-06    3.930790 -5.726270 #> 5  8.7274                 TRUE  762.562 6.48948e-08    0.271032 -7.140910 #> 6  8.9274                 TRUE  754.302 1.33458e-10    0.174869 -7.118110 #> 7  9.1274                 TRUE  758.927 2.10816e-13    1.337060 -6.106700 #> 8  9.3274                 TRUE  767.708 1.90347e-13    3.424990 -4.917570 #> 9  9.5274                 TRUE  777.243 1.15331e-13    6.433440 -3.857200 #> 10 9.7274                 TRUE  787.189 6.73658e-14   10.382600 -2.563580 #> 11 9.9274                 TRUE  798.152 4.05051e-14   15.279300 -0.380771 #>    Length_comp Age_comp Size_at_age Recruitment InitEQ_Regime #> 1      453.198  341.340     230.715   19.181500   0.00000e+00 #> 2      418.750  291.595     201.557   12.989400   0.00000e+00 #> 3      393.384  257.968     179.068    6.036600   0.00000e+00 #> 4      379.721  243.456     167.416    1.713560   1.54502e-30 #> 5      370.420  234.970     163.525    0.515980   1.54502e-30 #> 6      366.756  231.845     162.399    0.244060   1.54502e-30 #> 7      367.497  233.210     162.675    0.312441   0.00000e+00 #> 8      369.543  235.957     163.170    0.529082   0.00000e+00 #> 9      371.605  238.622     163.598    0.839498   1.54502e-30 #> 10     373.376  240.872     163.942    1.178030   0.00000e+00 #> 11     374.815  242.718     164.208    1.510550   0.00000e+00 #>    Forecast_Recruitment Parm_priors Parm_softbounds Parm_devs Crash_Pen #> 1                     0           0      0.00756177         0         0 #> 2                     0           0      0.00433602         0         0 #> 3                     0           0      0.00337783         0         0 #> 4                     0           0      0.00197985         0         0 #> 5                     0           0      0.00143663         0         0 #> 6                     0           0      0.00141332         0         0 #> 7                     0           0      0.00150262         0         0 #> 8                     0           0      0.00159065         0         0 #> 9                     0           0      0.00166199         0         0 #> 10                    0           0      0.00171844         0         0 #> 11                    0           0      0.00176282         0         0"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"visualizing-output","dir":"Articles","previous_headings":"","what":"Visualizing Output","title":"Likelihood Profile","text":"profile finished running, can visualize results determine conflict data sources. data sources reach negative log-likelihood (NLL) minimum R0 value, indicates good agreement . However, likely, one reach NLL minimum different R0 values global R0 value. sign conflict data sources may require consider data weighting.  profile plot shows changes log-likelihood across selected range values contributing data components. adjustable minimum contribution threshold component must meet appear figure (data source model show plot, contribution total likelihood may large enough). steepness trajectory indicates informative () data source . example, age data plot much steeper left side minimum R0 value index data, suggests age composition data informative model. can also plot data-type fleet-specific profiles using r4ss::PinerPlot(). plotting profile length composition data fleet likelihood survey data fleet. allow us see conflicts sources main drivers.","code":"profile_mods <- SSgetoutput(dirvec = dir_profile, keyvec = 1:length(r0_vec), verbose = FALSE) profile_mods_sum <- SSsummarize(profile_mods, verbose = FALSE) SSplotProfile(profile_mods_sum,   profile.string = \"SR_LN\",   profile.label = \"SR_LN(R0)\" ) #> Parameter matching profile.string=SR_LN: SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274 #> Likelihood components showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>                      frac_change include                            label #> TOTAL                     1.0000    TRUE                            Total #> Catch                     0.0014   FALSE                            Catch #> Equil_catch               0.0525    TRUE                Equilibrium catch #> Survey                    0.0422    TRUE                       Index data #> Length_comp               0.2759    TRUE                      Length data #> Age_comp                  0.3495    TRUE                         Age data #> Size_at_age               0.2181    TRUE                 Size-at-age data #> Recruitment               0.0605    TRUE                      Recruitment #> InitEQ_Regime             0.0000   FALSE Initital equilibrium recruitment #> Forecast_Recruitment      0.0000   FALSE             Forecast recruitment #> Parm_priors               0.0000   FALSE                           Priors #> Parm_softbounds           0.0000   FALSE                      Soft bounds #> Parm_devs                 0.0000   FALSE             Parameter deviations #> Crash_Pen                 0.0000   FALSE                    Crash penalty sspar(mfrow = c(1, 2)) PinerPlot(profile_mods_sum,   component = \"Length_like\",   main = \"Length\" ) #> Parameter matching profile.string = 'R0': 'SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274, #> Fleet-specific likelihoods showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>         frac_change include #> FISHERY      0.6825    TRUE #> SURVEY1      0.3208    TRUE #> SURVEY2      0.0000   FALSE PinerPlot(profile_mods_sum,   component = \"Surv_like\",   main = \"Survey\" ) #> Parameter matching profile.string = 'R0': 'SR_LN(R0) #> Parameter values (after subsetting based on input 'models'): 7.9274, 8.1274, 8.3274, 8.5274, 8.7274, 8.9274, 9.1274, 9.3274, 9.5274, 9.7274, 9.9274, #> Fleet-specific likelihoods showing max change as fraction of total change. #> To change which components are included, change input 'minfraction'. #>         frac_change include #> FISHERY      0.0000   FALSE #> SURVEY1      0.3218    TRUE #> SURVEY2      0.9202    TRUE"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"runs-test","dir":"Articles","previous_headings":"","what":"Runs Test","title":"Residual Analyses","text":"runs test nonparametric hypothesis test randomness data sequence calculates 2-sided p-value estimate number runs (.e., sequences values sign) reference value. runs test can diagnose model misspecification using residuals fits index composition data (Carvalho et al. 2017) testing non-random patterns residuals. addition, three-sigma limits can considered useful identifying potential outliers data point three standard deviations away expected residual process average unlikely given random process error observed residual distribution. example using “simple_small” SS model included within r4ss package. can read report file model output using r4ss::SS_output() function shown .  output SSplotRunstest() includes plot residuals fleet table results runs test ‘three-sigma limit’ values. plots , shaded area represents ‘three-sigma limit’, three residual standard deviations zero. individual residual points fall outside three-sigma limit, colored red. Green shaded area indicates residuals randomly distributed (p-value >= 0.05) whereas red shaded area indicates residuals randomly distributed. Failing runs test (p-value < 0.05) can indicative misspecification conflict indices composition data.","code":"library(r4ss)  files_path <- system.file(\"extdata\", \"simple_small\", package = \"r4ss\") report <- SS_output(dir = files_path, verbose = FALSE, printstats = FALSE) sspar(mfrow = c(1, 2)) SSplotRunstest(report, add = TRUE) #> Running Runs Test Diagnostics w/ plots forIndex #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Index: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1  0.159 Passed -0.7301441 0.7301441 cpue #> 2 SURVEY2  0.887 Passed -1.1052361 1.1052361 cpue"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"customizing-the-plot","dir":"Articles","previous_headings":"Runs Test","what":"Customizing the Plot","title":"Residual Analyses","text":"Runs test plots can customized needed. common features may want specify : plotting data types (default Index Abundance) plotting specific fleet(s) adjusting y-axis range Examples changes shown , incrementally making adjustment. plot data types, can specified subplots argument, options include “cpue”, “len”, “age”, “size”, “con”. “con” conditional size--age data “size” generalized size composition data. Fleets can specified using indexselect() function, takes vector fleet numbers plot.  Note small adjustment automatically added ylim provide extra white space. third plot, even though set y-axis range -0.5 0.5, y-axis goes -0.6 0.6. want extra space, set ylimAdj = 1 done 4th plot.","code":"sspar(mfrow = c(2, 2)) SSplotRunstest(report, subplots = \"len\", indexselect = 1, add = TRUE) #> Running Runs Test Diagnostics w/ plots forMean length #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean length: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 FISHERY  0.126 Passed -0.0613176 0.0613176  len SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE, ylim = c(-0.5, 0.5)) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age SSplotRunstest(report, subplots = \"age\", indexselect = 2, add = TRUE, ylim = c(-0.5, 0.5), ylimAdj = 1) #> Running Runs Test Diagnostics w/ plots forMean age #> Plotting Residual Runs Tests #> Residual Runs Test (/w plot) stats by Mean age: #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1   0.11 Passed -0.2743816 0.2743816  age"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"summary-table","dir":"Articles","previous_headings":"Runs Test","what":"Summary Table","title":"Residual Analyses","text":"addition residual plots, SSplotRunstest() produces summary table runs test output values, including: p-value runs test test passed failed (indicated green red shading plot) upper lower limits 3-sigma interval type data tested (CPUE, length-composition, age-composition, conditional age--length) produce summary table skip plot, e.g. faciliate automated processing, use SSrunstest().","code":"rcpue <- SSrunstest(report, quants = \"cpue\") #> Running Runs Test Diagnosics for Index #> Computing Residual Runs Tests #> Residual Runs Test stats by Index: rlen <- SSrunstest(report, quants = \"len\") #> Running Runs Test Diagnosics for Mean length #> Computing Residual Runs Tests #> Residual Runs Test stats by Mean length: rbind(rcpue, rlen) #>     Index runs.p   test  sigma3.lo sigma3.hi type #> 1 SURVEY1  0.159 Passed -0.7301441 0.7301441 cpue #> 2 SURVEY2  0.887 Passed -1.1052361 1.1052361 cpue #> 3 FISHERY  0.126 Passed -0.0613176 0.0613176  len #> 4 SURVEY1  0.841 Passed -0.1725225 0.1725225  len"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/residuals.html","id":"rmse","dir":"Articles","previous_headings":"","what":"RMSE","title":"Residual Analyses","text":"RMSE root mean square error useful evaluating far predictions fall observed data. ss3diags::SSplotJABBAres() function allows visualize full time series residuals fleets indicated data (index abundance composition). example , plot residuals index abundance, mean age (age-composition), mean length (length composition) fleets.  plots , point represents difference observed expected value (residual) color-coded correspond specific fleet. solid, color-coded vertical lines horizontal dashed line (y = 0) show distance 0 residual value. Box plots summarize spread residual values across fleets within year thick solid black line loess smoother fit residual points. Total RMSE displayed top right corner. assessing plot, important see patterns trends residuals, large overall RMSE , whether data different fleets generally agrees conflicts . retrieve just RMSE residual values without generating plot, SSrmse() produces named list 2 objects, RMSE residuals. can accessed shown . function useful automating analyses.","code":"sspar(mfrow = c(2, 2)) SSplotJABBAres(report, subplots = \"cpue\", add = TRUE) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 SURVEY1       21.6     4 #> 2 SURVEY2       27.7    12 #> 3 Combined      26.3    16 SSplotJABBAres(report, subplots = \"age\", add = TRUE) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 FISHERY        9      12 #> 2 SURVEY1        8.1     4 #> 3 Combined       8.8    16 SSplotJABBAres(report, subplots = \"len\", add = TRUE, ylim = c(-0.2, 0.2)) #> Plotting JABBA residual plot. #> is plot TRUE? TRUE #> drawing plot at #> Plot exists: #> RMSE stats by Index: #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 FISHERY        2.1    12 #> 2 SURVEY1        3.4     4 #> 3 Combined       2.5    16 rmse <- SSrmse(report, quants = \"cpue\")$RMSE residuals <- SSrmse(report, quants = \"cpue\")$residuals  rmse #> # A tibble: 3 × 3 #>   Fleet    RMSE.perc  Nobs #>             #> 1 SURVEY1       21.6     4 #> 2 SURVEY2       27.7    12 #> 3 Combined      26.3    16  head(residuals) #>     Fleet Fleet_name Area   Yr Seas Subseas Month   Time Vuln_bio         Obs #> 925     2    SURVEY1    1 2013    1       2     7 2013.5 62947.50 144745.0000 #> 926     2    SURVEY1    1 2016    1       2     7 2016.5 49335.70  63760.3000 #> 927     2    SURVEY1    1 2019    1       2     7 2019.5 38132.00  59242.9000 #> 928     2    SURVEY1    1 2022    1       2     7 2022.5 34045.80  49649.7000 #> 929     3    SURVEY2    1 2011    1       2     7 2011.5  6306.83     11.5668 #> 930     3    SURVEY2    1 2012    1       2     7 2012.5  6544.96     13.9955 #>             Exp     Calc_Q      Eff_Q  SE SE_input         Dev        Like #> 925 101399.0000 1.61084000 1.61084000 0.3      0.3  0.35591400 7.03749e-01 #> 926  79472.2000 1.61084000 1.61084000 0.3      0.3 -0.22027600 2.69564e-01 #> 927  61424.7000 1.61084000 1.61084000 0.3      0.3 -0.03616590 7.26653e-03 #> 928  54842.4000 1.61084000 1.61084000 0.3      0.3 -0.09947210 5.49706e-02 #> 929     11.5342 0.00182885 0.00182885 0.7      0.7  0.00281831 8.10497e-06 #> 930     11.9698 0.00182885 0.00182885 0.7      0.7  0.15635300 2.49451e-02 #>     Like+log(s) SuprPer Use    residuals #> 925   -0.500223      NA   1  0.355910344 #> 926   -0.934409      NA   1 -0.220276535 #> 927   -1.196710      NA   1 -0.036166093 #> 928   -1.149000      NA   1 -0.099471269 #> 929   -0.356667      NA   1  0.002822391 #> 930   -0.331730      NA   1  0.156349038"},{"path":"https://pifscstockassessments.github.io/ss3diags/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Henning Winker. Author. Felipe Carvalho. Author. Massimiliano Cardinale. Author. Laurence Kell. Author. Megumi Oshima. Author, maintainer. Eric Fletcher. Author.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Winker H, Carvalho F, Cardinale M, Kell L, Oshima M, Fletcher E (2024). ss3diags: Stock Synthesis Model Diagnostics Intergated Stock Assessments. R package version 2.1.1, https://github.com/PIFSCstockassessments/ss3diags.","code":"@Manual{,   title = {ss3diags: Stock Synthesis Model Diagnostics for Intergated Stock Assessments},   author = {Henning Winker and Felipe Carvalho and Massimiliano Cardinale and Laurence Kell and Megumi Oshima and Eric Fletcher},   year = {2024},   note = {R package version 2.1.1},   url = {https://github.com/PIFSCstockassessments/ss3diags}, }"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"ss3diags-","dir":"","previous_headings":"","what":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"R package ss3diags enables users apply advanced diagnostics evaluate Stock Synthesis model. Diagnostics include residual analyses, hindcast cross-validation techniques, retrospective analyses. Functions also allow users reproduce key model diagnostics plots presented paper ‘Cookbook Using Model Diagnostics Integrated Stock Assessments’ (Carvalho et al. 2021). ss3diags Github repository provides step--step R recipes : Run jitter analysis Conduct retrospective analysis Use hindcast cross-validation log-likelood profiling R0 Run ASPM diagnostic Evaluate model fit Stock Synthesis making use comprehensive collection R functions available R packages r4ss ss3diags.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"ss3diags currently supported CRAN. can install development version ss3diags GitHub : package installed can loaded : examples run common diagnostic tests SS models visualize results diagnostic tests using r4ss ss3diags packages, please refer articles package website.","code":"# install.packages(\"remotes\") remotes::install_github(\"PIFSCstockassessments/ss3diags\") library(ss3diags)"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"contributing-to-ss3diags","dir":"","previous_headings":"","what":"Contributing to ss3diags","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"like contribute ss3diags suggestions diagnostic tests include package, can submit new issue email Meg megumi.oshima@noaa.gov.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"reference","dir":"","previous_headings":"","what":"Reference","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"cite ss3diags publication can use","code":"citation(\"ss3diags\") #> To cite package 'ss3diags' in publications use: #>  #>   Winker H, Carvalho F, Cardinale M, Kell L, Oshima M, Fletcher E #>   (2023). _ss3diags: Stock Synthesis Model Diagnostics for Intergated #>   Stock Assessments_. R package version 2.1.1, #>   . #>  #> A BibTeX entry for LaTeX users is #>  #>   @Manual{, #>     title = {ss3diags: Stock Synthesis Model Diagnostics for Intergated Stock Assessments}, #>     author = {Henning Winker and Felipe Carvalho and Massimiliano Cardinale and Laurence Kell and Megumi Oshima and Eric Fletcher}, #>     year = {2023}, #>     note = {R package version 2.1.1}, #>     url = {https://github.com/PIFSCstockassessments/ss3diags}, #>   }"},{"path":"https://pifscstockassessments.github.io/ss3diags/index.html","id":"disclaimer","dir":"","previous_headings":"","what":"Disclaimer","title":"Stock Synthesis Model Diagnostics for Intergated Stock Assessments","text":"United States Department Commerce (DOC) GitHub project code provided ‘’ basis user assumes responsibility use. DOC relinquished control information longer responsibility protect integrity, confidentiality, availability information. claims Department Commerce stemming use GitHub project governed applicable Federal law. reference specific commercial products, processes, services service mark, trademark, manufacturer, otherwise, constitute imply endorsement, recommendation favoring Department Commerce. Department Commerce seal logo, seal logo DOC bureau, shall used manner imply endorsement commercial product activity DOC United States Government.”","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":null,"dir":"Reference","previous_headings":"","what":"Francis Weighting for compositional data — SScompsTA1.8","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"TA1.8 Francis function modified r4ss::SSMethod.TA1.8 r4ss::SSMethod.Cond.TA1.8 apply Francis weighting method TA1.8 length-, age-, generalized size-composition data, conditional age--length data Stock Synthesis model. conditional age--length data, mean age year calculated based recommendations Punt (2015). main purpose create dataframe annual observed expected mean length age fleet used calculate residuals testing model fit. function used SSplotRunstest SSplotJABBAres.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"","code":"SScompsTA1.8(   ss3rep,   type = c(\"len\", \"age\", \"size\", \"con\"),   fleet = NULL,   seas = NULL,   plotit = FALSE,   maxpanel = 1000 )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"ss3rep Stock Synthesis output read r4SS function SS_output type string either 'len' (length composition data), 'size' (generalized size composition data), 'age' (age composition data), 'con' (conditional age length data) fleet vector one fleet numbers whose data analysed simultaneously, NULL, fleets analysed seas string indicating treat data multiple seasons 'comb' - combine seasonal data year plot Yr 'sep' - treat season separately, plotting Yr.S. .null(seas), assumed one season option 'comb' used. plotit TRUE, make illustrative plot like one panels Fig. 4 Francis (2011). maxpanel maximum number panels within plot, default 1000","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"ss_out data.frame observed, predicted mean length/age 95% confidence intervals based stage 1 stage 2 weighting runs_dat data.frame observed predicted mean length age year/fleet.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SScompsTA1.8.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Francis Weighting for compositional data — SScompsTA1.8","text":"Francis, R..C.C. (2011). Data weighting statistical fisheries stock assessment models. Canadian Journal Fisheries Aquatic Sciences 68: 1124-1138. #' Punt, .E. (2015). insights data weighting integrated stock assessments. Fish. Res.  0.05 (residuals random) failed p-value < 0.5 (residuals random)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSplotRunstest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Residual Diagnostics — SSplotRunstest","text":"Henning Winker (JRC-EC) Laurance Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":null,"dir":"Reference","previous_headings":"","what":"Read SS MCMC — SSreadMCMC","title":"Read SS MCMC — SSreadMCMC","text":"function read mcmc file outputs Stock Synthesis model","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Read SS MCMC — SSreadMCMC","text":"","code":"SSreadMCMC(mcmcdir)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Read SS MCMC — SSreadMCMC","text":"mcmcdir file path folder derived_posteriors.sso file","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Read SS MCMC — SSreadMCMC","text":"Stock Synthesis mcmc output file","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSreadMCMC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Read SS MCMC — SSreadMCMC","text":"Henning Winker (JRC-EC) & Laurence Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Composition Data from Multiple SS Models — SSretroComps","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"Wrapper get observed expected mean length/age multiple Stock Synthesis models.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"","code":"SSretroComps(retroModels)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"retroModels object list replists r4ss::SSgetoutput()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"list observed expected mean Length/age comps (c.f. ss3rep[[\"cpue\"]])","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSretroComps.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Retrieve Composition Data from Multiple SS Models — SSretroComps","text":"Henning Winker","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":null,"dir":"Reference","previous_headings":"","what":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"Function calculating RMSE used SSplotJABBAres()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"","code":"SSrmse(   ss3rep,   quants = c(\"cpue\", \"len\", \"age\", \"con\"),   seas = NULL,   indexselect = NULL )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"ss3rep output SS_output() quants dataset calculate RMSE . \"cpue\" index abundance, \"len\" length comp, \"age\" age composition, \"con\" conditional age--length. seas string indicating treat data multiple seasons 'comb' - combine seasonal data year plot Yr 'sep' - treat season separately, plotting Yr.S. .null(seas), assumed one season option 'comb' used. indexselect Vector fleet numbers model compare","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrmse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Function for calculating RMSE\nused for SSplotJABBAres() — SSrmse","text":"returns list includes RMSE table output (fleet combined) dataframe residuals can used creating SSplotJABBAres() plot","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":null,"dir":"Reference","previous_headings":"","what":"Residual Diagnostics Plot — SSrunstest","title":"Residual Diagnostics Plot — SSrunstest","text":"Function residual diagnostics. Outputs runs test table gives runs test p-values, runs test passed (p-value > 0.05, residuals random) failed (p-value < 0.05, residuals random), 3x sigma limits indices mean age length type input data (cpue, length comp, age comp, size comp, conditional age--length).","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Residual Diagnostics Plot — SSrunstest","text":"","code":"SSrunstest(   ss3rep,   mixing = \"less\",   quants = c(\"cpue\", \"len\", \"age\", \"con\")[1],   indexselect = NULL,   verbose = TRUE )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Residual Diagnostics Plot — SSrunstest","text":"ss3rep Stock Synthesis output read r4ss::SS_output() mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation quants optional use c(\"cpue\",\"len\",\"age\",\"con\"), default uses \"cpue\". \"cpue\" Index abundance data \"len\" Length composition data \"age\" Age composition data \"con\" Conditional age--length data indexselect Vector fleet numbers model compare verbose Report progress R GUI?","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Residual Diagnostics Plot — SSrunstest","text":"dataframe runs test p-value, test passed failed, 3x sigma high low limits, type data used. Rows fleet. Note, runs test passed p-value > 0.05 (residuals random) failed p-value < 0.5 (residuals random)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSrunstest.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Residual Diagnostics Plot — SSrunstest","text":"Henning Winker (JRC-EC) Laurance Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Stock Status Settings — SSsettingsBratioF","title":"Get Stock Status Settings — SSsettingsBratioF","text":"function get Bratio F settings","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Stock Status Settings — SSsettingsBratioF","text":"","code":"SSsettingsBratioF(ss3rep, status = c(\"Bratio\", \"F\"), verbose = TRUE)"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Stock Status Settings — SSsettingsBratioF","text":"ss3rep r4ss::SSgetoutput() status covarying stock status quantaties extract Hessian verbose Report progress R GUI?","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Stock Status Settings — SSsettingsBratioF","text":"output list Bratio F settings","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/SSsettingsBratioF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Stock Status Settings — SSsettingsBratioF","text":"Henning Winker (JRC-EC)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot Indices — ensemble_plot_index","title":"Plot Indices — ensemble_plot_index","text":"function plot different fits single index abundance","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot Indices — ensemble_plot_index","text":"","code":"ensemble_plot_index(   summaryoutput,   varlist,   indexfleets = 1,   verbose = TRUE,   legendloc = \"topright\",   legendcex = 1,   legendsp = 0.9,   legendncol = 1,   type = \"l\" )"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ensemble_plot_index.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot Indices — ensemble_plot_index","text":"summaryoutput summaryoutput varlist variable list indexfleets Fleet vector index verbose Option output messages Rconsole legendloc Location legend. Either string like \"topleft\" vector two numeric values representing fraction maximum x y dimensions, respectively. See ?legend info string options. legendcex Allows adjust legend cex legendsp Space legend labels legendncol Number columns legend. type Type parameter passed points (default 'o' overplots points top lines)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":null,"dir":"Reference","previous_headings":"","what":"Runs Test for Residuals — ssruns_sig3","title":"Runs Test for Residuals — ssruns_sig3","text":"function uses randtests::runs.test perform runs test residuals determine randomly distributed. also calculates 3 x sigma limits","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Runs Test for Residuals — ssruns_sig3","text":"","code":"ssruns_sig3(x, type = NULL, mixing = \"less\")"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Runs Test for Residuals — ssruns_sig3","text":"x residuals CPUE fits type c(\"resid\",\"observations\") mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation ","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Runs Test for Residuals — ssruns_sig3","text":"runs p value 3 x sigma limits","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Runs Test for Residuals — ssruns_sig3","text":"runs test conducted library(randtests)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/ssruns_sig3.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Runs Test for Residuals — ssruns_sig3","text":"Henning Winker (JRC-EC) Laurence Kell (Sea++)","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-210","dir":"Changelog","previous_headings":"","what":"ss3diags 2.1.0","title":"ss3diags 2.1.0","text":"RMSE calculations modularized standalone function can called independently SSplotJABBAres() SSrmse(). (#50) Bugfixes adjusting y-axis limits SSplotRunstest SSplotJABBAres: Use ylim parameter adjust y-axis limits. (#46) Added option remove median trajectory SSplotKobe() (#3) Added rlang, dplyr, magrittr dependencies. SSmase SSplotHcxval: Corrected validation messsage clarify validation issue fix issue code styler. (#33, #35) Added Date field DESCRIPTION. DESCRIPTION metadata now used generate package citations. (#25) Package vingettes formatted html_vignette reduce file size. Removed redundant PDF word document versions ss3diags_Handbook vignette. Enabled markdown support roxygen. Enabled Cross-reference links.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-203","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.3","title":"ss3diags 2.0.3","text":"Changed r4ss dependency 1.44.0 (CRAN version) . Replaced default R CMD CHECK workflow NOAA-fish-tools/ghactions4r’s version. Fixed Ensemble Quantile Shading Issues (#4) Replaced example datasets ss3diags cookbook, handbook current “simple” ensemble model. Fixup minor code documentation formatting issues. SSmase SSplotHcxval: Fixed code styler’s dollar subset conversion issues. example:`message(‘x$name 1,2,3,4’)`","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-202","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.2","title":"ss3diags 2.0.2","text":"Changed r4ss CRAN version (1.36.1) dependency development version legendfun -> r4ss::add_legend pngfun -> r4ss::save_png rc -> r4ss::rich_colors_short sspar -> r4ss::sspar Fix SSplotRetro.R indention causing issues code styler","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-201","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.1","title":"ss3diags 2.0.1","text":"Change SSplotJABBAres show combined seasonal data boxplots Fixup links Cookbook sripts. Formatted DESCRIPTION URL BugReports links PIFSCstockassessments repo add R package site.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-200","dir":"Changelog","previous_headings":"","what":"ss3diags 2.0.0","title":"ss3diags 2.0.0","text":"simple, cod-like, Stock Synthesis model, simulated via ss3sim, replaces Pacific North Hake (pac.hke) North Atlantic Shortfin Mako Shark (natl.sma) example datasets. SSplotRetro: fixed bug shading uncertainty area shows xlims specified. SSplotJABBAres: added ‘con’ option subplots argument conditional age--length data can plotted. Also added seas argument user can specify data combined across seasons within year kept separate. SScompsTA1.8: added seas argument users can specify data combined across seasons within year kept separate. SSplot functions (SSplotModelComp, SSplotEnsemble, SSplotHCxval, SSplotJABBAres, SSplotRetro): Marked plot, png, pdf, print, new deprecated. defunct future version. Added NEWS.md file track changes package.","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-108","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.8","title":"ss3diags 1.0.8","text":"Fixed MASE","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-107","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.7","title":"ss3diags 1.0.7","text":"Bug fixes","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-106","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.6","title":"ss3diags 1.0.6","text":"Improved SSdiagsMCMC","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-105","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.5","title":"ss3diags 1.0.5","text":"Updated SSdeltaMVLN","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-104","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.4","title":"ss3diags 1.0.4","text":"Reference: authors changes","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-103","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.3","title":"ss3diags 1.0.3","text":"Added annF_ quantaties","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-102","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.2","title":"ss3diags 1.0.2","text":"Added aut","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/news/index.html","id":"ss3diags-101","dir":"Changelog","previous_headings":"","what":"ss3diags 1.0.1","title":"ss3diags 1.0.1","text":"Added SSplotH","code":""}]

Usage