В следующем примере представлен фрагмент кода, который имитирует данные, которые я хочу смоделировать, с нелинейной регрессией, равной c * e^(-(x - z)^2/l)
fit1<-as.formula(y~c*(exp((-(x-z)^2/l))))
pars<-list(c=0.005, z=129, l=2000)
mydata<-data.frame(x=80:200)
mydata$y_det<- eval(fit1[[3]], env=c(pars, as.list(mydata)))
mydata$y <- rnorm(nrow(mydata),mean=mydata$y_det,sd=0.0002)
Я тогда подхожу с параметрами
nls_fit <- nls(fit1, data=mydata, start=pars)
lines(mydata$x,predict(nls_fit),col=2)
coef(nls_fit)
c z l
4.974788e-03 1.288890e+02 1.993029e+03
Здесь график наблюдаемой и нелинейной модели
Теперь я могу сказать по моей регрессии и подобранному параметру, что центр должен быть около 128,89. Однако для другого приложения не очень ясно, где находится центр этой кривой. Я хотел бы попытаться найти это. То есть значение x абсолютного максимума подобранной кривой. Я не уверен, как поступить. Я слышал о optim
, но как мне применить его здесь; или какой маршрут более подходящий? Я новичок в R и программировании в целом; Может кто-нибудь продемонстрировать, как передать мою формулу с подобранными параметрами через функцию минимизации / максимизации, чтобы найти значение x, которое соответствует наибольшему значению? Заранее большое спасибо; готовы предоставить больше информации, если это необходимо.