Dear List,
I am using constrOptim to solve the following
fr1 <- function(x) {
b0 <- x[1]
b1 <- x[2]
((1/(1+exp(-b0+b1))+(1/(1+exp(-b0)))+(1/(1+exp(-b0-b1)))))/3
}
As you can see, my objective function is
((1/(1+exp(-b0+b1))+(1/(1+exp(-b0)))+(1/(1+exp(-b0-b1)))))/3 and I would
like to solve for both b0 and b1.
If I were to use optim then I would derive the gradient of the function
(grr) as follows:
fr2 <-
expression(((1/(1+exp(-b0+b1))+(1/(1+exp(-b0)))+(1/(1+exp(-b0-b1)))))/3)
grr <- deriv(fr2,c("b0","b1"), func=TRUE)
and then simply use optim via
optim(c(-5.2,0.22), fr1, grr)
My problem is that I wish to place constraints (b0>=-0.2 and b1>= 0.1)
upon
the values of b0 and b1. I can set the constraints matrix and boundary
values to
ui=rbind(c(1,0),c(0,1)) and ci=c(-0.2,0.1), however, when I come to run
constrOptim function via
constrOptim(c(-0.1,0.2), fr1, grr, ui=rbind(c(1,0),c(0,1)),
ci=c(-0.2,0.1))
I get the following error message:
"Error in .expr1 + b1 : 'b1' is missing"
So, it seems to me that I am doing something incorrectly in my
specification of grr in constrOptim.