Re: [R] constrOptim and function with additional parameters?

From: Roger D. Peng <rpeng_at_jhsph.edu>
Date: Thu 15 Jul 2004 - 00:01:45 EST

Actually, I think this is a bug. Take a look at this part of constrOptim:

 > constrOptim
function (theta, f, grad, ui, ci, mu = 1e-04, control = list(),

     method = if (is.null(grad)) "Nelder-Mead" else "BFGS", outer.iterations = 10
0,

     outer.eps = 1e-05, ...)
{

     if (!is.null(control$fnscale) && control$fnscale < 0)
         mu <- -mu
     [...]
     obj <- f(theta)
     ^^^^^^^^^^^^^^^
     r <- R(theta, theta)
     for (i in 1:outer.iterations) {
         obj.old <- obj
         r.old <- r
     [...]

}

So the object function `f' is called on the starting value `theta' but the `...' is not passed through.

-roger

Duncan Murdoch wrote:
> On Wed, 14 Jul 2004 14:59:01 +0200 (MEST), "Marlene Mueller"
> <Marlene.Mueller@gmx.de> wrote :
>
>

>>How can I use a function with some additional input parameters
>>in constrOptim? For example, something like
>>
>>fr <- function(x,a) {   ## Rosenbrock Banana function
>> x1 <- x[1]
>> x2 <- x[2]
>> a * (x2 - x1 * x1)^2 + (1 - x1)^2
>>}
>>
>>where the optimum is to be found w.r.t. x. Calling
>>optim(c(-1.2,1), fr, NULL, a=100) works as expected, but I fail 
>>to provide the a=100 in the constrained case:
>>
>>
>>> constrOptim(c(-1.2,0.9), fr, NULL, ui=rbind(c(-1,0),c(0,-1)),
>>
>>ci=c(-1,-1),a=100)
>>Error in f(theta) : Argument "a" is missing, with no default
>>
>>Is this a bug or is there a different solution that I miss here?

>
>
> I can't spot why your use of constrOptim isn't working, but you should
> be able to workaround it by doing something like this:
>
> applyDefaults <- function(fn, ...) {
> function(x) fn(x, ...)
> }
>
> constrOptim(c(-1.2,0.9), applyDefaults(fr, a=100), NULL,
> ui=rbind(c(-1,0),c(0,-1)),ci=c(-1,-1))
>
> The applyDefaults function creates a new function which evaluates the

> old one with some of the parameters set to fixed values.
>
> Duncan Murdoch
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

R-help@stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jul 15 00:08:43 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 02:36:11 EST