我想设置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
重新定义为
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的解决方案感兴趣。