1

我想设置约束constrOptim以优化以下功能:

logistic<-function(b,x,target){
  b1<-b[1]
  b2<-b[2]
  log<-function(x){1/(1+exp(-(b1+b2*x)))}
  abs(mean(log(x))-target)
}

优化target=.75通常可以使用

optim(c(1,1),logistic,x=data,target=.75,hessian=TRUE,method='SANN')

方法 SANN 似乎是必要的,因为该函数是不可微的。

约束条件是 b2>0(条件 1)或 b2<0(条件 2),而 b1 可以是任何实数。但是如何将此功能扩展到constrOptim?具体来说,我不知道如何指定参数uici.

在这些限制条件下进行优化的替代方法也受到欢迎。谢谢。

编辑 我认为我找到了一个解决方法。logistic我们通过重新定义找到约束 b2<0

logistic_lt<-function(b,x,target){
  b1<-b[1]
  b2<-b[2]
  if(b2>0){b2<-b2*(-1)}
  log<-function(x){1/(1+exp(-(b1+b2*x)))}
  abs(mean(log(x))-target)
}

我仍然对涉及 constrOptim 的解决方案感兴趣。

4

0 回答 0