[R] Using nls or nls.lm with a simulation output
Dieter Menne
dieter.menne at menne-biomed.de
Thu Feb 12 14:55:38 CET 2009
Marc Girondot <marc.girondot <at> u-psud.fr> writes:
>
> We would like to fit parameters using a simulation with stochastic
> processes as theoretical values. We generate a simple exemple with nls.lm
> to see the logic and the problem:
>
Example removed
...
> pStart <- list(a=0.1)
> #non-linear fit
> library(minpack.lm)
> nls.lm.test <- nls.lm(par=pStart, fn=resid, observed=simy, xx=x,
> control=nls.lm.control(nprint=1))
>
> It works fine:
> It. 0, RSS = 86.2811, Par. = 0.1
> It. 1, RSS = 5.69735, Par. = 2.93873
> It. 2, RSS = 5.69735, Par. = 2.93873
>
> Now let the function generating the theoretical values returns also a
> little bit noise, as observed from the output of a simulation with
> stochasticity:
> y1 <- function(pp,xx) {rep(pp$a, length(xx))+rnorm(length(xx), mean=0,
> sd=0.01)}
>
> Then the fit failed:
> It. 0, RSS = 86.1011, Par. = 0.1
> It. 1, RSS = 86.4468, Par. = 0.1
>
> Similar problem is observed for nls
Thanks for the working example. When I tried to use a start parameter
closer to 3, convergence was achieved. This is one of the relatively
rare cases (on this list) where the start parameter(s) matter(s). In most
cases, non-linear fits fails because they are hopelessly over-parameterized.
Gabor Grothendiek's package nls2 might help here.
Dieter
More information about the R-help
mailing list