I dont think *r* is related to the problem. I am not trying to estimate *r* and so basically I am giving the model the correct value of *r* and so log(1-r) should not go to infinity.
For test data, I generate data from the same model and add noise (using *r norm*), with the following parameters - A <- 20 > B <- 500 > r <- 0.6881 > d <- (1:1000)/1000 > y <- (rnorm(d)*0.005)+(((log(1-r))*exp(-A*d)*(-1+r+exp(d*(A-B)))/(r*(-A*+d*B+log(1-r))))) And then I try estimating A, B and C (Note: C is capturing the noise term, and I am specifying r and d) but I get the following error - Error in numericDeriv(form[[3L]], names(ind), env) : Missing value or an infinity produced when evaluating the model Any suggestions how to fix this? Diviya On Tue, Sep 20, 2011 at 2:37 PM, Jean V Adams <jvad...@usgs.gov> wrote: > > Diviya Smith wrote on 09/20/2011 01:03:22 PM: > > > > > Hello there, > > > > I am using NLS for fitting a complex model to some data to estimate a > couple > > of the missing parameters. The model is - > > y ~ > (C+((log(1-r))*exp(-A*d)*(-1+r+exp(d*(A-B)))/(r*(-A*d+d*B+log(1-r))))) > > where A, B and C are unknown. > > > > In order to test the model, I generate data by setting values for all > > parameters and add some noise (C). > > > > A <- 20 > > B <- 500 > > r <- 0.6881 > > d <- (1:1000)/1000 > > y ~ > > (rnorm(d)*0.005)+(((log(1-r))*exp(-A*d)*(-1+r+exp(d*(A-B)))/(r*(-A*d > > +d*B+log(1-r))))) > > > > I use Deoptim package to pick the optimum starting values. The model > works > > fine in most cases, but every now and again, I get the following error - > > Error in numericDeriv(form[[3L]], names(ind), env) : > > Missing value or an infinity produced when evaluating the model > > > > Any suggestions on how I can resolve this? Can you suggest a better way > for > > picking the starting parameters? > > > > Thanks, > > Diviya > > > I'm not sure if this is the problem, but if r grows greater than 1, > log(1-r) will be undefined, and you'll get an error. You can impose a > constraint on r by rewriting your formula in terms of a variable that can > take on any real value: > R = log(1-r) > > So, > replace log(1-r) in your formula with R, > replace (-1 + r) with -exp(R), and > replace r with 1 - exp(R): > y ~ (C+(R*exp(-A*d)*(-exp(R)+exp(d*(A-B)))/((1 - exp(R))*(-A*d+d*B+R)))) > > If that doesn't fix the problem, then you are likely getting infinite > values as result of large numbers in your exponents. Without example data > to work through, I can only speculate. > > Jean [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.