Forums

Back

Numbers-at-age reporting in SS

AL
Adam Langley, modified 4 Years ago.

Numbers-at-age reporting in SS

Youngling Posts: 4 Join Date: 6/22/16 Recent Posts
Hi Rick
 
It was good to be able to discuss things SS related last week – thank you for your advice and assistance.
 
Following up on our conversation regarding the N-at-age matrix generated for the forecast year (stddev reporting). Please can you clarify if the numbers at age are at the start of the year or at the end of the year (or other).
Similarly, please can you clarify the definition of the “NUMBERS_AT_AGE_Annual_2 With_fishery” in the report file.
 
Many thanks.
Adam
 
Endyr+1= 2018
run mceval objfun Numbers Area Sex Ages: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
run mceval objfun F_yr 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
run mceval objfun B_yr 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
2 101 -63.8538 N_at_Age  1 1  0 14926.4 9701.1 15962.4 3848.7 3117.14 11047.6 5708.94 1930.23 2311.58 456.852 1696.04 582.175 468.584 517.937 330.898 299.622 114.585 178.791 122.712 155.656 180.561 278.052 230.876 107.839 52.3953 100.879 66.3257 37.5074 13.7105 42.857 33.3184 22.5546 5.68137 14.2854 13.4532 15.6497 3.65664 21.5991 10.7844 51.6511
 
 
Sent: Wednesday, October 10, 2018 4:40 AM
Subject: [Stock Synthesis - Forums Home - Stock Synthesis] Matching reported SSB_Virgin from reconstucted stock at age
 

Iago,

The value termed  spawn_month is read from the data file and controls when during the year SSB is calculated.  spawn_month is converted into a fraction (spawn_time_seas) that is the elapsed time, in units of per year, from the beginning of the season in which spawning occurs to the exact time of spawn_month.  So every calculation of an equilibrium SSB uses:

//  SPAWN-RECR:   calc generation time, etc.
           if(s==spawn_seas)
           {
             if(gg==1)  // compute equilibrium spawning biomass for females
             {
              tempvec_a=elem_prod(equ_numbers(s,p,g)(0,nages),mfexp(-spawn_time_seas*equ_Z(s,p,g)(0,nages)));
               SSB_equil_pop_gp(p,GP4(g))+=tempvec_a*fec(g);

 

//  where "g" is a biological morph, and "gg" is a flag to indicate female morphs, s is season and p is area.
 

Rick


--
Richard Methot Stock Synthesis Virtual Lab Forum https://vlab.noaa.gov/group/stock-synthesis/discussions-forums-/-/message_boards/view_message/5085127 VLab.Notifications@noaa.gov
Richard Methot, modified 4 Years ago.

RE: Numbers-at-age reporting in SS

Youngling Posts: 219 Join Date: 11/24/14 Recent Posts

Hi Adam.  Yours is a very useful question, so I have moved it to a new thread.

 

N@age is always reported for the beginning of the time period (B) and in table below for the middle (M) of the time period.

NUMBERS_AT_AGE
Area Bio_Pattern Sex BirthSeas Settlement Platoon Morph Yr Seas Time Beg/Mid Era 0 1 2 3 4 
1 1 1 1 1 1 1 1969 1 1969 B VIRG  3367.43 3046.98 2757.02 2494.66 2257.26 
1 1 1 1 1 1 1 1969 1 1969.5 M VIRG  0 0 0 0 0 0 
1 1 1 1 1 1 1 1970 1 1970 B INIT  3367.43 3046.98 2757.02 2494.66 2257.26 
1 1 1 1 1 1 1 1970 1 1970.5 M INIT  0 0 0 0 0 
1 1 1 1 1 1 1 1971 1 1971 B TIME  3192.97 3046.98 2757.02 2494.66 2257.26 
1 1 1 1 1 1 1 1971 1 1971.5 M TIME  3037.25 2898.38 2622.56 2372.99 2147.17 

 

movement between areas happens at the end of each time period.

N@age for spawning_biomass is decayed by e(-Z)  to the real value spawn_month.  Similarly for survey observations.

Later in the report file are tables with labels like:

NUMBERS_AT_AGE_Annual_2 With_fishery
Bio_Pattern Sex Yr  0 1 2 3 4  ....

........

Z_AT_AGE_Annual_2 With_fishery

........

Dynamic_Bzero
Spawning_Biomass_Report_1 No_fishery_for_Z=M_and_dynamic_Bzero
...

NUMBERS_AT_AGE_Annual_1 No_fishery_for_Z=M_and_dynamic_Bzero

etc.

In these tables, SS is looking at just the beginning of the year and is summing over areas and platoons.  It does this first with normal dynamics ("with_fishery"), and then again with the F's all set to 0.0.  This latter set gives dynamic Bzero and the Z is essentially a population-wide M.    In each table,  Z is calculated from N@age according to:    -ln(Nt+1 / Nt).  Then you can get an overall F from the difference between the first Z table and the second Z table.

Note on dynamic Bzero:  SS does this pass through the time series with all F's set to zero.  In each year, it calculates the recruitment from the spawner-recruitment curve and the recruitment deviation.  This means that the absolute value of the recruitments will change relative to the normal model iteration that has the F's reducing the spawning biomass.

Note that if you have requested F reporting to be by the F=Z-M method, then SS does essentially the same thing as shown in the tables discussed above, but now it collapses area, sex, and all morphs so there is just one overall F reported.

FInally, the table you include in your message is not found in the report.sso file.  Instead it is in the posterior_vectors.sso file  which is written to in append mode to with each model run.  It is intended for use with mceval, but you may find other uses as well.

Hope this helps.

Rick