Необходимо оптимизировать конкретную функцию, чтобы получить наилучшую кривую
Я ищу наиболее подходящую кривую, которая будет соответствовать определенной формуле. Параметры A и B должны быть оптимизированы
# X and Y are my datasets Y depend of X
X=c(73,33,201,90,1513,1312,1044,929,836,657,104,22)
Y=c(2.89,6.11,3.57,4.03,0.16,0.00,1.41,0.00,2.13,6.16,2.85,5.08)
# X and Y plot give us
plot(X,Y, main="Y function of X",pch=6,xlab="X", ylab="Y",col='black')
#Type of curve that I need
curve(0.07*90*(1-(x/(x+exp(5-0.001*x)))), add = T,col="blue",lw=3,lty=2)
#I want therefore to optimize the parameters A and B in order to have the best fitted curve according to this formula that fit better with my data
curve(0.07*90*(1-(x/(x+exp(B+A*x)))), add = T, col="blue",lw=3,lty=2)
# Please help `enter code here`
1 ответ
Ты можешь использовать nls()
оптимизировать функцию с использованием нелинейных наименьших квадратов. Например
nls(Y~0.07*90*(1-(X/(X+exp(B+A*X)))), data.frame(X,Y), start=list(A=.001,B=5))
возвращается
Nonlinear regression model
model: Y ~ 0.07 * 90 * (1 - (X/(X + exp(B + A * X))))
data: data.frame(X, Y)
A B
0.0004154 5.1653460
residual sum-of-squares: 30.27
Number of iterations to convergence: 8
Achieved convergence tolerance: 8.472e-06