我想设置约束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
?具体来说,我不知道如何指定参数ui
和ci
.
在这些限制条件下进行优化的替代方法也受到欢迎。谢谢。
编辑
我认为我找到了一个解决方法。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 的解决方案感兴趣。