Насколько я могу судить, ваша единственная проблема - включить x
в ваш список параметров, что сбивает с толку R (я не могу точно сказать вам, почему ... что-то об этом фактечто это на самом деле не параметр модели ...).nls(fit, data=mydata, start=pars)
отлично работает для меня.
Имитация данных:
fit <- as.formula(y~c*(exp((-(x-z)^2/l))))
mydata <- data.frame(x=80:200)
pars <- list(c=0.005, z=130,l=2000)
set.seed(101)
mydata$y_det <- eval(fit[[3]],
env=c(pars,as.list(mydata)))
mydata$y <- rnorm(nrow(mydata),mean=mydata$y_det,sd=0.0002)
plot(y~x,data=mydata) ## check
Попробуйте оригинальную подгонку:
nls_fit <- nls(fit, data=mydata, start=c(pars,list(x=mydata$x)))
Ошибка в numericDeriv (форма [[3L]], names (ind), env): Пропущенное значение или бесконечность, полученные при оценке модели
Подходит только для параметров (не x
).
nls_fit <- nls(fit, data=mydata, start=pars)
lines(mydata$x,predict(nls_fit),col=2)
coef(nls_fit)
## c z l
## 4.963097e-03 1.302308e+02 2.035007e+03