我希望对来自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)
我想将lo_0(相移)从0:2e-5限制。我发现了一些关于此的文档,但它没有详细描述如何实现:https://ubuntuforums.org/showthread.php?t=1420061
答案 0 :(得分:2)
可能
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))
我强烈建议您另外使用参数control=list(parscale=c(lo_0,kc_0))
; optim()
期望参数可以按比例缩放,并且(当使用有限差分近似计算导数时)为1阶。
答案 1 :(得分:0)
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, method="L-BFGS-B", lower=c(0,50000), upper=c(2e-5,100000), control=list(parscale=c(lo_0,kc_0)))