[R] NLS "Singular Gradient" Error
Walmes Zeviani
walmeszeviani at hotmail.com
Wed Apr 28 17:56:27 CEST 2010
I don't know any about you research but I agree with Gabor: the model is
identifiable.
No*(1-exp(a*(b*Ne-T))) can be reparametrized to No*(1-exp(C*NeD)), where
C=a*b and D=a*T. This reduces the model to 3 parameters and can see shown
that is a reperametrization of the SSasympOff() defined in R (with default
start values). "No" is a parameter too, so you need provide start values in
start list. Look:
# indentifiability
No <- 100; a <- 1; b <- -1; T <- 2
Ne <- seq(1, 10, l=8)
curve(No*(1-exp(a*(b*x-T))), 0, 10)
abline(h=No*(1-exp(a*(b*0-T)))) # intercept
C <- a*b; D <- a*T
curve(No*(1-exp(C*x-D)), add=TRUE, lty=2, col=2, lwd=2)
help(SSasympOff, help_type="html")
# model speficication
nls(Ne~No*(1-exp(a*(b*Ne-T))), start=list(a=1.2, b=0.015, T=24))
^ ^
^ ^
y y?
> y <- No*(1-exp(a*(b*Ne-T)))+rnorm(Ne,0,0.1)
> plot(y~Ne)
> nls(y~No*(1-exp(a*(b*Ne-T))), start=list(No=No, a=a, b=b, T=T))
Erro em numericDeriv(form[[3L]], names(ind), env) :
Obtido valor faltante ou infinito quando avaliando o modelo
> nls(y~No*(1-exp(C*Ne-D)), start=list(No=No, C=C, D=D))
Nonlinear regression model
model: y ~ No * (1 - exp(C * Ne - D))
data: parent.frame()
No C D
99.9763 -0.9972 2.0197
residual sum-of-squares: 0.02746
Number of iterations to convergence: 2
Achieved convergence tolerance: 6.673e-07
>
Bests.
-----
..ooo0
...................................................................................................
..(....)... 0ooo... Walmes Zeviani
...\..(.....(.....)... Master in Statistics and Agricultural
Experimentation
....\_)..... )../.... walmeszeviani at hotmail.com, Lavras - MG, Brasil
............
(_/............................................................................................
--
View this message in context: http://r.789695.n4.nabble.com/NLS-Singular-Gradient-Error-tp2069029p2073452.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list