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 を含むソリューションに興味があります。