From f979a53371dc57844329bd5e58dc29651a836dc4 Mon Sep 17 00:00:00 2001 From: MOshima-PIFSC Date: Fri, 2 Feb 2024 20:24:32 +0000 Subject: [PATCH] Built site for ss3diags: 2.1.1@d46ae17 --- articles/Jitter.html | 200 +++++++++++++++--- .../figure-html/unnamed-chunk-9-1.png | Bin 29675 -> 42574 bytes articles/Retrospective-Analysis.html | 2 +- articles/aspm.html | 2 +- articles/likelihood.html | 53 +---- .../figure-html/unnamed-chunk-6-1.png | Bin 92857 -> 93109 bytes pkgdown.yml | 2 +- search.json | 2 +- 8 files changed, 176 insertions(+), 85 deletions(-) diff --git a/articles/Jitter.html b/articles/Jitter.html index c0f86a3..2158186 100644 --- a/articles/Jitter.html +++ b/articles/Jitter.html @@ -136,7 +136,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/RtmpQp3hSd/jitter/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmpkuz5f4/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 @@ -153,7 +153,7 @@

Jitter arguments and it will run and produce the total likelihoods for each run.

-Njitter <- 5 
+Njitter <- 50 
 jit.likes <- r4ss::jitter(dir = dir_jitter, 
                           Njitter = Njitter, 
                           init_values_src = 1, 
@@ -177,41 +177,181 @@ 

Jitter head(jit_summary$likelihoods) #> replist 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.33480e-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.74853e-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 -#> Label -#> 1 TOTAL -#> 2 Catch -#> 3 Equil_catch -#> 4 Survey -#> 5 Length_comp -#> 6 Age_comp +#> 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) -#> replist replist1 replist2 replist3 replist4 replist5 Label Yr -#> 1 54773.8 54773.8 54773.8 54773.8 54773.8 54773.8 SSB_Virgin NA -#> 2 26071.4 26071.4 26071.4 26071.4 26071.4 26071.4 SSB_Initial NA -#> 3 26071.4 26071.4 26071.4 26071.4 26071.4 26071.4 SSB_2011 2011 -#> 4 24096.1 24096.1 24096.1 24096.1 24096.1 24096.1 SSB_2012 2012 -#> 5 22126.1 22126.1 22126.1 22126.1 22126.1 22126.1 SSB_2013 2013 -#> 6 20143.5 20143.5 20143.5 20143.5 20143.5 20143.5 SSB_2014 2014 +#> replist 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) -#> replist replist1 replist2 replist3 replist4 replist5 -#> 1 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 -#> 3 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 -#> 5 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 -#> Label Yr recdev -#> 1 NatM_uniform_Fem_GP_1 NA FALSE -#> 2 L_at_Amin_Fem_GP_1 NA FALSE -#> 3 L_at_Amax_Fem_GP_1 NA FALSE -#> 4 VonBert_K_Fem_GP_1 NA FALSE -#> 5 CV_young_Fem_GP_1 NA FALSE -#> 6 CV_old_Fem_GP_1 NA FALSE

+#> replist 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

You may also want to check that the models converged. To do this you can check the maximum gradients to make sure they are all small (< 0.0001). You can also compare the estimated spawning biomass, if they diff --git a/articles/Jitter_files/figure-html/unnamed-chunk-9-1.png b/articles/Jitter_files/figure-html/unnamed-chunk-9-1.png index 3688cd6d29086a8e6591fd1fe704269b1fcceb95..b527ae7ae5eefc56de10145269c0ce60039a45a0 100644 GIT binary patch literal 42574 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�dZG(xpsS{gbyXuM_4@I#h&4qH*J> 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 UxkDnNHy4+(lA2=to|C`+H$chg4gdfE literal 29675 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

%W_6k)rja|J2mfZ7y+B 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 diff --git a/articles/Retrospective-Analysis.html b/articles/Retrospective-Analysis.html index 3219ca3..f50fd38 100644 --- a/articles/Retrospective-Analysis.html +++ b/articles/Retrospective-Analysis.html @@ -133,7 +133,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/RtmpdTAcjt/retrospectives/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpAaZIvr/retrospectives/ss3

Retrospective Analysis diff --git a/articles/aspm.html b/articles/aspm.html index dd4fd77..de94f85 100644 --- a/articles/aspm.html +++ b/articles/aspm.html @@ -133,7 +133,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/RtmpW6yFM8/ss3
+
## The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/Rtmpal5pLE/ss3

ASPM diff --git a/articles/likelihood.html b/articles/likelihood.html index cae8c80..f4821cb 100644 --- a/articles/likelihood.html +++ b/articles/likelihood.html @@ -133,7 +133,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/RtmpKDJxuj/ss3
+#> The stock synthesis executable for Linux v3.30.21 was downloaded to: /tmp/RtmpXsJ4IS/ss3

R0 Profile @@ -200,12 +200,7 @@

R0 Profile= "SR_LN", profilevec = r0_vec, exe = "ss3", - verbose = TRUE) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Doing runs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -#> out of n = 11 -#> Changing working directory to /tmp/RtmpKDJxuj/profile, -#> but will be changed back on exit from function. + verbose = FALSE) #> running profile i=1/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -215,10 +210,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=2/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -228,10 +219,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=3/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -241,10 +228,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=4/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -254,10 +237,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=5/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -267,10 +246,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=6/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -280,10 +255,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=7/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -293,10 +264,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=8/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -306,10 +273,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=9/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -319,10 +282,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=10/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -332,10 +291,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> running profile i=11/11 #> Parameter names in control file matching input vector #> 'strings' (n=1): SR_LN(R0) @@ -345,10 +300,6 @@

R0 Profile#> 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) -#> Executable found in directory /tmp/RtmpKDJxuj/profile -#> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 -#> Input 'show_in_console' = FALSE, so writing console output to console.output.txt -#> console output written to console.output.txt #> 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 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 d1e6152473d6f5261b23202546cf037a0f5da76a..0f39ac2a3c6c276d983b76fad118619f8f71f5b8 100644 GIT binary patch literal 93109 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 Q*9r(aoN%-)KklFOAI&cR;Q#;t literal 92857 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%0AW zNTo+Bd%F2!GWxO#_%vO|S!YJr`x+eC>Ji`eu1H#*J%J?tVvAKnOt+e>H#k zA#+#Gr(LXQ>w&nuQjx+*m+o@Nn@K)C5we|?r7I;2&@M1s?#F*V=U4l_5aM_qW1~<@ z6-4H?KDG)BllgBTiTCDYo2CU`goY<4`g7o#mBp8s+|AC0YWKGIBI#^??MvCa$JftQ z2bQUTfX#SMJ|%%mAmkkjU$vT((O3KlVHr|F9#<(jx%PTSlCUH+pe06gH&0aT4aR|E>i`S0Lw*JWm@%<@txtkwR?e+ z(M5S#(C2ngY7E^_pJi<^z17OQgqf{)M7v%q0cv*VmJeOrj>&m{8t0=^yRBTQCN^M8 zH{2{lIO_lwop54JNw{gzw8cS33DiT~XgQ73!TeEl-=hD}E1oqWL;QK=&iv1Ecc1$5 zY4(b(4}X)N|1M{Fde{5fK^qJB&3Gc)(@N87=OrTy!*Y=!jn>) z7?K9F-_*6q;~AC-wue`4_5UpQQ$EP~wJchO=xP=%IDK8stD_gUO%%+CXj16@Z1@l# zMhRmb18QX~KuNFp>a6K}!;EQ*osKeS+JPAps7xEO4=;JqgjOYREsD{3xXWt=A7)Lz zm(c$0dpngk{uNKJ|Jb#nXt3V3GTwQeD&^zfXR1~^$q>~U)}wa<7x!Xx7P}Z_DlZGP z&N@Un8I6UJdWtg=4@>4^-A0DqWKLhadx&8>%aksVZa1zohUl@>D@V(7iU#> zRfuiJ^jK#7ayDteXkd?SDiIdvd-N)t`A}XOcWj_^fn7rV9({IQH^Ci<;lZUCjQ}lQc@`W_}mBu{wQ=%aB80x zwstauIMpdj@(As^ti2A`R*(2Wk8~bK(M%#vB04$~3b(9Q0wrraY#ka~YX!XeJ03Y6 z_|3$w`}*o`HL7d!uZ7-dM&$g$Q=ZwmJQcllnh(4x>3gE)Y>i^gNoeJ#2*5w2>Xqs2 z1%-(^cu|oM#LhJ$QZQV!%Hhik$o-tv(=#w)kkzhRqvKVetIEo_sN8q{Q}|#YCwb!V)la;0CoxIxCCoDe(XK8`*7wo&D+dvsk6OXZ58(R!_$j-frGS z?Xw3*G_+h6y)}Ez@}P8Qnxf@N?for_zxx_@?Qa2Jx9q%!wK6^|mUm+BYZUr7Usq{+ zSr_Ll7qHP-clz=i{pTV26k=h2ixoQ4*N5QyUwBNIDkyD7k{|+t zXobTYb}+(k<$2}SRL1OhIFvKSR46;X4Xgvg(+a%*3GvtJpRenPm99owobrglzHJSk zk(*GX7+BGtXayt^PuTQkla`(=onv!C zFlLmB#!04nv_uZ8qX}NK`Da5%7CDTvcz`Q*CNnmwo^OK?GlY%WcMe4UOkSQZR;^^I zVtkB}ye9D%Rc}%%^eYFiMM0czA`CYA8%V0!m9Ycb<~$&fVI%ak(E;gI#UM1~%QThI;` zC&6#6&I*O8gx{Rme6qwAd%bEMTLt%tjWk$gW~!*5Se230*f5hizZXBHwBt6T*_{;> z<=R+ZBebhI$&OI4+GR{IgPRCG*&6E2vc@{Jv zFtVW)m(=jgEKuhXDQ0wSD;T15Z;eEGG*L0-o>;pX!hV-_n!&e;J`kEMIQ2Pf+aJhl zQig0D5##$<_f)GnX?QChmo@m>>;3pcP83Q76G=OdnVi~wrxFT~KrB_C5%Qht4yuU% zebXy;lAqdki^x?!gR1*xZ_G!OS(q4R>nI3Jw`H#g8LmbgX6-a@#wy^IjD@Udq*u#tEIw4o=m#i4W7eu1z?7t76z2LIRL%=1tul*^~?I z`r8EeME{aT97?gA+7TX$_hk1Zwo7nv&%D`${z)QhkO>9-@tokn1DFlJ2F%jnQbf## zak-%eSzpX7t)Mya%ak3PEfj;Z85*h@mIX2@dEEXeQ1cgqOf9E+lE0wf)Ao<^^3jOYWcNqux#iafF8TK^n|ZmDeP*c{;B*~`_Na{lHs_TWdhB{aO*r8XLdCS0X<7aXmy=X}%t4|4cDpa1{> diff --git a/pkgdown.yml b/pkgdown.yml index ee680ba..3bbe990 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -8,7 +8,7 @@ articles: hcxval: hcxval.html likelihood: likelihood.html residuals: residuals.html -last_built: 2024-02-02T20:02Z +last_built: 2024-02-02T20:12Z urls: reference: https://pifscstockassessments.github.io/ss3diags/reference article: https://pifscstockassessments.github.io/ss3diags/articles diff --git a/search.json b/search.json index e102f55..d073933 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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpQp3hSd/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. 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 <- 5 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 = c(\"\",1:Njitter), #\"\" to include reference run (Report.sso) getcomp = FALSE, dirvec = dir_jitter, getcovar = FALSE, verbose = FALSE) jit_summary <- SSsummarize(jit_mods, verbose = FALSE) head(jit_summary$likelihoods) #> replist 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 #> Label #> 1 TOTAL #> 2 Catch #> 3 Equil_catch #> 4 Survey #> 5 Length_comp #> 6 Age_comp head(jit_summary$quants) #> replist replist1 replist2 replist3 replist4 replist5 Label Yr #> 1 54773.8 54773.8 54773.8 54773.8 54773.8 54773.8 SSB_Virgin NA #> 2 26071.4 26071.4 26071.4 26071.4 26071.4 26071.4 SSB_Initial NA #> 3 26071.4 26071.4 26071.4 26071.4 26071.4 26071.4 SSB_2011 2011 #> 4 24096.1 24096.1 24096.1 24096.1 24096.1 24096.1 SSB_2012 2012 #> 5 22126.1 22126.1 22126.1 22126.1 22126.1 22126.1 SSB_2013 2013 #> 6 20143.5 20143.5 20143.5 20143.5 20143.5 20143.5 SSB_2014 2014 head(jit_summary$pars) #> replist replist1 replist2 replist3 replist4 replist5 #> 1 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 #> 3 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 #> 5 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 #> Label Yr recdev #> 1 NatM_uniform_Fem_GP_1 NA FALSE #> 2 L_at_Amin_Fem_GP_1 NA FALSE #> 3 L_at_Amax_Fem_GP_1 NA FALSE #> 4 VonBert_K_Fem_GP_1 NA FALSE #> 5 CV_young_Fem_GP_1 NA FALSE #> 6 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 = ~./replist)) %>% # for each column, divide SSB by SSB from the reference run (replist0) 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 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 recipe) 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 parameter values run lowest likelihood value. 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\") #> Warning: Expected 2 pieces. Missing pieces filled with `NA` in 1 rows #> [1]. #> Warning: Removed 1 rows containing missing values (`geom_point()`). SSplotComparisons(converged_sum, subplots = 2, ylimAdj=1) #> 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, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpdTAcjt/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, can run retrospective analysis shown . running 5 1-year peels, run, last year data removed model re-run total 5 times. number year peels can adjusted years argument. SS executable file using named something “ss” (e.g. ss_opt_win.exe), need specify argument exe = \"ss_opt_win\".","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 output inspect patterns biases, need load report files R can 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.g. model years removed) “Ref” line successive peel colored lines labeled end year. solid line ends end year dashed line point shows 1 year forecast. Displaying projected SSB can help assess 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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpW6yFM8/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, warn = FALSE) ## Warning: The `warn` argument of `SS_writestarter()` is deprecated as of r4ss 1.45.0. ## This warning is displayed once every 8 hours. ## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was ## generated."},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"control-file","dir":"Articles","previous_headings":"ASPM","what":"Control File","title":"ASPM","text":"things control file may need changed, phases parameters : 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":"","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. Plotting HCxval abundance indices requires step summarizing list retrospective runs retrospective analysis, therefore needs done . example use retroSummary created . plots , see fleets, model fairly good prediction skill (compared random walk) index abundance data. 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 point dashed line show model predicted value. “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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpKDJxuj/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"r0-profile","dir":"Articles","previous_headings":"","what":"R0 Profile","title":"Likelihood Profile","text":"4 input files SS executable, 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 need dir_profile need create vector values profile across. range increments choose depend model resolution want analyze likelihood profile. example use fairly course 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 “cltfile”.","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 = TRUE) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Doing runs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, #> out of n = 11 #> Changing working directory to /tmp/RtmpKDJxuj/profile, #> but will be changed back on exit from function. #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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) #> Executable found in directory /tmp/RtmpKDJxuj/profile #> Changing working directory to /tmp/RtmpKDJxuj/profile and running model using the command: ./ss3 #> Input 'show_in_console' = FALSE, so writing console output to console.output.txt #> console output written to console.output.txt #> 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 minimum R0 value, indicates good agreement . However, likely, one minimized different R0 values global R0 value. sign conflict data sources may require consider data weighting. profile plot shows changes log-likelihood across vector values profiled total likelihood contributing components. minimum threshold component must contribute data source model show plot, contribution 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, common features may want specify : plotting data types (default Index Abundance) plotting specific fleet(s) adjusting y-axis range 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’. 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 contact 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: #> #> Henning Winker, Felipe Carvalho, Massimiliano Cardinale, Laurence #> Kell, Megumi Oshima and Eric Fletcher (2023). ss3diags: Stock #> Synthesis Model Diagnostics for Intergated Stock Assessments. R #> package version 2.1.1. #> https://github.com/PIFSCstockassessments/ss3diags #> #> 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 function SS_output mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation quants optional use c(\"cpue\",\"len\",\"age\",\"con\"), default uses CPUE. 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/mcmcSimple.html","id":null,"dir":"Reference","previous_headings":"","what":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"MCMC output read SSgetMCMC()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"","code":"mcmcSimple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"Large dataframe MCMC parameter estimates nrow = number values ncol = number parameters mcmcSimple mcmcSimple","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"MCMC evaluated Stock Synthesis","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"R. Methot,","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"Stock Synthesis output read SS_output()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"","code":"retroSimple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"Large list 184 objects generated using r4ss Data_File Data_File Control_File Control_File definitions definitions fleet_ID fleet_ID fleet_type fleet_type fleet_timing fleet_timing fleet_area fleet_area catch_units catch_units catch_se catch_se equ_catch_se equ_catch_se survey_units survey_units survey_error survey_error IsFishFleet IsFishFleet nfishfleets nfishfleets nfleets nfleets nsexes nsexes ngpatterns ngpatterns lbins lbins Lbin_method Lbin_method nlbins nlbins lbinspop lbinspop nlbinspop nlbinspop sizebinlist sizebinlist agebins agebins nagebins nagebins accuage accuage nareas nareas startyr startyr endyr endyr nseasons nseasons seasfracs seasfracs seasdurations seasdurations N_sub_seasons N_sub_seasons Spawn_month Spawn_month Spawn_seas Spawn_seas Spawn_timing_in_season Spawn_timing_in_season Retro_year Retro_year N_forecast_yrs N_forecast_yrs Empirical_wt_at_age Empirical_wt_at_age N_bio_patterns N_bio_patterns N_platoons N_platoons NatMort_option NatMort_option GrowthModel_option GrowthModel_option Maturity_option Maturity_option Fecundity_option Fecundity_option Start_from_par Start_from_par Do_all_priors Do_all_priors Use_softbound Use_softbound N_nudata N_nudata Max_phase Max_phase Current_phase Current_phase Jitter Jitter ALK_tolerance ALK_tolerance nforecastyears nforecastyears morph_indexing morph_indexing MGparmAdj MGparmAdj forecast_selectivity forecast_selectivity SelSizeAdj SelSizeAdj SelAgeAdj SelAgeAdj recruitment_dist recruitment_dist recruit recruit SPAWN_RECR_CURVE SPAWN_RECR_CURVE breakpoints_for_bias_adjustment_ramp breakpoints_for_bias_adjustment_ramp SpawnOutputUnits SpawnOutputUnits biology biology FecType FecType FecPar1name FecPar1name FecPar2name FecPar2name FecPar1 FecPar1 FecPar2 FecPar2 M_type M_type Natural_Mortality_Bmark Natural_Mortality_Bmark Natural_Mortality_endyr Natural_Mortality_endyr Growth_Parameters Growth_Parameters growthCVtype growthCVtype endgrowth endgrowth wtatage_switch wtatage_switch mean_body_wt mean_body_wt growthseries growthseries growthvaries growthvaries sizeselex sizeselex ageselex ageselex F_method F_method exploitation exploitation catch catch summary_age summary_age timeseries timeseries spawnseas spawnseas mainmorphs mainmorphs birthseas birthseas depletion_method depletion_method depletion_basis depletion_basis discard discard discard_type discard_type DF_discard DF_discard discard_spec discard_spec mnwgt mnwgt DF_mnwgt DF_mnwgt sprseries sprseries managementratiolabels managementratiolabels F_report_basis F_report_basis B_ratio_denominator B_ratio_denominator sprtarg sprtarg btarg btarg minbthresh minbthresh Kobe_warn Kobe_warn Kobe_MSY_basis Kobe_MSY_basis Kobe Kobe index_variance_tuning_check index_variance_tuning_check cpue cpue natage natage natage_annual_1_no_fishery natage_annual_1_no_fishery natage_annual_2_with_fishery natage_annual_2_with_fishery batage batage natlen natlen batlen batlen fatage fatage discard_at_age discard_at_age catage catage movement movement ALK ALK N_ageerror_defs N_ageerror_defs equil_yield equil_yield Z_at_age Z_at_age M_at_age M_at_age Dynamic_Bzero Dynamic_Bzero comp_data_exists comp_data_exists lendbase lendbase sizedbase sizedbase agedbase agedbase condbase condbase ghostagedbase ghostagedbase ghostcondbase ghostcondbase ghostlendbase ghostlendbase ladbase ladbase wadbase wadbase tagdbase1 tagdbase1 tagdbase2 tagdbase2 len_comp_fit_table len_comp_fit_table size_comp_fit_table size_comp_fit_table derived_quants derived_quants parameters parameters FleetNames FleetNames repfiletime repfiletime SRRtype SRRtype Pstar_sigma Pstar_sigma OFL_sigma OFL_sigma CoVar CoVar highcor highcor lowcor lowcor corstats corstats stdtable stdtable recruitpars recruitpars RecrDistpars RecrDistpars wtatage wtatage jitter_info jitter_info SS_version SS_version SS_versionshort SS_versionshort SS_versionNumeric SS_versionNumeric StartTime StartTime RunTime RunTime Files_used Files_used Nwarnings Nwarnings warnings warnings likelihoods_used likelihoods_used likelihoods_laplace likelihoods_laplace likelihoods_by_fleet likelihoods_by_fleet N_estimated_parameters N_estimated_parameters table_of_phases table_of_phases estimated_non_dev_parameters estimated_non_dev_parameters log_det_hessian log_det_hessian maximum_gradient_component maximum_gradient_component parameters_with_highest_gradients parameters_with_highest_gradients Length_Comp_Fit_Summary Length_Comp_Fit_Summary Age_Comp_Fit_Summary Age_Comp_Fit_Summary SBzero SBzero current_depletion current_depletion last_years_SPR last_years_SPR SPRratioLabel SPRratioLabel sigma_R_in sigma_R_in sigma_R_info sigma_R_info rmse_table rmse_table logfile logfile inputs inputs","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"simulated ss3sim","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"R. Methot","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":null,"dir":"Reference","previous_headings":"","what":"A simulated Simple Stock Synthesis model for a ","title":"A simulated Simple Stock Synthesis model for a ","text":"Stock Synthesis output read SS_output()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A simulated Simple Stock Synthesis model for a ","text":"","code":"simple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A simulated Simple Stock Synthesis model for a ","text":"Large list 184 objects generated using r4ss Data_File Data_File Control_File Control_File definitions definitions fleet_ID fleet_ID fleet_type fleet_type fleet_timing fleet_timing fleet_area fleet_area catch_units catch_units catch_se catch_se equ_catch_se equ_catch_se survey_units survey_units survey_error survey_error IsFishFleet IsFishFleet nfishfleets nfishfleets nfleets nfleets nsexes nsexes ngpatterns ngpatterns lbins lbins Lbin_method Lbin_method nlbins nlbins lbinspop lbinspop nlbinspop nlbinspop sizebinlist sizebinlist agebins agebins nagebins nagebins accuage accuage nareas nareas startyr startyr endyr endyr nseasons nseasons seasfracs seasfracs seasdurations seasdurations N_sub_seasons N_sub_seasons Spawn_month Spawn_month Spawn_seas Spawn_seas Spawn_timing_in_season Spawn_timing_in_season Retro_year Retro_year N_forecast_yrs N_forecast_yrs Empirical_wt_at_age Empirical_wt_at_age N_bio_patterns N_bio_patterns N_platoons N_platoons NatMort_option NatMort_option GrowthModel_option GrowthModel_option Maturity_option Maturity_option Fecundity_option Fecundity_option Start_from_par Start_from_par Do_all_priors Do_all_priors Use_softbound Use_softbound N_nudata N_nudata Max_phase Max_phase Current_phase Current_phase Jitter Jitter ALK_tolerance ALK_tolerance nforecastyears nforecastyears morph_indexing morph_indexing MGparmAdj MGparmAdj forecast_selectivity forecast_selectivity SelSizeAdj SelSizeAdj SelAgeAdj SelAgeAdj recruitment_dist recruitment_dist recruit recruit SPAWN_RECR_CURVE SPAWN_RECR_CURVE breakpoints_for_bias_adjustment_ramp breakpoints_for_bias_adjustment_ramp SpawnOutputUnits SpawnOutputUnits biology biology FecType FecType FecPar1name FecPar1name FecPar2name FecPar2name FecPar1 FecPar1 FecPar2 FecPar2 M_type M_type Natural_Mortality_Bmark Natural_Mortality_Bmark Natural_Mortality_endyr Natural_Mortality_endyr Growth_Parameters Growth_Parameters growthCVtype growthCVtype endgrowth endgrowth wtatage_switch wtatage_switch mean_body_wt mean_body_wt growthseries growthseries growthvaries growthvaries sizeselex sizeselex ageselex ageselex F_method F_method exploitation exploitation catch catch summary_age summary_age timeseries timeseries spawnseas spawnseas mainmorphs mainmorphs birthseas birthseas depletion_method depletion_method depletion_basis depletion_basis discard discard discard_type discard_type DF_discard DF_discard discard_spec discard_spec mnwgt mnwgt DF_mnwgt DF_mnwgt sprseries sprseries managementratiolabels managementratiolabels F_report_basis F_report_basis B_ratio_denominator B_ratio_denominator sprtarg sprtarg btarg btarg minbthresh minbthresh Kobe_warn Kobe_warn Kobe_MSY_basis Kobe_MSY_basis Kobe Kobe index_variance_tuning_check index_variance_tuning_check cpue cpue natage natage natage_annual_1_no_fishery natage_annual_1_no_fishery natage_annual_2_with_fishery natage_annual_2_with_fishery batage batage natlen natlen batlen batlen fatage fatage discard_at_age discard_at_age catage catage movement movement ALK ALK N_ageerror_defs N_ageerror_defs equil_yield equil_yield Z_at_age Z_at_age M_at_age M_at_age Dynamic_Bzero Dynamic_Bzero comp_data_exists comp_data_exists lendbase lendbase sizedbase sizedbase agedbase agedbase condbase condbase ghostagedbase ghostagedbase ghostcondbase ghostcondbase ghostlendbase ghostlendbase ladbase ladbase wadbase wadbase tagdbase1 tagdbase1 tagdbase2 tagdbase2 len_comp_fit_table len_comp_fit_table size_comp_fit_table size_comp_fit_table derived_quants derived_quants parameters parameters FleetNames FleetNames repfiletime repfiletime SRRtype SRRtype Pstar_sigma Pstar_sigma OFL_sigma OFL_sigma CoVar CoVar highcor highcor lowcor lowcor corstats corstats stdtable stdtable recruitpars recruitpars RecrDistpars RecrDistpars wtatage wtatage jitter_info jitter_info SS_version SS_version SS_versionshort SS_versionshort SS_versionNumeric SS_versionNumeric StartTime StartTime RunTime RunTime Files_used Files_used Nwarnings Nwarnings warnings warnings likelihoods_used likelihoods_used likelihoods_laplace likelihoods_laplace likelihoods_by_fleet likelihoods_by_fleet N_estimated_parameters N_estimated_parameters table_of_phases table_of_phases estimated_non_dev_parameters estimated_non_dev_parameters log_det_hessian log_det_hessian maximum_gradient_component maximum_gradient_component parameters_with_highest_gradients parameters_with_highest_gradients Length_Comp_Fit_Summary Length_Comp_Fit_Summary Age_Comp_Fit_Summary Age_Comp_Fit_Summary SBzero SBzero current_depletion current_depletion last_years_SPR last_years_SPR SPRratioLabel SPRratioLabel sigma_R_in sigma_R_in sigma_R_info sigma_R_info rmse_table rmse_table logfile logfile inputs inputs","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"A simulated Simple Stock Synthesis model for a ","text":"simulated ss3sim","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"A simulated Simple Stock Synthesis model for a ","text":"R. Methot,","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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/Rtmpkuz5f4/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. 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 = c(\"\",1:Njitter), #\"\" to include reference run (Report.sso) getcomp = FALSE, dirvec = dir_jitter, getcovar = FALSE, verbose = FALSE) jit_summary <- SSsummarize(jit_mods, verbose = FALSE) head(jit_summary$likelihoods) #> replist 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.33480e-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.74853e-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) #> replist 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) #> replist 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 = ~./replist)) %>% # for each column, divide SSB by SSB from the reference run (replist0) 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 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 recipe) 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 parameter values run lowest likelihood value. 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\") #> Warning: Expected 2 pieces. Missing pieces filled with `NA` in 1 rows #> [1]. #> Warning: Removed 1 rows containing missing values (`geom_point()`). SSplotComparisons(converged_sum, subplots = 2, ylimAdj=1) #> 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, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpAaZIvr/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, can run retrospective analysis shown . running 5 1-year peels, run, last year data removed model re-run total 5 times. number year peels can adjusted years argument. SS executable file using named something “ss” (e.g. ss_opt_win.exe), need specify argument exe = \"ss_opt_win\".","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 output inspect patterns biases, need load report files R can 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.g. model years removed) “Ref” line successive peel colored lines labeled end year. solid line ends end year dashed line point shows 1 year forecast. Displaying projected SSB can help assess 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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/Rtmpal5pLE/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, warn = FALSE) ## Warning: The `warn` argument of `SS_writestarter()` is deprecated as of r4ss 1.45.0. ## This warning is displayed once every 8 hours. ## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was ## generated."},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/aspm.html","id":"control-file","dir":"Articles","previous_headings":"ASPM","what":"Control File","title":"ASPM","text":"things control file may need changed, phases parameters : 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":"","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. Plotting HCxval abundance indices requires step summarizing list retrospective runs retrospective analysis, therefore needs done . example use retroSummary created . plots , see fleets, model fairly good prediction skill (compared random walk) index abundance data. 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 point dashed line show model predicted value. “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, 4 input files required: starter, forecast, control, data. input files example model can found within ss3diags package accessed shown . Also, r4ss 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/RtmpXsJ4IS/ss3"},{"path":"https://pifscstockassessments.github.io/ss3diags/articles/likelihood.html","id":"r0-profile","dir":"Articles","previous_headings":"","what":"R0 Profile","title":"Likelihood Profile","text":"4 input files SS executable, 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 need dir_profile need create vector values profile across. range increments choose depend model resolution want analyze likelihood profile. example use fairly course 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 “cltfile”.","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 minimum R0 value, indicates good agreement . However, likely, one minimized different R0 values global R0 value. sign conflict data sources may require consider data weighting. profile plot shows changes log-likelihood across vector values profiled total likelihood contributing components. minimum threshold component must contribute data source model show plot, contribution 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, common features may want specify : plotting data types (default Index Abundance) plotting specific fleet(s) adjusting y-axis range 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’. 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 contact 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: #> #> Henning Winker, Felipe Carvalho, Massimiliano Cardinale, Laurence #> Kell, Megumi Oshima and Eric Fletcher (2023). ss3diags: Stock #> Synthesis Model Diagnostics for Intergated Stock Assessments. R #> package version 2.1.1. #> https://github.com/PIFSCstockassessments/ss3diags #> #> 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 function SS_output mixing c(\"less\",\"greater\",\"two.sided\"). Default less checking positive autocorrelation quants optional use c(\"cpue\",\"len\",\"age\",\"con\"), default uses CPUE. 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/mcmcSimple.html","id":null,"dir":"Reference","previous_headings":"","what":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"MCMC output read SSgetMCMC()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"","code":"mcmcSimple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"Large dataframe MCMC parameter estimates nrow = number values ncol = number parameters mcmcSimple mcmcSimple","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"MCMC evaluated Stock Synthesis","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/mcmcSimple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"MCMC output for simulated Simple Stock Synthesis model. — mcmcSimple","text":"R. Methot,","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"Stock Synthesis output read SS_output()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"","code":"retroSimple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"Large list 184 objects generated using r4ss Data_File Data_File Control_File Control_File definitions definitions fleet_ID fleet_ID fleet_type fleet_type fleet_timing fleet_timing fleet_area fleet_area catch_units catch_units catch_se catch_se equ_catch_se equ_catch_se survey_units survey_units survey_error survey_error IsFishFleet IsFishFleet nfishfleets nfishfleets nfleets nfleets nsexes nsexes ngpatterns ngpatterns lbins lbins Lbin_method Lbin_method nlbins nlbins lbinspop lbinspop nlbinspop nlbinspop sizebinlist sizebinlist agebins agebins nagebins nagebins accuage accuage nareas nareas startyr startyr endyr endyr nseasons nseasons seasfracs seasfracs seasdurations seasdurations N_sub_seasons N_sub_seasons Spawn_month Spawn_month Spawn_seas Spawn_seas Spawn_timing_in_season Spawn_timing_in_season Retro_year Retro_year N_forecast_yrs N_forecast_yrs Empirical_wt_at_age Empirical_wt_at_age N_bio_patterns N_bio_patterns N_platoons N_platoons NatMort_option NatMort_option GrowthModel_option GrowthModel_option Maturity_option Maturity_option Fecundity_option Fecundity_option Start_from_par Start_from_par Do_all_priors Do_all_priors Use_softbound Use_softbound N_nudata N_nudata Max_phase Max_phase Current_phase Current_phase Jitter Jitter ALK_tolerance ALK_tolerance nforecastyears nforecastyears morph_indexing morph_indexing MGparmAdj MGparmAdj forecast_selectivity forecast_selectivity SelSizeAdj SelSizeAdj SelAgeAdj SelAgeAdj recruitment_dist recruitment_dist recruit recruit SPAWN_RECR_CURVE SPAWN_RECR_CURVE breakpoints_for_bias_adjustment_ramp breakpoints_for_bias_adjustment_ramp SpawnOutputUnits SpawnOutputUnits biology biology FecType FecType FecPar1name FecPar1name FecPar2name FecPar2name FecPar1 FecPar1 FecPar2 FecPar2 M_type M_type Natural_Mortality_Bmark Natural_Mortality_Bmark Natural_Mortality_endyr Natural_Mortality_endyr Growth_Parameters Growth_Parameters growthCVtype growthCVtype endgrowth endgrowth wtatage_switch wtatage_switch mean_body_wt mean_body_wt growthseries growthseries growthvaries growthvaries sizeselex sizeselex ageselex ageselex F_method F_method exploitation exploitation catch catch summary_age summary_age timeseries timeseries spawnseas spawnseas mainmorphs mainmorphs birthseas birthseas depletion_method depletion_method depletion_basis depletion_basis discard discard discard_type discard_type DF_discard DF_discard discard_spec discard_spec mnwgt mnwgt DF_mnwgt DF_mnwgt sprseries sprseries managementratiolabels managementratiolabels F_report_basis F_report_basis B_ratio_denominator B_ratio_denominator sprtarg sprtarg btarg btarg minbthresh minbthresh Kobe_warn Kobe_warn Kobe_MSY_basis Kobe_MSY_basis Kobe Kobe index_variance_tuning_check index_variance_tuning_check cpue cpue natage natage natage_annual_1_no_fishery natage_annual_1_no_fishery natage_annual_2_with_fishery natage_annual_2_with_fishery batage batage natlen natlen batlen batlen fatage fatage discard_at_age discard_at_age catage catage movement movement ALK ALK N_ageerror_defs N_ageerror_defs equil_yield equil_yield Z_at_age Z_at_age M_at_age M_at_age Dynamic_Bzero Dynamic_Bzero comp_data_exists comp_data_exists lendbase lendbase sizedbase sizedbase agedbase agedbase condbase condbase ghostagedbase ghostagedbase ghostcondbase ghostcondbase ghostlendbase ghostlendbase ladbase ladbase wadbase wadbase tagdbase1 tagdbase1 tagdbase2 tagdbase2 len_comp_fit_table len_comp_fit_table size_comp_fit_table size_comp_fit_table derived_quants derived_quants parameters parameters FleetNames FleetNames repfiletime repfiletime SRRtype SRRtype Pstar_sigma Pstar_sigma OFL_sigma OFL_sigma CoVar CoVar highcor highcor lowcor lowcor corstats corstats stdtable stdtable recruitpars recruitpars RecrDistpars RecrDistpars wtatage wtatage jitter_info jitter_info SS_version SS_version SS_versionshort SS_versionshort SS_versionNumeric SS_versionNumeric StartTime StartTime RunTime RunTime Files_used Files_used Nwarnings Nwarnings warnings warnings likelihoods_used likelihoods_used likelihoods_laplace likelihoods_laplace likelihoods_by_fleet likelihoods_by_fleet N_estimated_parameters N_estimated_parameters table_of_phases table_of_phases estimated_non_dev_parameters estimated_non_dev_parameters log_det_hessian log_det_hessian maximum_gradient_component maximum_gradient_component parameters_with_highest_gradients parameters_with_highest_gradients Length_Comp_Fit_Summary Length_Comp_Fit_Summary Age_Comp_Fit_Summary Age_Comp_Fit_Summary SBzero SBzero current_depletion current_depletion last_years_SPR last_years_SPR SPRratioLabel SPRratioLabel sigma_R_in sigma_R_in sigma_R_info sigma_R_info rmse_table rmse_table logfile logfile inputs inputs","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"simulated ss3sim","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/retroSimple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Retrospective runs for simulated Simple Stock Synthesis model. — retroSimple","text":"R. Methot","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":null,"dir":"Reference","previous_headings":"","what":"A simulated Simple Stock Synthesis model for a ","title":"A simulated Simple Stock Synthesis model for a ","text":"Stock Synthesis output read SS_output()","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A simulated Simple Stock Synthesis model for a ","text":"","code":"simple"},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A simulated Simple Stock Synthesis model for a ","text":"Large list 184 objects generated using r4ss Data_File Data_File Control_File Control_File definitions definitions fleet_ID fleet_ID fleet_type fleet_type fleet_timing fleet_timing fleet_area fleet_area catch_units catch_units catch_se catch_se equ_catch_se equ_catch_se survey_units survey_units survey_error survey_error IsFishFleet IsFishFleet nfishfleets nfishfleets nfleets nfleets nsexes nsexes ngpatterns ngpatterns lbins lbins Lbin_method Lbin_method nlbins nlbins lbinspop lbinspop nlbinspop nlbinspop sizebinlist sizebinlist agebins agebins nagebins nagebins accuage accuage nareas nareas startyr startyr endyr endyr nseasons nseasons seasfracs seasfracs seasdurations seasdurations N_sub_seasons N_sub_seasons Spawn_month Spawn_month Spawn_seas Spawn_seas Spawn_timing_in_season Spawn_timing_in_season Retro_year Retro_year N_forecast_yrs N_forecast_yrs Empirical_wt_at_age Empirical_wt_at_age N_bio_patterns N_bio_patterns N_platoons N_platoons NatMort_option NatMort_option GrowthModel_option GrowthModel_option Maturity_option Maturity_option Fecundity_option Fecundity_option Start_from_par Start_from_par Do_all_priors Do_all_priors Use_softbound Use_softbound N_nudata N_nudata Max_phase Max_phase Current_phase Current_phase Jitter Jitter ALK_tolerance ALK_tolerance nforecastyears nforecastyears morph_indexing morph_indexing MGparmAdj MGparmAdj forecast_selectivity forecast_selectivity SelSizeAdj SelSizeAdj SelAgeAdj SelAgeAdj recruitment_dist recruitment_dist recruit recruit SPAWN_RECR_CURVE SPAWN_RECR_CURVE breakpoints_for_bias_adjustment_ramp breakpoints_for_bias_adjustment_ramp SpawnOutputUnits SpawnOutputUnits biology biology FecType FecType FecPar1name FecPar1name FecPar2name FecPar2name FecPar1 FecPar1 FecPar2 FecPar2 M_type M_type Natural_Mortality_Bmark Natural_Mortality_Bmark Natural_Mortality_endyr Natural_Mortality_endyr Growth_Parameters Growth_Parameters growthCVtype growthCVtype endgrowth endgrowth wtatage_switch wtatage_switch mean_body_wt mean_body_wt growthseries growthseries growthvaries growthvaries sizeselex sizeselex ageselex ageselex F_method F_method exploitation exploitation catch catch summary_age summary_age timeseries timeseries spawnseas spawnseas mainmorphs mainmorphs birthseas birthseas depletion_method depletion_method depletion_basis depletion_basis discard discard discard_type discard_type DF_discard DF_discard discard_spec discard_spec mnwgt mnwgt DF_mnwgt DF_mnwgt sprseries sprseries managementratiolabels managementratiolabels F_report_basis F_report_basis B_ratio_denominator B_ratio_denominator sprtarg sprtarg btarg btarg minbthresh minbthresh Kobe_warn Kobe_warn Kobe_MSY_basis Kobe_MSY_basis Kobe Kobe index_variance_tuning_check index_variance_tuning_check cpue cpue natage natage natage_annual_1_no_fishery natage_annual_1_no_fishery natage_annual_2_with_fishery natage_annual_2_with_fishery batage batage natlen natlen batlen batlen fatage fatage discard_at_age discard_at_age catage catage movement movement ALK ALK N_ageerror_defs N_ageerror_defs equil_yield equil_yield Z_at_age Z_at_age M_at_age M_at_age Dynamic_Bzero Dynamic_Bzero comp_data_exists comp_data_exists lendbase lendbase sizedbase sizedbase agedbase agedbase condbase condbase ghostagedbase ghostagedbase ghostcondbase ghostcondbase ghostlendbase ghostlendbase ladbase ladbase wadbase wadbase tagdbase1 tagdbase1 tagdbase2 tagdbase2 len_comp_fit_table len_comp_fit_table size_comp_fit_table size_comp_fit_table derived_quants derived_quants parameters parameters FleetNames FleetNames repfiletime repfiletime SRRtype SRRtype Pstar_sigma Pstar_sigma OFL_sigma OFL_sigma CoVar CoVar highcor highcor lowcor lowcor corstats corstats stdtable stdtable recruitpars recruitpars RecrDistpars RecrDistpars wtatage wtatage jitter_info jitter_info SS_version SS_version SS_versionshort SS_versionshort SS_versionNumeric SS_versionNumeric StartTime StartTime RunTime RunTime Files_used Files_used Nwarnings Nwarnings warnings warnings likelihoods_used likelihoods_used likelihoods_laplace likelihoods_laplace likelihoods_by_fleet likelihoods_by_fleet N_estimated_parameters N_estimated_parameters table_of_phases table_of_phases estimated_non_dev_parameters estimated_non_dev_parameters log_det_hessian log_det_hessian maximum_gradient_component maximum_gradient_component parameters_with_highest_gradients parameters_with_highest_gradients Length_Comp_Fit_Summary Length_Comp_Fit_Summary Age_Comp_Fit_Summary Age_Comp_Fit_Summary SBzero SBzero current_depletion current_depletion last_years_SPR last_years_SPR SPRratioLabel SPRratioLabel sigma_R_in sigma_R_in sigma_R_info sigma_R_info rmse_table rmse_table logfile logfile inputs inputs","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"A simulated Simple Stock Synthesis model for a ","text":"simulated ss3sim","code":""},{"path":"https://pifscstockassessments.github.io/ss3diags/reference/simple.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"A simulated Simple Stock Synthesis model for a ","text":"R. Methot,","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":""}]