[R] nls works but not gnls
Antonio Olinto
aolinto at bignet.com.br
Fri Jun 1 17:24:07 CEST 2001
Hello,
I had a similar problem with using gnls with a three-column data.frame like
this (Li is a
back-calculated length at age for each fish):
Fish Age Li
1 1 110.17
1 2 143.61
1 3 180.47
1 4 218.97
1 5 257.12
1 6 299.22
1 7 328.16
2 1 100.36
2 2 131.09
2 3 171.42
2 4 213.08
..
Writing:
vbmale <- gnls(Li ~ Linf*(1-exp(-K*(Age-t0))), data=male, params= Linf +K +
t0 ~ 1, start=list(Linf=1000,K=0.1,t0=0), control = list(returnObject = T),
corr = corAR1(form=~Age|Fish))
I got:
Error in [<-.factor(*tmp*, , value = grpShrunk[revOrderShrunk]) : Argument
"i" is missing, with no default
In addition: Warning message:
Step halving factor reduced below minimum in NLS step in: gnls(Li ~ Linf
*(1 - exp(-K * (Age - t0))), data = male, params = Linf +
Using the same data in S-Plus, a colleague of mine had the output:
vbmale
Generalized nonlinear least squares fit
Model: Li ~ Linf * (1 - exp( - K * (Age - t0)))
Data: male
Log-likelihood: -7515.22
Coefficients:
Linf K t0
1412.352 0.04403359 -0.6916286
Correlation Structure: AR(1)
Formula: ~ Age| Fish
Parameter estimate(s):
Phi
0.9660297
Degrees of freedom: 1803 total; 1800 residual
Residual standard error: 54.37347
Is there a bug? I would like to hear comments too.
Antônio Olinto
Fisheries Researcher
Instituto de Pesca (Fisheries Institute)
Sao Paulo - BRAZIL
aolinto at bignet.com.br
www.institutopesca.sp.gov.br
> This works fine:
> fit42<-nls(Vfs~SSlogis(Months,Asym.Int+Asym.Group*Groupdum,xmid,scal),
> data=df,
> start=c(Asym.Int=22,Asym.Group=5,xmid=2,scal=6),
> na.action=na.omit)
>
> But this, identical except using gnls, doesn't converge:
> fit43<-gnls(Vfs~SSlogis(Months,Asym.Int+Asym.Group*Groupdum,xmid,scal),
> data=df,
> start=c(Asym.Int=22,Asym.Group=5,xmid=2,scal=6),
> na.action=na.omit)
>
> Error in gnls(Vfs ~ SSlogis(Months, Asym.Int + Asym.Group * Groupdum, :
> Step halving factor reduced below minimum in NLS step
> I tried adding
> ,control=list(minScale=.0001))
> But get the same lack-of-convergence message. Any ideas on how to fix this
> and why gnls is finickier than nls?
>
> I use a good starting point about equal to the final param values nls
> gives. The logistic function does indeed give a decent fit to the data.
>
> I need gnls instead of nls because I eventually want to add
> corr=corCAR1(form=~Months|Subject)
>
> Suppose I have highly autocorrelated errors but ignore
> that (as in nls fit). How much would you trust the nls estimates of the
> fitted parameters? What does taking account of the autocorr buy me?
> BTW I already tried nlme and had similar problems so I wound up fitting
> lme quadratic model. I think I would be distorting reality less by
> ignoring the autocorr &/or random effects (nls fit) than I am by
> paying attention to autocorr & random effects but fitting a polynomial
> that bears no relation to the mechanism generating the data (it clearly
> will be a function that approaches an asymptote). The gnls fit would be
> good because it pays attention to autocorr errors and allows me to fit
> realistic nonlinear curve (although it ignores random effects).
>
> Thanks for any help!
>
> Bill Simpson
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
-.-.-
> r-help mailing list -- Read
http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
>
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
_._
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list