The paper searched for raw data about wild-caught fish, where a sigmoidal growth function described the mass growth significantly better than non-sigmoidal functions. Specifically, von Bertalanffy’s sigmoidal growth function (metabolic exponent-pair a = 2/3, b = 1) was compared with unbounded linear growth and with bounded exponential growth using the Akaike information criterion. Thereby the maximum likelihood fits were compared, assuming a lognormal distribution of mass ( i.e. a higher variance for heavier animals). Starting from 70+ size-at-age data, the paper focused on 15 data coming from large datasets. Of them, six data with 400 - 20,000 data-points were suitable for sigmoidal growth modeling. For these, a custom-made optimization tool identified the best fitting growth function from the general von Bertalanffy-Pütter class of models. This class generalizes the well-known models of Verhulst (logistic growth), Gompertz and von Bertalanffy. Whereas the best-fitting models varied widely, their exponent-pairs displayed a remarkable pattern, as their difference was close to 1/3 (example: von Bertalanffy exponent-pair). This defined a new class of models, for which the paper provided a biological motivation that relates growth to food consumption.
Size-at-age (length or mass) is an important metric about animals and so there is a large body of literature about which growth models fit best to given size-at-age data. The von Bertalanffy [
d m ( t ) d t = p ⋅ m ( t ) a − q ⋅ m ( t ) b (1)
It describes body mass m(t) > 0 as a function of age t, using the following five model parameters: The exponent-pair a < b (“metabolic scaling exponents”) and the constants p and q are assumed to be non-negative; m0 > 0 is an initial value, i.e. m(0) = m0. In the case of equal exponents, Equation (1) is replaced by the generalized Gompertz [
d m ( t ) d t = p ⋅ m ( t ) a − q ⋅ ln ( m ( t ) ) ⋅ m ( t ) a (2)
This equation uses four model parameters: a, p, q (non-negative) and m0 > 0. In general, the solutions of (1) and (2) are expressed in terms of non-elementary functions, namely hypergeometric functions [
The models differ in the assumed exponents and in the number of free parameters (these are optimized to obtain the best fit to given data): For the “named models” with given exponent-pairs the parameters p, q and m0 are free; for the more general model classes in addition one or two exponents are free. The typical
growth curves (solutions of the model equations) are increasing, bounded and sigmoidal (S-shaped): Initially the rate of growth increases, until the inception point is reached. Subsequently, it decreases to zero in the limit, when the asymptotic mass (mmax) is reached. The latter condition (m' = 0) provides the following equation for the asymptotic mass:
m max = ( p q ) 1 b − a for a < b , and m max = exp ( p q ) for a = b (3)
The parameters a, b, p, q come from Equation (1) and Equation (2), respectively. For exceptional exponents and parameters, the growth curves may be non-sigmoidal (a = 0) or unbounded (p > 0, q = 0). For instance, the most common growth model in fisheries literature, VBGF for length (Google search for “VBGF, fish”: ca. 15,000 results), is not sigmoidal. However, it is equivalent to a sigmoidal model for mass-growth in the following sense [
Summarizing, there seems to be a consensus in literature that the mass-growth of fish is bounded and sigmoidal. However, catch data for fish seem not to support this statement. The authors [
The conclusion about the high variability for fish-data was drawn from data-fitting to average weights. The present paper therefore reconsidered this issue and asked, if data-fitting to raw data would change the picture. More specifically, the paper aimed at identifying data that could be fitted well by a bounded sigmoidal mass-growth curve and where this fit was clearly superior to the fit by typically non-sigmoidal model functions. These data were deemed insofar as suitable for the application of sigmoidal growth models, as the variability of the exponents was more restricted.
To achieve this goal, the paper compared the fit of three typical models: Linear growth, as it represents unbounded models, bounded exponential growth, as it represents bounded non-sigmoidal models, and the von Bertalanffy exponent-pair, as it represents sigmoidal growth. This comparison was applied to various data for wild-caught fish, whereby the model curves were fitted to the raw data from [
The term “acceptable fit” needs a technical definition, explained in the Methods. For instance, a visual inspection alone did not suffice to recognize that the fit of the bounded exponential model was acceptable for
The authors conducted a literature search for growth data of wild-caught fish, referring to the following secondary sources: 39 data-sets came from a repository by Derek Ogle [
Literature in fisheries management prefers to fit model curves directly to the raw data, assuming a heteroscedastic distribution of size. Most common is the assumption of a lognormal distribution [
File name in [ | Data points | Type of source | Actiona |
---|---|---|---|
AHerringChile | 121 | published graphic | removed: too few data |
AnchovetaChile | 207 | private, personal communication | removed: too few data |
BlackDrum2001 | 141 | government, personal communication | removed: too few data |
BlueCatfish | 119 | published graphic | removed: too few data |
BluegillIL | 61 | private, personal communication | removed: not size at age |
Bonito | 253 | published graphic | removed: too few data |
BullTroutRML2 | 96 | published graphic | removed: too few data |
Cabezon | 525 | private, personal communication | selected: retrieved #2 |
CreekChub | 218 | published graphic | removed: too few data |
Croaker2 | 318 | published graphic | removed: too few data |
DarterOnt | 54 | published graphic | removed: too few data |
EuroPerchTJ | 69 | published graphic | removed: too few data |
FWDrumLE1 | 1577 | published table | selected: retrieved #3 |
Jonubi1 | 410 | published table | removed: too few data |
LakeTroutALTER | 86 | Repository | removed: too few data |
LJCisco | 378 | published table | removed: too few data |
Morwong4 | 392 | Repository | removed: too few data |
Mosquitofish | 9127 | published graphic | removed: too few ages (3 years) |
RBTroutKenai | 102 | published table | removed: not size at age |
RedDrum | 393 | published graphic | removed: too few data |
RockBassLO1 | 1288 | published table | selected: retrieved #7 |
---|---|---|---|
RuffeSLRH92 | 739 | government, personal communication | removed: too few ages (4 years) |
RWhitefishAI | 995 | published table | selected: retrieved #8 |
RWhitefishIR | 103 | published table | removed: too few data |
SardineChile | 196 | private, personal communication | removed: too few data |
SardineLK | 75 | published graphic | removed: too few data |
SculpinALTER | 117 | repository | removed: too few data |
SiscowetMI2004 | 780 | government, personal communication | selected: retrieved #4 - 5 |
SMBassWB | 445 | repository | selected: retrieved #9 |
SpottedSucker1 | 96 | secondary source | removed: too few data |
SpotVA1 | 403 | report | removed: too few data |
StripedBass2 | 1201 | report | selected: retrieved #10 |
TroutBR | 851 | report | selected: retrieved #1 and #6 |
TroutperchLM1 | 431 | published table | removed: too few data |
WalleyeErie2 | 33,734 | government, personal communication | selected: retrieved #11 - 12 |
WalleyeML | 14,583 | government, personal communication | selected: retrieved #13 - 14 |
WalleyeRL | 1543 | published table | selected: retrieved #15 |
WhiteGrunt2 | 465 | published graphic | removed: too few data |
YERockfish | 159 | private, personal communication | removed: too few data |
a#n is the numbering of the data that were retrieved from the selected dataset.
value ev of size with the shape parameter as (approximate) constant of proportionality:
e v = exp ( m + s 2 2 ) and s t d e v = e v ⋅ exp ( s 2 2 ) − 1 ≈ e v ⋅ ( s + O ( s 2 ) ) (4)
Here, m is the location parameter and s > 0 is the shape parameter of a lognormal distribution and the rightmost term in Equation (4) assumes s » 0 (whereby O(∙) refers to the Taylor series remainder). The present paper used this approach in order to conform to established practice in fisheries management literature (A different approach assumes a normal distribution for each age class, but an age dependent variance; e.g. [
The hypothesis of lognormally distributed data was not always exactly correct: For the data of
There are several approaches for heteroscedastic data fitting, amongst them weighted least-squares for the mass-at-age data, using the reciprocals of the standard deviations (of mass at each age class) as weights. The present paper uses instead transformed data. For, technically data-fitting to lognormally distributed mass-at-age data (i.e. maximum likelihood estimation of the optimal distribution and growth function parameters) is equivalent to using a logarithmic transformation of mass and the method of least squares to fit the transformed growth function u(t) = ln(m(t)) to these transformed data (Thereby also the parameters for linear growth, m = m0 + p×t, were determined from a nonlinear regression for u).
Further, (for the transformed data) the least squares method is equivalent to the minimization of the lack-of-fit sum of squares LFSS, where LFSS is the weighted sum of the deviations of the model curve from the averages at each age (the weight is the count of data at this age). The present paper used this reformulation of the least squares method to speed up computations (It has been used earlier in fisheries management, e.g. [
The data fit to the three test models (linear, bounded exponential, and von Bertalanffy exponent-pair) used the Mathematica function NMinimize and simulated annealing [
For the subsequent optimization of the general models (1) and (2), the paper used a custom-made variant of simulated annealing to minimize LFSS, but without constraints. This approach is explained below for the search of the parameters for the general von Bertalanffy-Pütter model (1). The following computations were repeated in a loop of 500,000 steps. Using starting values for the parameters a, b, m0, p, q (starting from the optimal parameters of the von Bertalanffy exponent-pair or, Equation (2), from random numbers), it multiplied them by random numbers between 1 ± dist, but close to 1 (e.g. dist = 0.01); this deviated from the usual simulated annealing, where small random numbers are added. If the altered parameters improved LFSS, they were accepted. Otherwise, the increase of ln(LFSS/N) was compared with an exponentially distributed random number (e.g. mean value exm = 1; N = number of data points); this function was motivated by Akaike’s [
For the definition of an acceptable fit, the paper defined a measure of fit that was motivated by the Akaike information criterion [
P A I C ( model ) = A C ⋅ ln ( L F S S ( model ) N ) + 2 ⋅ K + 2 ⋅ K ⋅ ( K + 1 ) A C − K − 1 (5)
The relation of formula (4) to the usual AIC is explained below. PAIC was defined from the lack-of-fit sum of squares for the model, LFSS (model), from the number N of data-points, from the number AC of age classes and from the number K of optimized parameters. Thereby, K = 4 for the test models (except for linear growth: K = 3), as m0, p, q and implicitly the shape parameter s of the lognormal distribution were optimized. Further, K = 5 and K = 6 for the generalized Gompertz model (2) and the von Bertalanffy-Pütter model (2), respectively. The index pprob compares a given model with the most acceptable one.
p p r o b ( model ) = e − Δ / 2 1 + e − Δ / 2 , (6)
Here, D = PAIC (model) ? PAIC (most acceptable model) > 0. The paper defined a fit as acceptable, if pprob ≥ 2.5%. As the maximal value is pprob = 50%, inacceptable fits were linked to the lowest 5% of possible values of pprob. For example, in
The following outline explains, why the authors decided to use pprob as a measure of the goodness of fit. PAIC is a modification of the Akaike index AICc for small samples [
Clearly, PAIC penalized complex models more, than AICc did, because for the averages there were only few degrees of freedom. However, in the context of fitting growth models the degrees of freedom attainable for large sample sizes may be illusory, if data come from a few age classes. For instance, data for thousands of fish, but all at age 0, do not confer any information about growth. PAIC has the advantage that with a high number of data points a slightly better fitting model with more parameters is not deemed as better, unless the number of age classes is high enough to support more parameters. Further, the Akaike measures depend heavily on the assumption of normally distributed data, which is not exactly true for all fish data, as was noted previously. By contrast, for (weighted) averages of large samples (of logarithmically transformed mass) there is a theoretical justification for assuming a normal distribution, whence for PAIC and pprob the usual interpretations for the Akaike index and the Akaike weight may be assumed. In particular, pprob may be interpreted as a probability that a model is true, assuming that one of the considered models is true. In view of this interpretation, pprob has the same meaning, independently of the considered data, whence it could be used to define the notion of an acceptable fit.
The authors screened 39 datasets from the repository [
The finally retained 11 datasets could be further split by species and by gender, resulting in 15 fish data (
The authors did not aim at including data retrieved from diagrams. For, when retrieving data from diagrams, then the information about multiplicity is lost. For example, digitalizing
No. | Locationa | Sexb | Data | Duplicates | Sizec | Ages | Conversiond of L in M |
---|---|---|---|---|---|---|---|
#1 | Bois Brule River | U | 224 | 84.8% | inch | 7 | 0.01127 × (L × 2.54)2.96 |
#2 | Oregon Coast | F | 299 | 62.2% | cm | 13 | 0.02914 × L3 |
#3 | Lake Erie | U | 1577 | 60.6% | mm | 13 | 0.0483 × (L/10)3 |
#4 | Lake Superior | M | 94 | 34.0% | gram | 10 | none |
#5 | F | 104 | 29.8% | gram | 15 | ||
#6 | Bois Brule River | U | 627 | 90.3% | inch | 8 | 0.0101 × (L × 2.54)3.063 |
#7 | Lake Ontario | U | 1288 | 72.7% | mm | 9 | 0.0314 × (L/10)2.923 |
#8 | Lake Superior | U | 995 | 77.0% | inch | 9 | 0.00885 × (L × 2.54)3.223 |
#9 | West Bearskin Lake | U | 445 | 35.5% | mm | 11 | 0.00469 × (L/10)3.2 |
#10 | Atlantic coast | U | 1201 | 84.4% | inch | 18 | 0.00945 × (L × 2.54)2.907 |
#11 | Lake Erie | M | 20,166 | 67.8% | gram | 20 | none |
#12 | F | 13,155 | 60.9% | gram | 17 | ||
#13 | Mills Lacs Lake | M | 6414 | 88.2% | mm | 17 | 0.02914 × (L/10)3.008 |
#14 | F | 8169 | 88.5% | mm | 16 | ||
#15 | Red Lakes | U | 1543 | 64.2% | mm | 6 |
aLocations from the USA; bF female, M male, U unsexed; cSize at age in years; dConversion into gram.
average value, although these values represented samples of different sizes. Some sources [
Six data were identified as suitable for sigmoidal growth. For these, the optimal exponent-pairs (fit of the general von Bertalanffy-Pütter model) were computed (
No | LFSS | pprob | Sigmoidala | ||||
---|---|---|---|---|---|---|---|
Linear | Bounded exponential | Von Bertalanffy | Linear | Bounded Exponential | Von Bertalanffy | ||
1 | 0.995 | 1.17 | 0.506 | 50% | 0% | 1% | N |
2 | 0.727 | 0.818 | 0.566 | 50% | 5% | 36.7% | N |
3 | 63.9 | 64.75 | 46.47 | 50% | 9.5% | 47.57% | N |
4 | 0.693 | 0.636 | 0.61 | 50% | 7.1% | 8.6% | N |
5 | 2.202 | 1.906 | 1.714 | 50% | 30.5% | 49.3% | N |
6 | 7.468 | 1.427 | 1.033 | 3.7% | 21.5% | 50% | N |
7 | 14.031 | 13.24 | 12.7584 | 50% | 3.4% | 4.0% | N |
8 | 24.607 | 36.756 | 1.269 | 0% | 0% | 50% | Y |
9 | 63.792 | 66.611 | 3.804 | 0% | 0% | 50% | Y |
10 | 40.605 | 46.562 | 13.889 | 0% | 0% | 50% | Y |
11 | 192.21 | 28.72 | 16.94 | 0% | 0.5% | 50% | Y |
12 | 99.09 | 122.54 | 10.38 | 0% | 0% | 50% | Y |
13 | 170.79 | 3.81 | 8.55 | 0% | 50% | 0.1% | N |
14 | 73.1 | 32.95 | 19.43 | 0% | 1.4% | 50% | Y |
15 | 23.12 | 1.94 | 15.84 | 50% | 0% | 0% | N |
aY yes, N no.
No | LFSS (top) and pprob (bottom) | Exponents: new classa (top) and optimal (bottom) | ||||||
---|---|---|---|---|---|---|---|---|
Von Bertalanffy | New classa | Optimal | a | b | m0 | p | Q | |
8 | 1.269 | 0.385 | 0.385 | 0.488 | =a + 1/3 | 20.0 | 14.98 | 0.88 |
50% | 34.7% | 0% | 0.483 | 0.837 | 20.0 | 14.9 | 0.74 | |
9 | 3.804 | 1.853 | 1.841 | 0.973 | =a + 1/3 | 6.1 | 1.22 | 0.16 |
42.8% | 50% | 0.4% | 1.007 | 1.243 | 6.1 | 1.36 | 0.32 | |
10 | 13.889 | 3.597 | 3.596 | 1.947 | =a + 1/3 | 699.1 | 0.00066 | 0.0000037 |
0% | 50% | 9.0% | 1.951 | 2.279 | 699.7 | 0.00065 | 0.000038 | |
11 | 16.943 | 13.560 | 13.560 | 0.506 | =a + 1/3 | 119.9 | 38.0 | 3.78 |
39.7% | 50% | 11.0% | 0.506 | 0.807 | 119.9 | 38.0 | 3.78 | |
12 | 10.382 | 10.08 | 10.0 | 0.713 | =a + 1/3 | 112.3 | 10.48 | 0.69 |
50% | 14.0% | 1.5% | 0.742 | 1.009 | 112.9 | 10.31 | 1.17 | |
14 | 19.433 | 17.741 | 17.741 | 0.557 | =a + 1/3 | 427.7 | 33.92 | 1.66 |
50% | 19.0% | 1.6% | 0.557 | 0.891 | 427.7 | 33.92 | 1.66 |
aThe “new class” refers to the Parks-1/3 model explained in the Discussion section.
the optimal and the von Bertalanffy exponent-pair were notable. This indicates that the exponent-pairs with a reasonable fit to the data (LFSS close to the minimal LFSS) may extend over a wide region; the authors [
The traditional explanation of differential Equation (1) proposed that the rate of growth would be proportional to the difference between anabolism and catabolism, both of which would be proportional to a power of mass. Specific values of the exponents were then derived from biophysical arguments; e.g.: b = 1, as catabolism would be proportional to mass (number of sustained cells) and a = 2/3, as anabolism would be proportional to the gills’ surface (oxygen consumption) and therefore to the 2/3th power of mass [
The present alternative explanation of Equation (1) hypothesizes that body mass would be a function of the total food intake F(t) since birth (t = 0), whereby the (individual) asymptotic mass mmax would be approached at a rate dependent on instantaneous food intake:
d m / d t m max d − m ( t ) d = k 1 ⋅ d F d t (7)
In the formula, k1 > 0 a constant of proportionality and d is a constant that explains the speed of growth: With the same total food intake F, with a larger d the asymptotic mass mmax is approached faster. This model, using d = 1, was proposed by Parks ( [
d m ( t ) d t = p ⋅ m ( t ) a − q ⋅ m ( t ) a + d (8)
This parametrization suggests to consider model classes that are defined by assuming a value of d. As the original motivation comes from Parks, this paper calls this the Parks-d model class. For instance, Parks’ assumption would define the Parks-1 model class with bounded exponential growth (a = 0: constant energy needs) and logistic growth (a = 1: energy needs proportional to mass) as special cases. As the von Bertalanffy exponent-pair is a special case of the Parks-1/3 model class, the present paper investigates this class.
when compared with the non-sigmoidal models, but the consideration of the best-fitting model changed the assessment). Further, the fit of the Parks-1/3 model was nearly optimal, as seen in
There were surprisingly few data that supported the hypothesis of a sigmoidal shape of mass growth, and those did support the new Parks-1/3 model (exponent-pairs b = a + 1/3).
The 39 datasets allowed to define 70+ data using additional stratifications. When testing the suitability of these data for modeling sigmoidal growth, more than 3/4 of these data were removed due to poor data quality (insufficient size). Of the remaining 15 data almost 2/3 were removed due to the insufficient fit of a sigmoidal growth function. A speculative explanation for the insufficient fit may be data quality, again. There were some data with notable differences between the arithmetic and geometric mean (
For all six data that were suitable for modeling sigmoidal growth, the Parks-1/3 model provided an acceptable fit; for 50% of the data it improved upon the von Bertalanffy exponent-pair model (one significant improvement) despite the penalty for the additional free parameter. Therefore, when compared to the model classes of Richards, Gompertz or the generalized von Bertalanffy model, the Parks-1/3 model may provide the most realistic description of the mass growth of fish. In particular, the advantage of this model is its consideration food consumption and the flexibility gained by an additional parameter that for all data resulted in a near optimal fit.
The authors declare no conflicts of interest regarding the publication of this paper.
Renner-Martin, K., Brunner, N., Kühleitner, M., Nowak, W.-G. and Scheicher, K. (2019) A Model for the Mass-Growth of Wild-Caught Fish. Open Journal of Modelling and Simulation, 7, 19-40. https://doi.org/10.4236/ojmsi.2019.71002
Data were imported from sheet n of an Excel file, sorted (lexicographically) and the title line was dropped:
dat1 = Import[“C:\\...\\filename.xlsx”]; dataraw = Sort[Drop[dat1[[n]], 1]];
Authors first checked the size (minimum about 100), the percentage of duplicates (minimum about 30% to remove data retrieved from diagrams) and the number of ages (minimum 6). Further, authors plotted the catch curve to check for irregularities.
Length[dataraw];
1-Length[Union[dataraw]]/Length[dataraw];
Length[GatherBy[dataraw, First]];counts = Tally[Transpose[rawdata][[
chartcounts =
BarChart[Apply[Labeled, Reverse[counts, 2], {1}], AxesLabel -> {“age”, “count”}]
Several data were length-at-age, using different units (inch, cm, mm); these were converted into mass (in g) at age, using literature values (FishBase for total length in cm in g). Further, the range of the data (minimal and maximal ages and masses) was checked and the arithmetic mean of mass at age together with its maximum value (for assessing empirical meaningfulness) was evaluated.
datamass = Map[{#[[
/. {conunits -> unit conversion, cona -> literature value, conb -> literature value};
sort = Sort[datamass];
{timemin, timemax, weightmin, weightmax} =
{Min[Transpose[sort][[
gdata = GatherBy[sort, First];
avarith = Map[Mean, gdata] // N;
gweightmax = Max[Transpose[avarith][[
In order to prepare the best fit, a logarithmic transformation was applied to the mass data. Further, the geometric means at each age were evaluated and plotted together with the mass-at-age data.
logdata = Map[{#[[
ldata = GatherBy[logdata, First];
avlog = Map[Mean, ldata] // N;
avgeo = Map[{#[[
dataplot =
ListPlot[{sort, avgeo},
PlotStyle -> {{PointSize[0.01], Blue}, {PointSize[0.015], Green}},
AxesLabel -> {“age in years”, “mass in gram”}, PlotRange -> All,
PlotLegends -> {“data”, “geometric mean”}];
The optimization goal was the minimization of LFSS as a function ssr of the exponents a, b, the initial value m0 = c and the parameters p, q (?NumberQ defines these as numeric variables). This function was defined from using a numeric solution f = sol of the differential Equation (1); thereby the Block-method was used to define local variables:
ssr[a_?NumberQ, b_?NumberQ, c_?NumberQ, p_?NumberQ, q_?NumberQ] :=
Block[{sol, f},
sol = NDSolve[{f'[t] == p*f[t]^a - q*f[t]^b, f[timemin] == c}, f,
{t, timemin, timemax}][[
Sum[counts[[n, 2]]*(Log[f[avlog[[n, 1]]] /. sol] - avlog[[n, 2]])^2,
{n, 1, Length[avlog]}]];
The subsequent optimization using Simulated Annealing was conducted by the same scheme for each test model: linear growth, sigmoidal von Bertalanffy growth, non-sigmoidal bounded growth. For linear growth, the constraints m0 > 0 for the initial value and p > 0 for the rate of increase were added. For the other growth functions these constraints were restricted further: The initial value was constrained to exceed 10% of the least observed mass and the parameter q was constrained so as to ensure an empirically meaningful asymptotic mass. Further, the optimal growth curves, the data and the geometric means were plotted and finally LFSS was compared:
optlin =
NMinimize[{ssr[0, 0, c, p, 0], c > 0, p > 0}, {c, p}, Method -> “SimulatedAnnealing”];
optbert = NMinimize[{ssr[2/3, 1, c, p, q], c > weightmin/10, p > 0,
q > p/(2*gweightmax^(1/3)), q < p/(0.5*gweightmax^(1/3))},
{c, p, q}, Method -> “SimulatedAnnealing”];
optexp = NMinimize[{ssr[0, 1, c, p, q], c > weightmin/10, p > 0,
q > p/(2*gweightmax), q < p/(0.5*gweightmax)}, {c, p, q},
Method -> “SimulatedAnnealing”];
lin = f /. NDSolve[{f'[t] == p, f[timemin] == c} /. optlin[[
{t, timemin, timemax}][[
linplot = Plot[lin[x], {x, timemin, timemax}, PlotStyle -> Dashed];
bert = f /. NDSolve[{f'[t] == p*f[t]^(2/3) - q*f[t], f[timemin] == c} /. optbert[[
bertplot = Plot[bert[x], {x, timemin, timemax}, PlotStyle -> Black];
exp = f /. NDSolve[{f'[t] == p - q*f[t], f[timemin] == c} /. optexp[[
{t, timemin, timemax}][[
explot = Plot[exp[\[FormalX]], {\[FormalX], timemin, timemax}, PlotStyle -> Red];
Show[{ListPlot[sort, PlotStyle -> {PointSize[0.01], Blue}],
ListPlot[avgeo, PlotStyle -> {PointSize[0.015], Green}], linplot, explot, bertplot},
AxesLabel -> {“age in years”, “mass in gram”}, PlotRange -> All]
{lfsslin, lfssbert, lfssexp}={optlin[[
Models were compared using PAIC and pprob:
paic[sse_?NumberQ, n_?IntegerQ, m_?IntegerQ, k_?IntegerQ] :=
m*Log[sse/n] + 2*k + 2*k*(k + 1)/(m - k - 1);
probaic[x_, y_] = Exp[-(x - y)/2]/(1 + Exp[-(x - y)/2]);
pseudoaics =
{paic[lfsslin, Length[sort], Length[counts], 3],
paic[lfssexp, Length[sort], Length[counts], 4],
paic[lfssbert, Length[sort], Length[counts], 4]};
minaic = Min[pseudoaics];
pprob =
{probaic[pseudoaics[[
probaic[pseudoaics[[
The custom-made simulated annealing started with the optimal parameters for the Von Bertalanffy exponent-pair model and followed the procedures explained in text, whereby the logarithm of LFSS was optimized. Also this optimal growth function was plotted.
{a0, b0, c0, p0, q0} = {2/3, 1, c, p, q} /. optbert[[
sse = ssr[a0, b0, c0, p0, q0]; llh = - Log[sse];
{ssemin, amin, bmin, cmin, pmin, qmin} = {sse, a0, b0, c0, p0, q0};
\[Alpha] = 1.0; s = 0.01;
Do[
If[Mod[i, 10000] == 0, \[Alpha] *= 0.9;
Print[i, “ ”, \[Alpha] s];
{sse, a, b, c, p, q} = {ssemin, amin, bmin, cmin, pmin, qmin}];
{ac, bc, cc, pc, qc} = RandomReal[{1 - \[Alpha]*s, 1 + \[Alpha]*s}, 5] {a, b, c, p, q};
ssec = ssr[ac, bc, cc, pc, qc]; llhc = -Log[ssec];
If[Log[RandomReal[
sse = ssec; llh = llhc;
If[sse < ssemin,
Print[i, “ ”, {ssemin, amin, bmin, cmin, pmin, qmin} =
{sse, a, b, c, p, q}]], {i, 500000}]
puett =
f /. NDSolve[{f'[t] == pmin*f[t]^amin - qmin*f[t]^bmin, f[timemin] == cmin}, f,
{t, timemin, timemax}][[
puettplot = Plot[puett[x], {x, timemin, timemax}, PlotStyle -> Blue];