R:Optim() 拟合参数限制

Ent*_*opy 1 optimization r curve-fitting non-linear-regression

我希望限制 optim() 的输出参数。对于我的正弦函数(其中“designL”是我的自变量,“ratio”是我的因变量数据,dfm 是我的数据帧),它不必要地收敛了数千个异相相位:

lo_0 = 2e-6
kc_0 = 80000
min.RSS <- function(data, par) {
  with(data, sum( (sin(par[2] *(par[1] + designL))^2 - ratio)^2) )
}
resultt <- optim(par = c(lo_0, kc_0), min.RSS, data = dfm)
Run Code Online (Sandbox Code Playgroud)

我想从 0:2e-5 限制 lo_0(相移)。我找到了一些关于此的文档,但它没有详细说明如何实现:https : //ubuntuforums.org/showthread.php?t=1420061

Ben*_*ker 5

大概

resultt <- optim(par = c(lo_0, kc_0), min.RSS, data = dfm[ind_1,],
     method="L-BFGS-B", lower=c(0,-Inf), upper=c(2e-5,Inf))
Run Code Online (Sandbox Code Playgroud)

我强烈建议你另外使用这个论点control=list(parscale=c(lo_0,kc_0))optim()期望参数以类似的方式缩放,并且(当使用有限差分近似计算导数时)为 1 阶。