在 R 中使用 constroptim on equals constraint on variables

using constroptim in R on equals constraint on variables

问题很简单

我正在使用 constrOptim 函数,其中 constraints/parameters a,b,c 满足条件 a+b+c = 1 和 a>0,b>0,c>0

我可以举个例子吗?

到目前为止,我可以编写如下代码:

optim(c(0.1,0.1,0.1,0.1,0.1,0.1),
   optimize_ranks,data=data,
   lower=c(0.2,0.2,0.2,0.1,0.1,0.2),
   method="L-BFGS-B",
   upper=c(1,1,1,1,1,1))

我想要的是,这 6 个参数 x1,x2,x3,x4,x5,x6 必须加起来为 1。

如果您需要在 6 个参数 abcde 上设置这些约束(总和等于 1) ,fconstrOptim:

ui = rbind(
   c(1,1,1,1,1,1),
   c(-1,-1,-1,-1,-1,-1)
 )
ci = c(0.999, -1.001)

func = function(x) x[1]-x[2]*x[1]+x[3]**3-x[4]*x[5]

init = c(1,0,0,0,0,0)

#> constrOptim(init, func, grad=NULL, ui=ui, ci=ci)
#$par
#[1]  -5744.485   4392.275 -27681.276  14950.497   5945.962   8138.027

#$value
#[1] -2.121093e+13

想想你的 6 个参数向量 x 使得 ui*x>ci(不等式是严格的,解释了 ci0.001 的误差范围)。这正是 constrOptim 文档中描述的方式。