具有多个参数的Optim - 定义函数参数类型

时间:2018-01-26 17:57:38

标签: r optimization arguments

我想最小化函数的前11个(或任何大数)参数,其总共需要15个(或任何大于11 /所述第一个数字的参数)参数。问题是当我使用带有optim的{​​{1}}函数作为前11个值时,无法计算该函数,因为它仅为其第一个参数获取所有11个值。有没有办法强制每个输入参数为标量/单个数字?

更具体一点:

par=c(...)

尝试运行此代码总是以错误消息结束: fn(par,...)中的错误:缺少参数“m1”,没有默认值。通过打印出参数,我认为该函数假定来自fun_to_optim <- function(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,p1,p2,p3,p4) { # I want to make sure m1 to m11 are single numbers and no vectors ... } # optimization optim(par=c(0,0,0,0,0,0,0,0,0,0,0),fn=fun_to_optim,p1=data,p2=opt,p3=data,p4=1) 的所有值都用于输入变量par。因此,m1被视为具有通过m1给出的初始值的向量。

请注意:我知道可以简单地将前11个参数放入向量(比如par),然后像我一样调用para_to_optim函数。但是,我明确地不想这样做,因为我需要迭代地优化参数,即从仅1个参数开始到结束将全部11个。使用不同的输入参数结构写入函数11次似乎有点低效。

我已经检查了Forcing specific data types as arguments to a functionHow to define argument types for R functions?等函数参数的类似帖子,但在我的情况下检查函数和包装器或S3类中的参数类型是不可能的也有问题。还有其他方法可以解决这个问题吗?

0 个答案:

没有答案