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

4

0 に答える 0