[R] Using nls or nls.lm with a simulation output
Marc Girondot
marc.girondot at u-psud.fr
Thu Feb 12 11:09:48 CET 2009
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:
First without stochasticity (it is a dummy example, the fited value is
simple the mean of a set of 10 numbers):
#Ten numbers
x <- 1:10
#Generate 10 Gaussian random number with mean=3 sd=1
simy <- rnorm(length(x), mean=3, sd=1)
#theoretical value for each of the 10 numbers=the adjust value
y1 <- function(pp,xx) {rep(pp$a, length(xx))}
#Residual
resid <- function(pp,observed,xx) {observed-y1(pp,xx)}
#Starting parameter
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
Has someone a solution ?
Thanks a lot
[we use previously Profit software (macosx software) for such a fit and it
works there. But r is more portable and we will prefer to use it. Thanks]
More information about the R-help
mailing list