[R] Non linear regression - Von Bertalanffy Growth Function - "singular gradient matrix at initial parameter estimates"

Xochitl CORMON Xochitl.Cormon at ifremer.fr
Tue Sep 8 18:40:20 CEST 2015

Thank you for the tip. Indeed, nlxb in nlmrt works and results are not 

I would like however to assess goodness-of-fit (gof) and ultimately to 
compare it with gof from linear regression (fitted with same variables).

Before I used AICc to compare the nls() and lm() fit, however I get now 
an error message concerning the method loglike and its non compatibility 
with nlmrt class object. I guess it is because we use now Marquardt 
method to minimise sum-of square instead of Gauss-Newton? I am right? Or 
this is just an incompatibility coming between AICc function and nlmrt 
objects? Is there an R function to do that?


Xochitl C.

<>< <>< <>< <><

Xochitl CORMON
+33 (0)3 21 99 56 84

Doctorante en écologie marine et science halieutique
PhD student in marine ecology and fishery science

<>< <>< <>< <><

Centre Manche Mer du Nord
150 quai Gambetta
62200 Boulogne-sur-Mer

<>< <>< <>< <><

Le 19/08/2015 15:11, ProfJCNash a écrit :
> Packages nlmrt or minpack.lm use a Marquardt method. minpack.lm won't
> proceed if the Jacobian singularity is at the starting point as far as
> I'm aware, but nlxb in nlmrt can sometimes get going. It has a policy
> that is aggressive in trying to improve the sum of squares, so will use
> more effort than nls when both work.
> JN
> On 15-08-18 12:08 PM, Xochitl CORMON wrote:
>> Dear all,
>> I am trying to estimate VBGF parameters K and Linf using non linear
>> regression and nls(). First I used a classic approach where I estimate
>> both parameters together as below with "alkdyr" being a subset per year
>> of my age-length-key database and running in a loop.
>> vbgf.par <- nls(Lgtcm ~  Linf *(1 - exp(-K * (Age - tzero))), start =
>> c(K= 0.07, Linf = 177.1), data=alkdyr)
>> I obtain an estimation of both parameters that are strongly correlated.
>> Indeed after plotting Linf ~ K and fitting a linear regression I obtain
>> a function (Linf = a + b*K) with R2= 0.8 and a = 215, b = -763.
>> In this context, to take into account explicitly correlation between
>> parameters, I decided to fit a new non linear regression derivate from
>> VBGF but where Linf is expressed depending on K (I am most interested in
>> K). To do so, I tried this model:
>> vbgf.par <- nls(Lgtcm ~  (a + (b*k)) *(1 - exp(-k * (Age - tzero))),
>> start = c(k= 0.07, a= 215, b=-763), data=alkdyr)
>> Unfortunately at this point I cannot go further as I get the error
>> message "singular gradient matrix at initial parameter estimates".
>> I tried to use alg= plinear (which I am not sure I understand properly
>> yet). If I give a starting value for a and b only, I have an error
>> message stating "step factor below minFactor" (even when minFactor is
>> set to 100000000000).
>> Any help will be more than welcome as this is quite urgent....
>> Best,
>> Xochitl C.

More information about the R-help mailing list